Add a dev mode doctor check (#11023)

This commit is contained in:
xster 2017-06-29 11:54:18 -07:00 committed by GitHub
parent 3045c289ea
commit be228eae78
2 changed files with 30 additions and 1 deletions

View file

@ -49,6 +49,8 @@ class IOSWorkflow extends DoctorValidator implements Workflow {
Future<String> get cocoaPodsVersionText async => (await runAsync(<String>['pod', '--version'])).processResult.stdout.trim();
Future<String> get macDevMode async => (await runAsync(<String>['DevToolsSecurity', '-status'])).processResult.stdout;
Future<bool> get _iosDeployIsInstalledAndMeetsVersionCheck async {
if (!await hasIosDeploy)
return false;
@ -106,6 +108,14 @@ class IOSWorkflow extends DoctorValidator implements Workflow {
'Xcode end user license agreement not signed; open Xcode or run the command \'sudo xcodebuild -license\'.'
));
}
if ((await macDevMode).contains('disabled')) {
xcodeStatus = ValidationType.partial;
messages.add(new ValidationMessage.error(
'Your Mac needs to enabled for developer mode before using Xcode for the first time.\n'
'Run \'sudo DevToolsSecurity -enable\' or open Xcode'
));
}
} else {
xcodeStatus = ValidationType.missing;
if (xcode.xcodeSelectPath == null || xcode.xcodeSelectPath.isEmpty) {

View file

@ -96,6 +96,20 @@ void main() {
Xcode: () => xcode,
});
testUsingContext('Emits partial status when Mac dev mode was never enabled', () async {
when(xcode.isInstalled).thenReturn(true);
when(xcode.xcodeVersionText)
.thenReturn('Xcode 8.2.1\nBuild version 8C1002\n');
when(xcode.isInstalledAndMeetsVersionCheck).thenReturn(true);
when(xcode.eulaSigned).thenReturn(true);
final IOSWorkflowTestTarget workflow = new IOSWorkflowTestTarget(macDevMode: 'Developer mode is currently disabled.');
final ValidationResult result = await workflow.validate();
expect(result.type, ValidationType.partial);
}, overrides: <Type, Generator>{
IMobileDevice: () => iMobileDevice,
Xcode: () => xcode,
});
testUsingContext('Emits partial status when python six not installed', () async {
when(xcode.isInstalled).thenReturn(true);
when(xcode.xcodeVersionText)
@ -256,11 +270,13 @@ class IOSWorkflowTestTarget extends IOSWorkflow {
bool hasIDeviceInstaller: true,
bool hasCocoaPods: true,
String cocoaPodsVersionText: '1.2.0',
String macDevMode: 'Developer mode is already enabled.',
}) : hasIosDeploy = new Future<bool>.value(hasIosDeploy),
iosDeployVersionText = new Future<String>.value(iosDeployVersionText),
hasIDeviceInstaller = new Future<bool>.value(hasIDeviceInstaller),
hasCocoaPods = new Future<bool>.value(hasCocoaPods),
cocoaPodsVersionText = new Future<String>.value(cocoaPodsVersionText);
cocoaPodsVersionText = new Future<String>.value(cocoaPodsVersionText),
macDevMode = new Future<String>.value(macDevMode);
@override
final bool hasPythonSixModule;
@ -282,4 +298,7 @@ class IOSWorkflowTestTarget extends IOSWorkflow {
@override
final Future<String> cocoaPodsVersionText;
@override
final Future<String> macDevMode;
}