Skip to content

Commit ec3653f

Browse files
authored
Remove XcodeValidator from context (#53213)
1 parent 31175eb commit ec3653f

4 files changed

Lines changed: 38 additions & 48 deletions

File tree

‎packages/flutter_tools/lib/src/context_runner.dart‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ import 'macos/cocoapods.dart';
4242
import 'macos/cocoapods_validator.dart';
4343
import 'macos/macos_workflow.dart';
4444
import 'macos/xcode.dart';
45-
import 'macos/xcode_validator.dart';
4645
import 'mdns_discovery.dart';
4746
import 'persistent_tool_state.dart';
4847
import 'reporting/reporting.dart';
@@ -226,7 +225,6 @@ Future<T> runInContext<T>(
226225
fileSystem: globals.fs,
227226
terminal: globals.terminal,
228227
),
229-
XcodeValidator: () => const XcodeValidator(),
230228
},
231229
);
232230
}

‎packages/flutter_tools/lib/src/doctor.dart‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ class _DefaultDoctorValidatorsProvider implements DoctorValidatorsProvider {
8181
if (androidWorkflow.appliesToHostPlatform)
8282
GroupedValidator(<DoctorValidator>[androidValidator, androidLicenseValidator]),
8383
if (globals.iosWorkflow.appliesToHostPlatform || macOSWorkflow.appliesToHostPlatform)
84-
GroupedValidator(<DoctorValidator>[xcodeValidator, cocoapodsValidator]),
84+
GroupedValidator(<DoctorValidator>[XcodeValidator(xcode: globals.xcode, userMessages: userMessages), cocoapodsValidator]),
8585
if (webWorkflow.appliesToHostPlatform)
8686
WebValidator(
8787
chromeLauncher: globals.chromeLauncher,

‎packages/flutter_tools/lib/src/macos/xcode_validator.dart‎

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,56 +2,62 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5-
import '../base/context.dart';
5+
import 'package:meta/meta.dart';
6+
67
import '../base/user_messages.dart';
78
import '../doctor.dart';
8-
import '../globals.dart' as globals;
99
import 'xcode.dart';
1010

11-
XcodeValidator get xcodeValidator => context.get<XcodeValidator>();
12-
1311
class XcodeValidator extends DoctorValidator {
14-
const XcodeValidator() : super('Xcode - develop for iOS and macOS');
12+
XcodeValidator({
13+
@required Xcode xcode,
14+
@required UserMessages userMessages,
15+
}) : _xcode = xcode,
16+
_userMessages = userMessages,
17+
super('Xcode - develop for iOS and macOS');
18+
19+
final Xcode _xcode;
20+
final UserMessages _userMessages;
1521

1622
@override
1723
Future<ValidationResult> validate() async {
1824
final List<ValidationMessage> messages = <ValidationMessage>[];
1925
ValidationType xcodeStatus = ValidationType.missing;
2026
String xcodeVersionInfo;
2127

22-
if (globals.xcode.isInstalled) {
28+
if (_xcode.isInstalled) {
2329
xcodeStatus = ValidationType.installed;
2430

25-
messages.add(ValidationMessage(userMessages.xcodeLocation(globals.xcode.xcodeSelectPath)));
31+
messages.add(ValidationMessage(_userMessages.xcodeLocation(_xcode.xcodeSelectPath)));
2632

27-
xcodeVersionInfo = globals.xcode.versionText;
33+
xcodeVersionInfo = _xcode.versionText;
2834
if (xcodeVersionInfo.contains(',')) {
2935
xcodeVersionInfo = xcodeVersionInfo.substring(0, xcodeVersionInfo.indexOf(','));
3036
}
31-
messages.add(ValidationMessage(globals.xcode.versionText));
37+
messages.add(ValidationMessage(_xcode.versionText));
3238

33-
if (!globals.xcode.isInstalledAndMeetsVersionCheck) {
39+
if (!_xcode.isInstalledAndMeetsVersionCheck) {
3440
xcodeStatus = ValidationType.partial;
3541
messages.add(ValidationMessage.error(
36-
userMessages.xcodeOutdated(kXcodeRequiredVersionMajor, kXcodeRequiredVersionMinor)
42+
_userMessages.xcodeOutdated(kXcodeRequiredVersionMajor, kXcodeRequiredVersionMinor)
3743
));
3844
}
3945

40-
if (!globals.xcode.eulaSigned) {
46+
if (!_xcode.eulaSigned) {
4147
xcodeStatus = ValidationType.partial;
42-
messages.add(ValidationMessage.error(userMessages.xcodeEula));
48+
messages.add(ValidationMessage.error(_userMessages.xcodeEula));
4349
}
44-
if (!globals.xcode.isSimctlInstalled) {
50+
if (!_xcode.isSimctlInstalled) {
4551
xcodeStatus = ValidationType.partial;
46-
messages.add(ValidationMessage.error(userMessages.xcodeMissingSimct));
52+
messages.add(ValidationMessage.error(_userMessages.xcodeMissingSimct));
4753
}
4854

4955
} else {
5056
xcodeStatus = ValidationType.missing;
51-
if (globals.xcode.xcodeSelectPath == null || globals.xcode.xcodeSelectPath.isEmpty) {
52-
messages.add(ValidationMessage.error(userMessages.xcodeMissing));
57+
if (_xcode.xcodeSelectPath == null || _xcode.xcodeSelectPath.isEmpty) {
58+
messages.add(ValidationMessage.error(_userMessages.xcodeMissing));
5359
} else {
54-
messages.add(ValidationMessage.error(userMessages.xcodeIncomplete));
60+
messages.add(ValidationMessage.error(_userMessages.xcodeIncomplete));
5561
}
5662
}
5763

‎packages/flutter_tools/test/general.shard/macos/xcode_validator_test.dart‎

Lines changed: 13 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5+
import 'package:flutter_tools/src/base/user_messages.dart';
56
import 'package:flutter_tools/src/doctor.dart';
67
import 'package:flutter_tools/src/macos/xcode.dart';
78
import 'package:flutter_tools/src/macos/xcode_validator.dart';
@@ -17,89 +18,74 @@ class MockXcode extends Mock implements Xcode {}
1718
void main() {
1819
group('Xcode validation', () {
1920
MockXcode xcode;
20-
MockProcessManager processManager;
2121

2222
setUp(() {
2323
xcode = MockXcode();
24-
processManager = MockProcessManager();
2524
});
2625

27-
testUsingContext('Emits missing status when Xcode is not installed', () async {
26+
testWithoutContext('Emits missing status when Xcode is not installed', () async {
2827
when(xcode.isInstalled).thenReturn(false);
2928
when(xcode.xcodeSelectPath).thenReturn(null);
30-
const XcodeValidator validator = XcodeValidator();
29+
final XcodeValidator validator = XcodeValidator(xcode: xcode, userMessages: UserMessages());
3130
final ValidationResult result = await validator.validate();
3231
expect(result.type, ValidationType.missing);
33-
}, overrides: <Type, Generator>{
34-
Xcode: () => xcode,
3532
});
3633

37-
testUsingContext('Emits missing status when Xcode installation is incomplete', () async {
34+
testWithoutContext('Emits missing status when Xcode installation is incomplete', () async {
3835
when(xcode.isInstalled).thenReturn(false);
3936
when(xcode.xcodeSelectPath).thenReturn('/Library/Developer/CommandLineTools');
40-
const XcodeValidator validator = XcodeValidator();
37+
final XcodeValidator validator = XcodeValidator(xcode: xcode, userMessages: UserMessages());
4138
final ValidationResult result = await validator.validate();
4239
expect(result.type, ValidationType.missing);
43-
}, overrides: <Type, Generator>{
44-
Xcode: () => xcode,
4540
});
4641

47-
testUsingContext('Emits partial status when Xcode version too low', () async {
42+
testWithoutContext('Emits partial status when Xcode version too low', () async {
4843
when(xcode.isInstalled).thenReturn(true);
4944
when(xcode.versionText)
5045
.thenReturn('Xcode 7.0.1\nBuild version 7C1002\n');
5146
when(xcode.isInstalledAndMeetsVersionCheck).thenReturn(false);
5247
when(xcode.eulaSigned).thenReturn(true);
5348
when(xcode.isSimctlInstalled).thenReturn(true);
54-
const XcodeValidator validator = XcodeValidator();
49+
final XcodeValidator validator = XcodeValidator(xcode: xcode, userMessages: UserMessages());
5550
final ValidationResult result = await validator.validate();
5651
expect(result.type, ValidationType.partial);
57-
}, overrides: <Type, Generator>{
58-
Xcode: () => xcode,
5952
});
6053

61-
testUsingContext('Emits partial status when Xcode EULA not signed', () async {
54+
testWithoutContext('Emits partial status when Xcode EULA not signed', () async {
6255
when(xcode.isInstalled).thenReturn(true);
6356
when(xcode.versionText)
6457
.thenReturn('Xcode 8.2.1\nBuild version 8C1002\n');
6558
when(xcode.isInstalledAndMeetsVersionCheck).thenReturn(true);
6659
when(xcode.eulaSigned).thenReturn(false);
6760
when(xcode.isSimctlInstalled).thenReturn(true);
68-
const XcodeValidator validator = XcodeValidator();
61+
final XcodeValidator validator = XcodeValidator(xcode: xcode, userMessages: UserMessages());
6962
final ValidationResult result = await validator.validate();
7063
expect(result.type, ValidationType.partial);
71-
}, overrides: <Type, Generator>{
72-
Xcode: () => xcode,
7364
});
7465

75-
testUsingContext('Emits partial status when simctl is not installed', () async {
66+
testWithoutContext('Emits partial status when simctl is not installed', () async {
7667
when(xcode.isInstalled).thenReturn(true);
7768
when(xcode.versionText)
7869
.thenReturn('Xcode 8.2.1\nBuild version 8C1002\n');
7970
when(xcode.isInstalledAndMeetsVersionCheck).thenReturn(true);
8071
when(xcode.eulaSigned).thenReturn(true);
8172
when(xcode.isSimctlInstalled).thenReturn(false);
82-
const XcodeValidator validator = XcodeValidator();
73+
final XcodeValidator validator = XcodeValidator(xcode: xcode, userMessages: UserMessages());
8374
final ValidationResult result = await validator.validate();
8475
expect(result.type, ValidationType.partial);
85-
}, overrides: <Type, Generator>{
86-
Xcode: () => xcode,
8776
});
8877

8978

90-
testUsingContext('Succeeds when all checks pass', () async {
79+
testWithoutContext('Succeeds when all checks pass', () async {
9180
when(xcode.isInstalled).thenReturn(true);
9281
when(xcode.versionText)
9382
.thenReturn('Xcode 8.2.1\nBuild version 8C1002\n');
9483
when(xcode.isInstalledAndMeetsVersionCheck).thenReturn(true);
9584
when(xcode.eulaSigned).thenReturn(true);
9685
when(xcode.isSimctlInstalled).thenReturn(true);
97-
const XcodeValidator validator = XcodeValidator();
86+
final XcodeValidator validator = XcodeValidator(xcode: xcode, userMessages: UserMessages());
9887
final ValidationResult result = await validator.validate();
9988
expect(result.type, ValidationType.installed);
100-
}, overrides: <Type, Generator>{
101-
Xcode: () => xcode,
102-
ProcessManager: () => processManager,
10389
});
10490
});
10591
}

0 commit comments

Comments
 (0)