Unverified Commit 4f952829 authored by Christopher Fujino's avatar Christopher Fujino Committed by GitHub

[flutter_tools] Remove shuffle from doctor test (#107744)

parent 6952408c
...@@ -44,31 +44,52 @@ import 'windows/visual_studio_validator.dart'; ...@@ -44,31 +44,52 @@ import 'windows/visual_studio_validator.dart';
import 'windows/windows_workflow.dart'; import 'windows/windows_workflow.dart';
abstract class DoctorValidatorsProvider { abstract class DoctorValidatorsProvider {
// Allow tests to construct a [_DefaultDoctorValidatorsProvider] with explicit
// [FeatureFlags].
factory DoctorValidatorsProvider.test({
Platform? platform,
required FeatureFlags featureFlags,
}) {
return _DefaultDoctorValidatorsProvider(
featureFlags: featureFlags,
platform: platform ?? FakePlatform(),
);
}
/// The singleton instance, pulled from the [AppContext]. /// The singleton instance, pulled from the [AppContext].
static DoctorValidatorsProvider get _instance => context.get<DoctorValidatorsProvider>()!; static DoctorValidatorsProvider get _instance => context.get<DoctorValidatorsProvider>()!;
static final DoctorValidatorsProvider defaultInstance = _DefaultDoctorValidatorsProvider(); static final DoctorValidatorsProvider defaultInstance = _DefaultDoctorValidatorsProvider(
platform: globals.platform,
featureFlags: featureFlags,
);
List<DoctorValidator> get validators; List<DoctorValidator> get validators;
List<Workflow> get workflows; List<Workflow> get workflows;
} }
class _DefaultDoctorValidatorsProvider implements DoctorValidatorsProvider { class _DefaultDoctorValidatorsProvider implements DoctorValidatorsProvider {
_DefaultDoctorValidatorsProvider({
required this.platform,
required this.featureFlags,
});
List<DoctorValidator>? _validators; List<DoctorValidator>? _validators;
List<Workflow>? _workflows; List<Workflow>? _workflows;
final Platform platform;
final FeatureFlags featureFlags;
final LinuxWorkflow linuxWorkflow = LinuxWorkflow( late final LinuxWorkflow linuxWorkflow = LinuxWorkflow(
platform: globals.platform, platform: platform,
featureFlags: featureFlags, featureFlags: featureFlags,
); );
final WebWorkflow webWorkflow = WebWorkflow( late final WebWorkflow webWorkflow = WebWorkflow(
platform: globals.platform, platform: platform,
featureFlags: featureFlags, featureFlags: featureFlags,
); );
final MacOSWorkflow macOSWorkflow = MacOSWorkflow( late final MacOSWorkflow macOSWorkflow = MacOSWorkflow(
platform: globals.platform, platform: platform,
featureFlags: featureFlags, featureFlags: featureFlags,
); );
...@@ -80,17 +101,17 @@ class _DefaultDoctorValidatorsProvider implements DoctorValidatorsProvider { ...@@ -80,17 +101,17 @@ class _DefaultDoctorValidatorsProvider implements DoctorValidatorsProvider {
final List<DoctorValidator> ideValidators = <DoctorValidator>[ final List<DoctorValidator> ideValidators = <DoctorValidator>[
if (androidWorkflow!.appliesToHostPlatform) if (androidWorkflow!.appliesToHostPlatform)
...AndroidStudioValidator.allValidators(globals.config, globals.platform, globals.fs, globals.userMessages), ...AndroidStudioValidator.allValidators(globals.config, platform, globals.fs, globals.userMessages),
...IntelliJValidator.installedValidators( ...IntelliJValidator.installedValidators(
fileSystem: globals.fs, fileSystem: globals.fs,
platform: globals.platform, platform: platform,
userMessages: userMessages, userMessages: userMessages,
plistParser: globals.plistParser, plistParser: globals.plistParser,
processManager: globals.processManager, processManager: globals.processManager,
), ),
...VsCodeValidator.installedValidators(globals.fs, globals.platform, globals.processManager), ...VsCodeValidator.installedValidators(globals.fs, platform, globals.processManager),
]; ];
final ProxyValidator proxyValidator = ProxyValidator(platform: globals.platform); final ProxyValidator proxyValidator = ProxyValidator(platform: platform);
_validators = <DoctorValidator>[ _validators = <DoctorValidator>[
FlutterValidator( FlutterValidator(
fileSystem: globals.fs, fileSystem: globals.fs,
......
...@@ -2,12 +2,6 @@ ...@@ -2,12 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependencies have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=20210723"
@Tags(<String>['no-shuffle'])
import 'dart:async'; import 'dart:async';
import 'package:args/command_runner.dart'; import 'package:args/command_runner.dart';
...@@ -17,6 +11,7 @@ import 'package:flutter_tools/src/android/android_studio_validator.dart'; ...@@ -17,6 +11,7 @@ import 'package:flutter_tools/src/android/android_studio_validator.dart';
import 'package:flutter_tools/src/android/android_workflow.dart'; import 'package:flutter_tools/src/android/android_workflow.dart';
import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/base/logger.dart'; import 'package:flutter_tools/src/base/logger.dart';
import 'package:flutter_tools/src/base/platform.dart';
import 'package:flutter_tools/src/base/terminal.dart'; import 'package:flutter_tools/src/base/terminal.dart';
import 'package:flutter_tools/src/base/user_messages.dart'; import 'package:flutter_tools/src/base/user_messages.dart';
import 'package:flutter_tools/src/build_info.dart'; import 'package:flutter_tools/src/build_info.dart';
...@@ -25,7 +20,6 @@ import 'package:flutter_tools/src/commands/doctor.dart'; ...@@ -25,7 +20,6 @@ import 'package:flutter_tools/src/commands/doctor.dart';
import 'package:flutter_tools/src/device.dart'; import 'package:flutter_tools/src/device.dart';
import 'package:flutter_tools/src/doctor.dart'; import 'package:flutter_tools/src/doctor.dart';
import 'package:flutter_tools/src/doctor_validator.dart'; import 'package:flutter_tools/src/doctor_validator.dart';
import 'package:flutter_tools/src/features.dart';
import 'package:flutter_tools/src/globals.dart' as globals; import 'package:flutter_tools/src/globals.dart' as globals;
import 'package:flutter_tools/src/reporting/reporting.dart'; import 'package:flutter_tools/src/reporting/reporting.dart';
import 'package:flutter_tools/src/version.dart'; import 'package:flutter_tools/src/version.dart';
...@@ -743,10 +737,15 @@ void main() { ...@@ -743,10 +737,15 @@ void main() {
}); });
testUsingContext('WebWorkflow is a part of validator workflows if enabled', () async { testUsingContext('WebWorkflow is a part of validator workflows if enabled', () async {
expect(DoctorValidatorsProvider.defaultInstance.workflows, final List<Workflow> workflows = DoctorValidatorsProvider.test(
contains(isA<WebWorkflow>())); featureFlags: TestFeatureFlags(isWebEnabled: true),
platform: FakePlatform(),
).workflows;
expect(
workflows,
contains(isA<WebWorkflow>()),
);
}, overrides: <Type, Generator>{ }, overrides: <Type, Generator>{
FeatureFlags: () => TestFeatureFlags(isWebEnabled: true),
FileSystem: () => MemoryFileSystem.test(), FileSystem: () => MemoryFileSystem.test(),
ProcessManager: () => fakeProcessManager, ProcessManager: () => fakeProcessManager,
}); });
...@@ -769,13 +768,30 @@ void main() { ...@@ -769,13 +768,30 @@ void main() {
}, initializeFlutterRoot: false); }, initializeFlutterRoot: false);
testUsingContext('If android workflow is disabled, AndroidStudio validator is not included', () { testUsingContext('If android workflow is disabled, AndroidStudio validator is not included', () {
expect(DoctorValidatorsProvider.defaultInstance.validators, isNot(contains(isA<AndroidStudioValidator>()))); final DoctorValidatorsProvider provider = DoctorValidatorsProvider.test(
expect(DoctorValidatorsProvider.defaultInstance.validators, isNot(contains(isA<NoAndroidStudioValidator>()))); featureFlags: TestFeatureFlags(isAndroidEnabled: false),
);
expect(provider.validators, isNot(contains(isA<AndroidStudioValidator>())));
expect(provider.validators, isNot(contains(isA<NoAndroidStudioValidator>())));
}, overrides: <Type, Generator>{ }, overrides: <Type, Generator>{
FeatureFlags: () => TestFeatureFlags(isAndroidEnabled: false), AndroidWorkflow: () => FakeAndroidWorkflow(appliesToHostPlatform: false),
}); });
} }
class FakeAndroidWorkflow extends Fake implements AndroidWorkflow {
FakeAndroidWorkflow({
this.canListDevices = true,
this.appliesToHostPlatform = true,
});
@override
final bool canListDevices;
@override
final bool appliesToHostPlatform;
}
class NoOpDoctor implements Doctor { class NoOpDoctor implements Doctor {
@override @override
bool get canLaunchAnything => true; bool get canLaunchAnything => true;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment