diff --git a/packages/flutter_tools/test/commands.shard/hermetic/assemble_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/assemble_test.dart index 546260917fc..31b0804bd93 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/assemble_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/assemble_test.dart @@ -33,7 +33,7 @@ void main() { expect(testLogger.traceText, contains('build succeeded.')); }, overrides: { - Cache: () => FakeCache(), + Cache: () => Cache.test(processManager: FakeProcessManager.any()), FileSystem: () => MemoryFileSystem.test(), ProcessManager: () => FakeProcessManager.any(), }); @@ -48,7 +48,7 @@ void main() { expect(testLogger.traceText, contains('build succeeded.')); }, overrides: { - Cache: () => FakeCache(), + Cache: () => Cache.test(processManager: FakeProcessManager.any()), FileSystem: () => MemoryFileSystem.test(), ProcessManager: () => FakeProcessManager.any(), }); @@ -63,7 +63,7 @@ void main() { expect(testLogger.traceText, contains('build succeeded.')); }, overrides: { - Cache: () => FakeCache(), + Cache: () => Cache.test(processManager: FakeProcessManager.any()), FileSystem: () => MemoryFileSystem.test(), ProcessManager: () => FakeProcessManager.any(), }); @@ -75,7 +75,7 @@ void main() { expect(commandRunner.run(['assemble', 'debug_macos_bundle_flutter_assets']), throwsToolExit()); }, overrides: { - Cache: () => FakeCache(), + Cache: () => Cache.test(processManager: FakeProcessManager.any()), FileSystem: () => MemoryFileSystem.test(), ProcessManager: () => FakeProcessManager.any(), }); @@ -88,7 +88,7 @@ void main() { expect(commandRunner.run(['assemble', '-o Output', 'undefined']), throwsToolExit()); }, overrides: { - Cache: () => FakeCache(), + Cache: () => Cache.test(processManager: FakeProcessManager.any()), FileSystem: () => MemoryFileSystem.test(), ProcessManager: () => FakeProcessManager.any(), }); @@ -105,7 +105,7 @@ void main() { expect(testLogger.errorText, isNot(contains('bar'))); expect(testLogger.errorText, isNot(contains(stackTrace.toString()))); }, overrides: { - Cache: () => FakeCache(), + Cache: () => Cache.test(processManager: FakeProcessManager.any()), FileSystem: () => MemoryFileSystem.test(), ProcessManager: () => FakeProcessManager.any(), }); @@ -140,7 +140,7 @@ void main() { )), ); }, overrides: { - Cache: () => FakeCache(), + Cache: () => Cache.test(processManager: FakeProcessManager.any()), FileSystem: () => MemoryFileSystem.test(), ProcessManager: () => FakeProcessManager.any(), }); @@ -154,7 +154,7 @@ void main() { await commandRunner.run(['assemble', '-o Output', 'debug_macos_bundle_flutter_assets']); }, overrides: { Artifacts: () => Artifacts.test(localEngine: 'out/host_release'), - Cache: () => FakeCache(), + Cache: () => Cache.test(processManager: FakeProcessManager.any()), FileSystem: () => MemoryFileSystem.test(), ProcessManager: () => FakeProcessManager.any(), }); @@ -217,7 +217,7 @@ void main() { expect(inputs.readAsStringSync(), contains('fizz')); expect(inputs.lastModifiedSync(), isNot(theDistantPast)); }, overrides: { - Cache: () => FakeCache(), + Cache: () => Cache.test(processManager: FakeProcessManager.any()), FileSystem: () => MemoryFileSystem.test(), ProcessManager: () => FakeProcessManager.any(), }); diff --git a/packages/flutter_tools/test/commands.shard/hermetic/build_fuchsia_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/build_fuchsia_test.dart index 9a58a0404e1..5e29a83e049 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/build_fuchsia_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/build_fuchsia_test.dart @@ -22,6 +22,7 @@ import 'package:test/fake.dart'; import '../../src/common.dart'; import '../../src/context.dart'; +import '../../src/fakes.dart'; import '../../src/testbed.dart'; // Defined globally for fakes to use. diff --git a/packages/flutter_tools/test/commands.shard/hermetic/build_linux_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/build_linux_test.dart index 5f5ce372a90..523afcd758f 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/build_linux_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/build_linux_test.dart @@ -24,6 +24,7 @@ import 'package:test/fake.dart'; import '../../src/common.dart'; import '../../src/context.dart'; +import '../../src/fakes.dart'; import '../../src/testbed.dart'; const String _kTestFlutterRoot = '/flutter'; diff --git a/packages/flutter_tools/test/commands.shard/hermetic/build_macos_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/build_macos_test.dart index b01a2a5edb9..1b7e86b3198 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/build_macos_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/build_macos_test.dart @@ -24,6 +24,7 @@ import 'package:process/process.dart'; import '../../src/common.dart'; import '../../src/context.dart'; +import '../../src/fakes.dart'; import '../../src/testbed.dart'; class FakeXcodeProjectInterpreterWithProfile extends FakeXcodeProjectInterpreter { diff --git a/packages/flutter_tools/test/commands.shard/hermetic/build_windows_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/build_windows_test.dart index 2c1324f336e..e2d0a686899 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/build_windows_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/build_windows_test.dart @@ -18,6 +18,7 @@ import 'package:process/process.dart'; import '../../src/common.dart'; import '../../src/context.dart'; +import '../../src/fakes.dart'; import '../../src/testbed.dart'; const String flutterRoot = r'C:\flutter'; diff --git a/packages/flutter_tools/test/commands.shard/hermetic/doctor_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/doctor_test.dart index 39fd9fc3d43..cab25f5595c 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/doctor_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/doctor_test.dart @@ -34,6 +34,7 @@ import 'package:fake_async/fake_async.dart'; import '../../src/common.dart'; import '../../src/context.dart'; +import '../../src/fakes.dart'; import '../../src/testbed.dart'; final Generator _kNoColorOutputPlatform = () => FakePlatform( diff --git a/packages/flutter_tools/test/commands.shard/hermetic/precache_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/precache_test.dart index 25a9c68c0fe..0a51acdd993 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/precache_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/precache_test.dart @@ -13,7 +13,7 @@ import 'package:mockito/mockito.dart'; import '../../src/common.dart'; import '../../src/context.dart'; -import '../../src/testbed.dart'; +import '../../src/fakes.dart'; void main() { MockCache cache; diff --git a/packages/flutter_tools/test/commands.shard/hermetic/test_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/test_test.dart index 2cb2c06204d..ca32a768884 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/test_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/test_test.dart @@ -100,7 +100,7 @@ void main() { }, overrides: { FileSystem: () => fs, ProcessManager: () => FakeProcessManager.any(), - Cache: () => FakeCache(), + Cache: () => Cache.test(processManager: FakeProcessManager.any()), }); group('shard-index and total-shards', () { @@ -124,7 +124,7 @@ void main() { }, overrides: { FileSystem: () => fs, ProcessManager: () => FakeProcessManager.any(), - Cache: () => FakeCache(), + Cache: () => Cache.test(processManager: FakeProcessManager.any()), }); testUsingContext('without the params they not Piped to package:test', @@ -145,7 +145,7 @@ void main() { }, overrides: { FileSystem: () => fs, ProcessManager: () => FakeProcessManager.any(), - Cache: () => FakeCache(), + Cache: () => Cache.test(processManager: FakeProcessManager.any()), }); }); @@ -168,7 +168,7 @@ void main() { }, overrides: { FileSystem: () => fs, ProcessManager: () => FakeProcessManager.any(), - Cache: () => FakeCache(), + Cache: () => Cache.test(processManager: FakeProcessManager.any()), }); testUsingContext('Pipes start-paused to package:test', @@ -193,7 +193,7 @@ void main() { }, overrides: { FileSystem: () => fs, ProcessManager: () => FakeProcessManager.any(), - Cache: () => FakeCache(), + Cache: () => Cache.test(processManager: FakeProcessManager.any()), }); testUsingContext('Pipes run-skipped to package:test', @@ -218,7 +218,7 @@ void main() { }, overrides: { FileSystem: () => fs, ProcessManager: () => FakeProcessManager.any(), - Cache: () => FakeCache(), + Cache: () => Cache.test(processManager: FakeProcessManager.any()), }); testUsingContext('Pipes enable-observatory', () async { @@ -266,7 +266,7 @@ void main() { }, overrides: { FileSystem: () => fs, ProcessManager: () => FakeProcessManager.any(), - Cache: () => FakeCache(), + Cache: () => Cache.test(processManager: FakeProcessManager.any()), }); } diff --git a/packages/flutter_tools/test/commands.shard/permeable/create_test.dart b/packages/flutter_tools/test/commands.shard/permeable/create_test.dart index dd05eb3256d..7c87f795cc4 100755 --- a/packages/flutter_tools/test/commands.shard/permeable/create_test.dart +++ b/packages/flutter_tools/test/commands.shard/permeable/create_test.dart @@ -31,6 +31,7 @@ import 'package:pubspec_parse/pubspec_parse.dart'; import '../../src/common.dart'; import '../../src/context.dart'; import '../../src/fake_http_client.dart'; +import '../../src/fakes.dart'; import '../../src/pubspec_schema.dart'; import '../../src/testbed.dart'; diff --git a/packages/flutter_tools/test/commands.shard/permeable/devices_test.dart b/packages/flutter_tools/test/commands.shard/permeable/devices_test.dart index e62d85886c8..cb405efc5ba 100644 --- a/packages/flutter_tools/test/commands.shard/permeable/devices_test.dart +++ b/packages/flutter_tools/test/commands.shard/permeable/devices_test.dart @@ -20,6 +20,7 @@ import 'package:mockito/mockito.dart'; import '../../src/common.dart'; import '../../src/context.dart'; +import '../../src/fakes.dart'; import '../../src/testbed.dart'; void main() { diff --git a/packages/flutter_tools/test/general.shard/android/android_device_discovery_test.dart b/packages/flutter_tools/test/general.shard/android/android_device_discovery_test.dart index a755ab127fa..a5cce93a597 100644 --- a/packages/flutter_tools/test/general.shard/android/android_device_discovery_test.dart +++ b/packages/flutter_tools/test/general.shard/android/android_device_discovery_test.dart @@ -17,7 +17,7 @@ import 'package:test/fake.dart'; import '../../src/common.dart'; import '../../src/context.dart'; import '../../src/fake_process_manager.dart'; -import '../../src/testbed.dart'; +import '../../src/fakes.dart'; void main() { AndroidWorkflow androidWorkflow; diff --git a/packages/flutter_tools/test/general.shard/android/android_workflow_test.dart b/packages/flutter_tools/test/general.shard/android/android_workflow_test.dart index 3281a3d2501..d737295c2a3 100644 --- a/packages/flutter_tools/test/general.shard/android/android_workflow_test.dart +++ b/packages/flutter_tools/test/general.shard/android/android_workflow_test.dart @@ -21,7 +21,6 @@ import '../../src/common.dart'; import '../../src/context.dart'; import '../../src/fakes.dart'; import '../../src/mocks.dart' show MockAndroidSdk, MockProcessManager; -import '../../src/testbed.dart'; class MockAndroidSdkVersion extends Mock implements AndroidSdkVersion {} diff --git a/packages/flutter_tools/test/general.shard/doctor.dart b/packages/flutter_tools/test/general.shard/doctor.dart index 43940d5e9c6..8462e1e45e8 100644 --- a/packages/flutter_tools/test/general.shard/doctor.dart +++ b/packages/flutter_tools/test/general.shard/doctor.dart @@ -11,6 +11,7 @@ import 'package:flutter_tools/src/web/web_validator.dart'; import 'package:flutter_tools/src/windows/visual_studio_validator.dart'; import '../src/common.dart'; +import '../src/fakes.dart'; import '../src/testbed.dart'; void main() { diff --git a/packages/flutter_tools/test/general.shard/emulator_test.dart b/packages/flutter_tools/test/general.shard/emulator_test.dart index 7fbfd14e1b9..4cbd3f57eff 100644 --- a/packages/flutter_tools/test/general.shard/emulator_test.dart +++ b/packages/flutter_tools/test/general.shard/emulator_test.dart @@ -16,6 +16,7 @@ import 'package:mockito/mockito.dart'; import '../src/common.dart'; import '../src/context.dart'; +import '../src/fakes.dart'; import '../src/mocks.dart'; import '../src/testbed.dart'; diff --git a/packages/flutter_tools/test/general.shard/fuchsia/fuchsia_workflow_test.dart b/packages/flutter_tools/test/general.shard/fuchsia/fuchsia_workflow_test.dart index 067f092f0d3..2e1fb94660b 100644 --- a/packages/flutter_tools/test/general.shard/fuchsia/fuchsia_workflow_test.dart +++ b/packages/flutter_tools/test/general.shard/fuchsia/fuchsia_workflow_test.dart @@ -11,7 +11,7 @@ import 'package:flutter_tools/src/fuchsia/fuchsia_sdk.dart'; import 'package:flutter_tools/src/fuchsia/fuchsia_workflow.dart'; import '../../src/common.dart'; -import '../../src/testbed.dart'; +import '../../src/fakes.dart'; void main() { final FileSystem fileSystem = MemoryFileSystem.test(); diff --git a/packages/flutter_tools/test/general.shard/ios/ios_device_logger_test.dart b/packages/flutter_tools/test/general.shard/ios/ios_device_logger_test.dart index 71f6723fa5e..5f54645ad70 100644 --- a/packages/flutter_tools/test/general.shard/ios/ios_device_logger_test.dart +++ b/packages/flutter_tools/test/general.shard/ios/ios_device_logger_test.dart @@ -9,6 +9,7 @@ import 'dart:async'; import 'package:flutter_tools/src/artifacts.dart'; import 'package:flutter_tools/src/base/logger.dart'; import 'package:flutter_tools/src/build_info.dart'; +import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/convert.dart'; import 'package:flutter_tools/src/device.dart'; import 'package:flutter_tools/src/ios/devices.dart'; @@ -20,18 +21,17 @@ import 'package:vm_service/vm_service.dart'; import '../../src/common.dart'; import '../../src/context.dart'; -import '../../src/testbed.dart'; void main() { FakeProcessManager processManager; Artifacts artifacts; - FakeCache fakeCache; + Cache fakeCache; BufferLogger logger; String ideviceSyslogPath; setUp(() { processManager = FakeProcessManager.list([]); - fakeCache = FakeCache(); + fakeCache = Cache.test(); artifacts = Artifacts.test(); logger = BufferLogger.test(); ideviceSyslogPath = artifacts.getArtifactPath(Artifact.idevicesyslog, platform: TargetPlatform.ios); diff --git a/packages/flutter_tools/test/general.shard/ios/ios_workflow_test.dart b/packages/flutter_tools/test/general.shard/ios/ios_workflow_test.dart index fb7e9dbda9b..7f742adee44 100644 --- a/packages/flutter_tools/test/general.shard/ios/ios_workflow_test.dart +++ b/packages/flutter_tools/test/general.shard/ios/ios_workflow_test.dart @@ -11,7 +11,7 @@ import 'package:flutter_tools/src/macos/xcode.dart'; import '../../src/common.dart'; import '../../src/context.dart'; -import '../../src/testbed.dart'; +import '../../src/fakes.dart'; void main() { testWithoutContext('iOS workflow is disabled if feature is disabled', () { diff --git a/packages/flutter_tools/test/general.shard/linux/linux_device_test.dart b/packages/flutter_tools/test/general.shard/linux/linux_device_test.dart index 15dda0bbf61..c3c4a118ef9 100644 --- a/packages/flutter_tools/test/general.shard/linux/linux_device_test.dart +++ b/packages/flutter_tools/test/general.shard/linux/linux_device_test.dart @@ -18,7 +18,7 @@ import 'package:mockito/mockito.dart'; import '../../src/common.dart'; import '../../src/context.dart'; -import '../../src/testbed.dart'; +import '../../src/fakes.dart'; final FakePlatform linux = FakePlatform( operatingSystem: 'linux', diff --git a/packages/flutter_tools/test/general.shard/linux/linux_workflow_test.dart b/packages/flutter_tools/test/general.shard/linux/linux_workflow_test.dart index 6124862a6df..c4cf926d7a3 100644 --- a/packages/flutter_tools/test/general.shard/linux/linux_workflow_test.dart +++ b/packages/flutter_tools/test/general.shard/linux/linux_workflow_test.dart @@ -9,7 +9,7 @@ import 'package:flutter_tools/src/features.dart'; import 'package:flutter_tools/src/linux/linux_workflow.dart'; import '../../src/common.dart'; -import '../../src/testbed.dart'; +import '../../src/fakes.dart'; void main() { final Platform linux = FakePlatform( diff --git a/packages/flutter_tools/test/general.shard/macos/macos_device_test.dart b/packages/flutter_tools/test/general.shard/macos/macos_device_test.dart index 201bb6966d9..51966a941d9 100644 --- a/packages/flutter_tools/test/general.shard/macos/macos_device_test.dart +++ b/packages/flutter_tools/test/general.shard/macos/macos_device_test.dart @@ -20,7 +20,7 @@ import 'package:mockito/mockito.dart'; import '../../src/common.dart'; import '../../src/context.dart'; -import '../../src/testbed.dart'; +import '../../src/fakes.dart'; final FakePlatform macOS = FakePlatform( operatingSystem: 'macos', diff --git a/packages/flutter_tools/test/general.shard/macos/macos_workflow_test.dart b/packages/flutter_tools/test/general.shard/macos/macos_workflow_test.dart index 465d664ea7f..5a436783979 100644 --- a/packages/flutter_tools/test/general.shard/macos/macos_workflow_test.dart +++ b/packages/flutter_tools/test/general.shard/macos/macos_workflow_test.dart @@ -8,7 +8,7 @@ import 'package:flutter_tools/src/base/platform.dart'; import 'package:flutter_tools/src/macos/macos_workflow.dart'; import '../../src/common.dart'; -import '../../src/testbed.dart'; +import '../../src/fakes.dart'; final FakePlatform macOS = FakePlatform( operatingSystem: 'macos', diff --git a/packages/flutter_tools/test/general.shard/plugins_test.dart b/packages/flutter_tools/test/general.shard/plugins_test.dart index 87f64b9c90d..2d4e7c43264 100644 --- a/packages/flutter_tools/test/general.shard/plugins_test.dart +++ b/packages/flutter_tools/test/general.shard/plugins_test.dart @@ -28,6 +28,7 @@ import 'package:yaml/yaml.dart'; import '../src/common.dart'; import '../src/context.dart'; +import '../src/fakes.dart'; import '../src/pubspec_schema.dart'; import '../src/testbed.dart'; diff --git a/packages/flutter_tools/test/general.shard/resident_runner_test.dart b/packages/flutter_tools/test/general.shard/resident_runner_test.dart index 2c5d3b860ea..2e68c688aec 100644 --- a/packages/flutter_tools/test/general.shard/resident_runner_test.dart +++ b/packages/flutter_tools/test/general.shard/resident_runner_test.dart @@ -38,6 +38,7 @@ import 'package:mockito/mockito.dart'; import '../src/common.dart'; import '../src/context.dart'; +import '../src/fakes.dart'; import '../src/testbed.dart'; final vm_service.Isolate fakeUnpausedIsolate = vm_service.Isolate( diff --git a/packages/flutter_tools/test/general.shard/web/devices_test.dart b/packages/flutter_tools/test/general.shard/web/devices_test.dart index be30916e178..18bc6e6f522 100644 --- a/packages/flutter_tools/test/general.shard/web/devices_test.dart +++ b/packages/flutter_tools/test/general.shard/web/devices_test.dart @@ -15,7 +15,7 @@ import 'package:mockito/mockito.dart'; import '../../src/common.dart'; import '../../src/context.dart'; -import '../../src/testbed.dart'; +import '../../src/fakes.dart'; void main() { testWithoutContext('No web devices listed if feature is disabled', () async { diff --git a/packages/flutter_tools/test/general.shard/web/workflow_test.dart b/packages/flutter_tools/test/general.shard/web/workflow_test.dart index 44dced99a05..4e81c1c3649 100644 --- a/packages/flutter_tools/test/general.shard/web/workflow_test.dart +++ b/packages/flutter_tools/test/general.shard/web/workflow_test.dart @@ -8,7 +8,7 @@ import 'package:flutter_tools/src/base/platform.dart'; import 'package:flutter_tools/src/web/workflow.dart'; import '../../src/common.dart'; -import '../../src/testbed.dart'; +import '../../src/fakes.dart'; void main() { testWithoutContext('WebWorkflow applies on Linux', () { diff --git a/packages/flutter_tools/test/general.shard/windows/windows_device_test.dart b/packages/flutter_tools/test/general.shard/windows/windows_device_test.dart index 078771bdcc6..8eb78fb383a 100644 --- a/packages/flutter_tools/test/general.shard/windows/windows_device_test.dart +++ b/packages/flutter_tools/test/general.shard/windows/windows_device_test.dart @@ -18,7 +18,7 @@ import 'package:test/fake.dart'; import '../../src/common.dart'; import '../../src/context.dart'; -import '../../src/testbed.dart'; +import '../../src/fakes.dart'; void main() { testWithoutContext('WindowsDevice defaults', () async { diff --git a/packages/flutter_tools/test/general.shard/windows/windows_workflow_test.dart b/packages/flutter_tools/test/general.shard/windows/windows_workflow_test.dart index 4efb34a715c..1eeb98b2a81 100644 --- a/packages/flutter_tools/test/general.shard/windows/windows_workflow_test.dart +++ b/packages/flutter_tools/test/general.shard/windows/windows_workflow_test.dart @@ -8,7 +8,7 @@ import 'package:flutter_tools/src/base/platform.dart'; import 'package:flutter_tools/src/windows/windows_workflow.dart'; import '../../src/common.dart'; -import '../../src/testbed.dart'; +import '../../src/fakes.dart'; void main() { final FakePlatform windows = FakePlatform(operatingSystem: 'windows'); diff --git a/packages/flutter_tools/test/src/fakes.dart b/packages/flutter_tools/test/src/fakes.dart index b0f07f0d7f4..e96dfa0ea87 100644 --- a/packages/flutter_tools/test/src/fakes.dart +++ b/packages/flutter_tools/test/src/fakes.dart @@ -17,7 +17,9 @@ import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/convert.dart'; import 'package:flutter_tools/src/dart/pub.dart'; import 'package:flutter_tools/src/device.dart'; +import 'package:flutter_tools/src/features.dart'; import 'package:flutter_tools/src/ios/plist_parser.dart'; +import 'package:flutter_tools/src/version.dart'; import 'package:test/fake.dart'; /// A fake implementation of the [DeviceLogReader]. @@ -445,6 +447,152 @@ class FakePub extends Fake implements Pub { }) async { } } +class FakeFlutterVersion implements FlutterVersion { + @override + void fetchTagsAndUpdate() { } + + @override + String get channel => 'master'; + + @override + Future checkFlutterVersionFreshness() async { } + + @override + bool checkRevisionAncestry({String tentativeDescendantRevision, String tentativeAncestorRevision}) { + throw UnimplementedError(); + } + + @override + String get dartSdkVersion => '12'; + + @override + String get engineRevision => '42.2'; + + @override + String get engineRevisionShort => '42'; + + @override + Future ensureVersionFile() async { } + + @override + String get frameworkAge => null; + + @override + String get frameworkCommitDate => null; + + @override + String get frameworkDate => null; + + @override + String get frameworkRevision => null; + + @override + String get frameworkRevisionShort => null; + + @override + String get frameworkVersion => null; + + @override + GitTagVersion get gitTagVersion => null; + + @override + String getBranchName({bool redactUnknownBranches = false}) { + return 'master'; + } + + @override + String getVersionString({bool redactUnknownBranches = false}) { + return 'v0.0.0'; + } + + @override + String get repositoryUrl => null; + + @override + Map toJson() { + return null; + } +} + +// A test implementation of [FeatureFlags] that allows enabling without reading +// config. If not otherwise specified, all values default to false. +class TestFeatureFlags implements FeatureFlags { + TestFeatureFlags({ + this.isLinuxEnabled = false, + this.isMacOSEnabled = false, + this.isWebEnabled = false, + this.isWindowsEnabled = false, + this.isSingleWidgetReloadEnabled = false, + this.isAndroidEnabled = true, + this.isIOSEnabled = true, + this.isFuchsiaEnabled = false, + this.isExperimentalInvalidationStrategyEnabled = false, + }); + + @override + final bool isLinuxEnabled; + + @override + final bool isMacOSEnabled; + + @override + final bool isWebEnabled; + + @override + final bool isWindowsEnabled; + + @override + final bool isSingleWidgetReloadEnabled; + + @override + final bool isAndroidEnabled; + + @override + final bool isIOSEnabled; + + @override + final bool isFuchsiaEnabled; + + @override + final bool isExperimentalInvalidationStrategyEnabled; + + @override + bool isEnabled(Feature feature) { + switch (feature) { + case flutterWebFeature: + return isWebEnabled; + case flutterLinuxDesktopFeature: + return isLinuxEnabled; + case flutterMacOSDesktopFeature: + return isMacOSEnabled; + case flutterWindowsDesktopFeature: + return isWindowsEnabled; + case singleWidgetReload: + return isSingleWidgetReloadEnabled; + case flutterAndroidFeature: + return isAndroidEnabled; + case flutterIOSFeature: + return isIOSEnabled; + case flutterFuchsiaFeature: + return isFuchsiaEnabled; + case experimentalInvalidationStrategy: + return isExperimentalInvalidationStrategyEnabled; + } + return false; + } +} + +class FakeStatusLogger extends DelegatingLogger { + FakeStatusLogger(Logger delegate) : super(delegate); + + Status status; + + @override + Status startProgress(String message, {Duration timeout, String progressId, bool multilineOutput = false, int progressIndicatorPadding = kDefaultStatusPadding}) { + return status; + } +} + class TestBuildSystem implements BuildSystem { /// Create a [BuildSystem] instance that returns the provided results in order. TestBuildSystem.list(this._results, [this._onRun]) diff --git a/packages/flutter_tools/test/src/testbed.dart b/packages/flutter_tools/test/src/testbed.dart index 9e81a2d4dfd..6a4eac3752a 100644 --- a/packages/flutter_tools/test/src/testbed.dart +++ b/packages/flutter_tools/test/src/testbed.dart @@ -19,7 +19,6 @@ import 'package:flutter_tools/src/base/terminal.dart'; import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/context_runner.dart'; import 'package:flutter_tools/src/dart/pub.dart'; -import 'package:flutter_tools/src/features.dart'; import 'package:flutter_tools/src/reporting/reporting.dart'; import 'package:flutter_tools/src/version.dart'; import 'package:flutter_tools/src/globals.dart' as globals; @@ -29,6 +28,7 @@ import 'package:process/process.dart'; import 'common.dart' as tester; import 'context.dart'; import 'fake_http_client.dart'; +import 'fakes.dart'; import 'throwing_pub.dart'; export 'package:flutter_tools/src/base/context.dart' show Generator; @@ -45,7 +45,7 @@ final Map _testbedDefaults = { ), // Allows reading logs and prevents stdout. OperatingSystemUtils: () => FakeOperatingSystemUtils(), OutputPreferences: () => OutputPreferences.test(), // configures BufferLogger to avoid color codes. - Usage: () => NoOpUsage(), // prevent addition of analytics from burdening test mocks + Usage: () => TestUsage(), // prevent addition of analytics from burdening test mocks FlutterVersion: () => FakeFlutterVersion(), // prevent requirement to mock git for test runner. Signals: () => FakeSignals(), // prevent registering actual signal handlers. Pub: () => ThrowingPub(), // prevent accidental invocations of pub. @@ -157,306 +157,3 @@ class Testbed { }, createHttpClient: (SecurityContext c) => FakeHttpClient.any()); } } - -/// A no-op implementation of [Usage] for testing. -class NoOpUsage implements Usage { - @override - bool enabled = false; - - @override - bool suppressAnalytics = true; - - @override - String get clientId => 'test'; - - @override - Future ensureAnalyticsSent() { - return null; - } - - @override - Stream> get onSend => const Stream>.empty(); - - @override - void printWelcome() {} - - @override - void sendCommand(String command, {Map parameters}) {} - - @override - void sendEvent(String category, String parameter, { - String label, - int value, - Map parameters, - }) {} - - @override - void sendException(dynamic exception) {} - - @override - void sendTiming(String category, String variableName, Duration duration, { String label }) {} -} - -class FakeFlutterVersion implements FlutterVersion { - @override - void fetchTagsAndUpdate() { } - - @override - String get channel => 'master'; - - @override - Future checkFlutterVersionFreshness() async { } - - @override - bool checkRevisionAncestry({String tentativeDescendantRevision, String tentativeAncestorRevision}) { - throw UnimplementedError(); - } - - @override - String get dartSdkVersion => '12'; - - @override - String get engineRevision => '42.2'; - - @override - String get engineRevisionShort => '42'; - - @override - Future ensureVersionFile() async { } - - @override - String get frameworkAge => null; - - @override - String get frameworkCommitDate => null; - - @override - String get frameworkDate => null; - - @override - String get frameworkRevision => null; - - @override - String get frameworkRevisionShort => null; - - @override - String get frameworkVersion => null; - - @override - GitTagVersion get gitTagVersion => null; - - @override - String getBranchName({bool redactUnknownBranches = false}) { - return 'master'; - } - - @override - String getVersionString({bool redactUnknownBranches = false}) { - return 'v0.0.0'; - } - - @override - String get repositoryUrl => null; - - @override - Map toJson() { - return null; - } -} - -// A test implementation of [FeatureFlags] that allows enabling without reading -// config. If not otherwise specified, all values default to false. -class TestFeatureFlags implements FeatureFlags { - TestFeatureFlags({ - this.isLinuxEnabled = false, - this.isMacOSEnabled = false, - this.isWebEnabled = false, - this.isWindowsEnabled = false, - this.isSingleWidgetReloadEnabled = false, - this.isAndroidEnabled = true, - this.isIOSEnabled = true, - this.isFuchsiaEnabled = false, - this.isExperimentalInvalidationStrategyEnabled = false, - }); - - @override - final bool isLinuxEnabled; - - @override - final bool isMacOSEnabled; - - @override - final bool isWebEnabled; - - @override - final bool isWindowsEnabled; - - @override - final bool isSingleWidgetReloadEnabled; - - @override - final bool isAndroidEnabled; - - @override - final bool isIOSEnabled; - - @override - final bool isFuchsiaEnabled; - - @override - final bool isExperimentalInvalidationStrategyEnabled; - - @override - bool isEnabled(Feature feature) { - switch (feature) { - case flutterWebFeature: - return isWebEnabled; - case flutterLinuxDesktopFeature: - return isLinuxEnabled; - case flutterMacOSDesktopFeature: - return isMacOSEnabled; - case flutterWindowsDesktopFeature: - return isWindowsEnabled; - case singleWidgetReload: - return isSingleWidgetReloadEnabled; - case flutterAndroidFeature: - return isAndroidEnabled; - case flutterIOSFeature: - return isIOSEnabled; - case flutterFuchsiaFeature: - return isFuchsiaEnabled; - case experimentalInvalidationStrategy: - return isExperimentalInvalidationStrategyEnabled; - } - return false; - } -} - -class FakeStatusLogger extends DelegatingLogger { - FakeStatusLogger(Logger delegate) : super(delegate); - - Status status; - - @override - Status startProgress(String message, {Duration timeout, String progressId, bool multilineOutput = false, int progressIndicatorPadding = kDefaultStatusPadding}) { - return status; - } -} - -/// An implementation of the Cache which does not download or require locking. -class FakeCache implements Cache { - @override - bool includeAllPlatforms; - - @override - Set platformOverrideArtifacts; - - @override - bool useUnsignedMacBinaries; - - @override - Future areRemoteArtifactsAvailable({String engineVersion, bool includeAllPlatforms = true}) async { - return true; - } - - @override - String get dartSdkVersion => null; - - @override - String get storageBaseUrl => null; - - @override - MapEntry get dyLdLibEntry => const MapEntry('DYLD_LIBRARY_PATH', ''); - - @override - String get engineRevision => null; - - @override - Directory getArtifactDirectory(String name) { - return globals.fs.currentDirectory; - } - - @override - Directory getCacheArtifacts() { - return globals.fs.currentDirectory; - } - - @override - Directory getCacheDir(String name) { - return globals.fs.currentDirectory; - } - - @override - Directory getDownloadDir() { - return globals.fs.currentDirectory; - } - - @override - Directory getRoot() { - return globals.fs.currentDirectory; - } - - @override - String getHostPlatformArchName() => 'x64'; - - @override - File getLicenseFile() { - return globals.fs.currentDirectory.childFile('LICENSE'); - } - - @override - File getStampFileFor(String artifactName) { - throw UnsupportedError('Not supported in the fake Cache'); - } - - @override - String getStampFor(String artifactName) { - throw UnsupportedError('Not supported in the fake Cache'); - } - - @override - String getVersionFor(String artifactName) { - throw UnsupportedError('Not supported in the fake Cache'); - } - - @override - Directory getWebSdkDirectory() { - return globals.fs.currentDirectory; - } - - @override - bool isOlderThanToolsStamp(FileSystemEntity entity) { - return false; - } - - @override - Future isUpToDate() async { - return true; - } - - @override - void setStampFor(String artifactName, String version) { - throw UnsupportedError('Not supported in the fake Cache'); - } - - @override - Future updateAll(Set requiredArtifacts) async { - } - - @override - Future doesRemoteExist(String message, Uri url) async { - return true; - } - - @override - void clearStampFiles() { } - - @override - void checkLockAcquired() { } - - @override - Future lock() async { } - - @override - void releaseLock() { } -}