mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
[flutter_tools] switch FakeCache to cache.test and NoopUsage to TestUsage (#76802)
This commit is contained in:
parent
ae29dde38a
commit
2951363dc8
@ -33,7 +33,7 @@ void main() {
|
||||
|
||||
expect(testLogger.traceText, contains('build succeeded.'));
|
||||
}, overrides: <Type, Generator>{
|
||||
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: <Type, Generator>{
|
||||
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: <Type, Generator>{
|
||||
Cache: () => FakeCache(),
|
||||
Cache: () => Cache.test(processManager: FakeProcessManager.any()),
|
||||
FileSystem: () => MemoryFileSystem.test(),
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
});
|
||||
@ -75,7 +75,7 @@ void main() {
|
||||
|
||||
expect(commandRunner.run(<String>['assemble', 'debug_macos_bundle_flutter_assets']), throwsToolExit());
|
||||
}, overrides: <Type, Generator>{
|
||||
Cache: () => FakeCache(),
|
||||
Cache: () => Cache.test(processManager: FakeProcessManager.any()),
|
||||
FileSystem: () => MemoryFileSystem.test(),
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
});
|
||||
@ -88,7 +88,7 @@ void main() {
|
||||
expect(commandRunner.run(<String>['assemble', '-o Output', 'undefined']),
|
||||
throwsToolExit());
|
||||
}, overrides: <Type, Generator>{
|
||||
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: <Type, Generator>{
|
||||
Cache: () => FakeCache(),
|
||||
Cache: () => Cache.test(processManager: FakeProcessManager.any()),
|
||||
FileSystem: () => MemoryFileSystem.test(),
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
});
|
||||
@ -140,7 +140,7 @@ void main() {
|
||||
)),
|
||||
);
|
||||
}, overrides: <Type, Generator>{
|
||||
Cache: () => FakeCache(),
|
||||
Cache: () => Cache.test(processManager: FakeProcessManager.any()),
|
||||
FileSystem: () => MemoryFileSystem.test(),
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
});
|
||||
@ -154,7 +154,7 @@ void main() {
|
||||
await commandRunner.run(<String>['assemble', '-o Output', 'debug_macos_bundle_flutter_assets']);
|
||||
}, overrides: <Type, Generator>{
|
||||
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: <Type, Generator>{
|
||||
Cache: () => FakeCache(),
|
||||
Cache: () => Cache.test(processManager: FakeProcessManager.any()),
|
||||
FileSystem: () => MemoryFileSystem.test(),
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
});
|
||||
|
@ -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.
|
||||
|
@ -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';
|
||||
|
@ -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 {
|
||||
|
@ -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';
|
||||
|
@ -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(
|
||||
|
@ -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;
|
||||
|
@ -100,7 +100,7 @@ void main() {
|
||||
}, overrides: <Type, Generator>{
|
||||
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: <Type, Generator>{
|
||||
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: <Type, Generator>{
|
||||
FileSystem: () => fs,
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
Cache: () => FakeCache(),
|
||||
Cache: () => Cache.test(processManager: FakeProcessManager.any()),
|
||||
});
|
||||
});
|
||||
|
||||
@ -168,7 +168,7 @@ void main() {
|
||||
}, overrides: <Type, Generator>{
|
||||
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: <Type, Generator>{
|
||||
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: <Type, Generator>{
|
||||
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: <Type, Generator>{
|
||||
FileSystem: () => fs,
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
Cache: () => FakeCache(),
|
||||
Cache: () => Cache.test(processManager: FakeProcessManager.any()),
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -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';
|
||||
|
||||
|
@ -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() {
|
||||
|
@ -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;
|
||||
|
@ -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 {}
|
||||
|
||||
|
@ -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() {
|
||||
|
@ -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';
|
||||
|
||||
|
@ -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();
|
||||
|
@ -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(<FakeCommand>[]);
|
||||
fakeCache = FakeCache();
|
||||
fakeCache = Cache.test();
|
||||
artifacts = Artifacts.test();
|
||||
logger = BufferLogger.test();
|
||||
ideviceSyslogPath = artifacts.getArtifactPath(Artifact.idevicesyslog, platform: TargetPlatform.ios);
|
||||
|
@ -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', () {
|
||||
|
@ -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',
|
||||
|
@ -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(
|
||||
|
@ -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',
|
||||
|
@ -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',
|
||||
|
@ -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';
|
||||
|
||||
|
@ -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(
|
||||
|
@ -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 {
|
||||
|
@ -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', () {
|
||||
|
@ -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 {
|
||||
|
@ -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');
|
||||
|
@ -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<void> 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<void> 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<String, Object> 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])
|
||||
|
@ -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<Type, Generator> _testbedDefaults = <Type, Generator>{
|
||||
), // 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<void> ensureAnalyticsSent() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@override
|
||||
Stream<Map<String, Object>> get onSend => const Stream<Map<String, Object>>.empty();
|
||||
|
||||
@override
|
||||
void printWelcome() {}
|
||||
|
||||
@override
|
||||
void sendCommand(String command, {Map<String, String> parameters}) {}
|
||||
|
||||
@override
|
||||
void sendEvent(String category, String parameter, {
|
||||
String label,
|
||||
int value,
|
||||
Map<String, String> 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<void> 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<void> 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<String, Object> 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<String> platformOverrideArtifacts;
|
||||
|
||||
@override
|
||||
bool useUnsignedMacBinaries;
|
||||
|
||||
@override
|
||||
Future<bool> areRemoteArtifactsAvailable({String engineVersion, bool includeAllPlatforms = true}) async {
|
||||
return true;
|
||||
}
|
||||
|
||||
@override
|
||||
String get dartSdkVersion => null;
|
||||
|
||||
@override
|
||||
String get storageBaseUrl => null;
|
||||
|
||||
@override
|
||||
MapEntry<String, String> get dyLdLibEntry => const MapEntry<String, String>('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<bool> isUpToDate() async {
|
||||
return true;
|
||||
}
|
||||
|
||||
@override
|
||||
void setStampFor(String artifactName, String version) {
|
||||
throw UnsupportedError('Not supported in the fake Cache');
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> updateAll(Set<DevelopmentArtifact> requiredArtifacts) async {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> doesRemoteExist(String message, Uri url) async {
|
||||
return true;
|
||||
}
|
||||
|
||||
@override
|
||||
void clearStampFiles() { }
|
||||
|
||||
@override
|
||||
void checkLockAcquired() { }
|
||||
|
||||
@override
|
||||
Future<void> lock() async { }
|
||||
|
||||
@override
|
||||
void releaseLock() { }
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user