mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
[flutter_tools] Remove shuffle from doctor test (#107744)
This commit is contained in:
parent
6952408cdf
commit
4f9528293f
@ -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 {
|
|||||||
|
|
||||||
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 @@
|
|||||||
// 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';
|
|||||||
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';
|
|||||||
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() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
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() {
|
|||||||
}, 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;
|
||||||
|
Loading…
Reference in New Issue
Block a user