Always fake ProcessManager when you fake Filesystem in tests (#42369)
...because otherwise, processes that think they're manipulating your
filesystem will be doing crazy things the test is ignoring, leading to
(at best) failures and (at worst) flakes or disk corruption.
diff --git a/packages/flutter_tools/test/general.shard/android/android_device_test.dart b/packages/flutter_tools/test/general.shard/android/android_device_test.dart
index 73e64bb..366f2b2 100644
--- a/packages/flutter_tools/test/general.shard/android/android_device_test.dart
+++ b/packages/flutter_tools/test/general.shard/android/android_device_test.dart
@@ -280,6 +280,7 @@
expect(AndroidDevice('test').isSupportedForProject(flutterProject), true);
}, overrides: <Type, Generator>{
FileSystem: () => MemoryFileSystem(),
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
});
testUsingContext('isSupportedForProject is true with editable host app', () async {
@@ -291,6 +292,7 @@
expect(AndroidDevice('test').isSupportedForProject(flutterProject), true);
}, overrides: <Type, Generator>{
FileSystem: () => MemoryFileSystem(),
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
});
testUsingContext('isSupportedForProject is false with no host app and no module', () async {
@@ -301,6 +303,7 @@
expect(AndroidDevice('test').isSupportedForProject(flutterProject), false);
}, overrides: <Type, Generator>{
FileSystem: () => MemoryFileSystem(),
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
});
group('emulatorId', () {
diff --git a/packages/flutter_tools/test/general.shard/android/android_sdk_test.dart b/packages/flutter_tools/test/general.shard/android/android_sdk_test.dart
index e08151b..e93f7f7 100644
--- a/packages/flutter_tools/test/general.shard/android/android_sdk_test.dart
+++ b/packages/flutter_tools/test/general.shard/android/android_sdk_test.dart
@@ -45,6 +45,7 @@
expect(sdk.latestVersion.sdkLevel, 23);
}, overrides: <Type, Generator>{
FileSystem: () => fs,
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
});
testUsingContext('parse sdk N', () {
@@ -56,6 +57,7 @@
expect(sdk.latestVersion.sdkLevel, 24);
}, overrides: <Type, Generator>{
FileSystem: () => fs,
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
});
testUsingContext('returns sdkmanager path', () {
@@ -66,6 +68,7 @@
expect(sdk.sdkManagerPath, fs.path.join(sdk.directory, 'tools', 'bin', 'sdkmanager'));
}, overrides: <Type, Generator>{
FileSystem: () => fs,
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
});
testUsingContext('returns sdkmanager version', () {
@@ -158,6 +161,7 @@
expect(sdk.ndk.compilerArgs, <String>['--sysroot', realNdkSysroot]);
}, overrides: <Type, Generator>{
FileSystem: () => fs,
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
Platform: () => FakePlatform(operatingSystem: os),
});
@@ -192,6 +196,7 @@
expect(sdk.ndk.compilerArgs, <String>['--sysroot', realNdkSysroot, '-fuse-ld=$realNdkLinker']);
}, overrides: <Type, Generator>{
FileSystem: () => fs,
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
Platform: () => FakePlatform(operatingSystem: os),
});
});
@@ -209,6 +214,7 @@
expect(explanation, contains('Can not locate ndk-bundle'));
}, overrides: <Type, Generator>{
FileSystem: () => fs,
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
Platform: () => FakePlatform(operatingSystem: os),
});
}
diff --git a/packages/flutter_tools/test/general.shard/android/android_studio_test.dart b/packages/flutter_tools/test/general.shard/android/android_studio_test.dart
index cd7216d..5fe9a22 100644
--- a/packages/flutter_tools/test/general.shard/android/android_studio_test.dart
+++ b/packages/flutter_tools/test/general.shard/android/android_studio_test.dart
@@ -66,6 +66,7 @@
equals('/home/me/.AndroidStudioWithCheese5.0/config/plugins'));
}, overrides: <Type, Generator>{
FileSystem: () => fs,
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
// Custom home paths are not supported on macOS nor Windows yet,
// so we force the platform to fake Linux here.
Platform: () => linuxPlatform(),
@@ -85,6 +86,7 @@
equals(fs.path.join(homeMac, 'Library', 'Application Support', 'AndroidStudio3.3')));
}, overrides: <Type, Generator>{
FileSystem: () => fs,
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
// Custom home paths are not supported on macOS nor Windows yet,
// so we force the platform to fake Linux here.
Platform: () => macPlatform(),
@@ -114,6 +116,7 @@
equals(fs.path.join(homeMac, 'Library', 'Application Support', 'AndroidStudio3.3')));
}, overrides: <Type, Generator>{
FileSystem: () => fs,
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
// Custom home paths are not supported on macOS nor Windows yet,
// so we force the platform to fake Linux here.
Platform: () => macPlatform(),
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 3269e4f..b4a08cd 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
@@ -51,8 +51,8 @@
}, overrides: <Type, Generator>{
AndroidSdk: () => sdk,
FileSystem: () => fs,
- Platform: () => FakePlatform()..environment = <String, String>{'HOME': '/home/me'},
ProcessManager: () => processManager,
+ Platform: () => FakePlatform()..environment = <String, String>{'HOME': '/home/me'},
Stdio: () => stdio,
});
@@ -65,8 +65,8 @@
}, overrides: <Type, Generator>{
AndroidSdk: () => sdk,
FileSystem: () => fs,
- Platform: () => FakePlatform()..environment = <String, String>{'HOME': '/home/me'},
ProcessManager: () => processManager,
+ Platform: () => FakePlatform()..environment = <String, String>{'HOME': '/home/me'},
Stdio: () => stdio,
});
@@ -80,8 +80,8 @@
}, overrides: <Type, Generator>{
AndroidSdk: () => sdk,
FileSystem: () => fs,
- Platform: () => FakePlatform()..environment = <String, String>{'HOME': '/home/me'},
ProcessManager: () => processManager,
+ Platform: () => FakePlatform()..environment = <String, String>{'HOME': '/home/me'},
Stdio: () => stdio,
});
@@ -98,8 +98,8 @@
}, overrides: <Type, Generator>{
AndroidSdk: () => sdk,
FileSystem: () => fs,
- Platform: () => FakePlatform()..environment = <String, String>{'HOME': '/home/me'},
ProcessManager: () => processManager,
+ Platform: () => FakePlatform()..environment = <String, String>{'HOME': '/home/me'},
Stdio: () => stdio,
});
@@ -117,8 +117,8 @@
}, overrides: <Type, Generator>{
AndroidSdk: () => sdk,
FileSystem: () => fs,
- Platform: () => FakePlatform()..environment = <String, String>{'HOME': '/home/me'},
ProcessManager: () => processManager,
+ Platform: () => FakePlatform()..environment = <String, String>{'HOME': '/home/me'},
Stdio: () => stdio,
});
@@ -136,8 +136,8 @@
}, overrides: <Type, Generator>{
AndroidSdk: () => sdk,
FileSystem: () => fs,
- Platform: () => FakePlatform()..environment = <String, String>{'HOME': '/home/me'},
ProcessManager: () => processManager,
+ Platform: () => FakePlatform()..environment = <String, String>{'HOME': '/home/me'},
Stdio: () => stdio,
});
@@ -149,8 +149,8 @@
}, overrides: <Type, Generator>{
AndroidSdk: () => sdk,
FileSystem: () => fs,
- Platform: () => FakePlatform()..environment = <String, String>{'HOME': '/home/me'},
ProcessManager: () => processManager,
+ Platform: () => FakePlatform()..environment = <String, String>{'HOME': '/home/me'},
Stdio: () => stdio,
});
@@ -162,8 +162,8 @@
}, overrides: <Type, Generator>{
AndroidSdk: () => sdk,
FileSystem: () => fs,
- Platform: () => FakePlatform()..environment = <String, String>{'HOME': '/home/me'},
ProcessManager: () => processManager,
+ Platform: () => FakePlatform()..environment = <String, String>{'HOME': '/home/me'},
Stdio: () => stdio,
});
@@ -175,8 +175,8 @@
}, overrides: <Type, Generator>{
AndroidSdk: () => sdk,
FileSystem: () => fs,
- Platform: () => FakePlatform()..environment = <String, String>{'HOME': '/home/me'},
ProcessManager: () => processManager,
+ Platform: () => FakePlatform()..environment = <String, String>{'HOME': '/home/me'},
Stdio: () => stdio,
});
@@ -188,8 +188,8 @@
}, overrides: <Type, Generator>{
AndroidSdk: () => sdk,
FileSystem: () => fs,
- Platform: () => FakePlatform()..environment = <String, String>{'HOME': '/home/me'},
ProcessManager: () => processManager,
+ Platform: () => FakePlatform()..environment = <String, String>{'HOME': '/home/me'},
Stdio: () => stdio,
});
@@ -201,8 +201,8 @@
}, overrides: <Type, Generator>{
AndroidSdk: () => sdk,
FileSystem: () => fs,
- Platform: () => FakePlatform()..environment = <String, String>{'HOME': '/home/me'},
ProcessManager: () => processManager,
+ Platform: () => FakePlatform()..environment = <String, String>{'HOME': '/home/me'},
Stdio: () => stdio,
});
@@ -218,8 +218,8 @@
}, overrides: <Type, Generator>{
AndroidSdk: () => sdk,
FileSystem: () => fs,
- Platform: () => FakePlatform()..environment = <String, String>{'HOME': '/home/me'},
ProcessManager: () => processManager,
+ Platform: () => FakePlatform()..environment = <String, String>{'HOME': '/home/me'},
Stdio: () => stdio,
});
@@ -272,8 +272,8 @@
}, overrides: <Type, Generator>{
AndroidSdk: () => sdk,
FileSystem: () => fs,
- Platform: () => FakePlatform()..environment = <String, String>{'HOME': '/home/me'},
ProcessManager: () => processManager,
+ Platform: () => FakePlatform()..environment = <String, String>{'HOME': '/home/me'},
Stdio: () => stdio,
});
diff --git a/packages/flutter_tools/test/general.shard/android/gradle_test.dart b/packages/flutter_tools/test/general.shard/android/gradle_test.dart
index ccc9a21..8b1f1e5 100644
--- a/packages/flutter_tools/test/general.shard/android/gradle_test.dart
+++ b/packages/flutter_tools/test/general.shard/android/gradle_test.dart
@@ -58,6 +58,7 @@
expect(findApkFiles(gradleProject, buildInfo), <File>[]);
}, overrides: <Type, Generator>{
FileSystem: () => MemoryFileSystem(),
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
});
test('androidXFailureRegex should match lines with likely AndroidX errors', () {
@@ -130,6 +131,7 @@
expect(bundle.path, '/foo_barRelease/app.aab');
}, overrides: <Type, Generator>{
FileSystem: () => MemoryFileSystem(),
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
});
testUsingContext('Finds app bundle when flavor doesn\'t contain underscores in release mode', () {
@@ -139,6 +141,7 @@
expect(bundle.path, '/fooRelease/app.aab');
}, overrides: <Type, Generator>{
FileSystem: () => MemoryFileSystem(),
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
});
testUsingContext('Finds app bundle when no flavor is used in release mode', () {
@@ -148,6 +151,7 @@
expect(bundle.path, '/release/app.aab');
}, overrides: <Type, Generator>{
FileSystem: () => MemoryFileSystem(),
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
});
testUsingContext('Finds app bundle when flavor contains underscores in debug mode', () {
@@ -157,6 +161,7 @@
expect(bundle.path, '/foo_barDebug/app.aab');
}, overrides: <Type, Generator>{
FileSystem: () => MemoryFileSystem(),
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
});
testUsingContext('Finds app bundle when flavor doesn\'t contain underscores in debug mode', () {
@@ -166,6 +171,7 @@
expect(bundle.path, '/fooDebug/app.aab');
}, overrides: <Type, Generator>{
FileSystem: () => MemoryFileSystem(),
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
});
testUsingContext('Finds app bundle when no flavor is used in debug mode', () {
@@ -175,6 +181,7 @@
expect(bundle.path, '/debug/app.aab');
}, overrides: <Type, Generator>{
FileSystem: () => MemoryFileSystem(),
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
});
testUsingContext('Finds app bundle when flavor contains underscores in profile mode', () {
@@ -184,6 +191,7 @@
expect(bundle.path, '/foo_barProfile/app.aab');
}, overrides: <Type, Generator>{
FileSystem: () => MemoryFileSystem(),
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
});
testUsingContext('Finds app bundle when flavor doesn\'t contain underscores in profile mode', () {
@@ -193,6 +201,7 @@
expect(bundle.path, '/fooProfile/app.aab');
}, overrides: <Type, Generator>{
FileSystem: () => MemoryFileSystem(),
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
});
testUsingContext('Finds app bundle when no flavor is used in profile mode', () {
@@ -202,6 +211,7 @@
expect(bundle.path, '/profile/app.aab');
}, overrides: <Type, Generator>{
FileSystem: () => MemoryFileSystem(),
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
});
testUsingContext('Finds app bundle in release mode - Gradle 3.5', () {
@@ -211,6 +221,7 @@
expect(bundle.path, '/release/app-release.aab');
}, overrides: <Type, Generator>{
FileSystem: () => MemoryFileSystem(),
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
});
testUsingContext('Finds app bundle in profile mode - Gradle 3.5', () {
@@ -220,6 +231,7 @@
expect(bundle.path, '/profile/app-profile.aab');
}, overrides: <Type, Generator>{
FileSystem: () => MemoryFileSystem(),
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
});
testUsingContext('Finds app bundle in debug mode - Gradle 3.5', () {
@@ -229,6 +241,7 @@
expect(bundle.path, '/debug/app-debug.aab');
}, overrides: <Type, Generator>{
FileSystem: () => MemoryFileSystem(),
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
});
testUsingContext('Finds app bundle when flavor contains underscores in release mode - Gradle 3.5', () {
@@ -238,6 +251,7 @@
expect(bundle.path, '/foo_barRelease/app-foo_bar-release.aab');
}, overrides: <Type, Generator>{
FileSystem: () => MemoryFileSystem(),
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
});
testUsingContext('Finds app bundle when flavor contains underscores in profile mode - Gradle 3.5', () {
@@ -247,6 +261,7 @@
expect(bundle.path, '/foo_barProfile/app-foo_bar-profile.aab');
}, overrides: <Type, Generator>{
FileSystem: () => MemoryFileSystem(),
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
});
testUsingContext('Finds app bundle when flavor contains underscores in debug mode - Gradle 3.5', () {
@@ -256,6 +271,7 @@
expect(bundle.path, '/foo_barDebug/app-foo_bar-debug.aab');
}, overrides: <Type, Generator>{
FileSystem: () => MemoryFileSystem(),
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
});
});
@@ -492,6 +508,7 @@
}, overrides: <Type, Generator>{
FileSystem: () => MemoryFileSystem(),
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
Logger: () => mockLogger,
});
@@ -525,6 +542,7 @@
}, overrides: <Type, Generator>{
FileSystem: () => MemoryFileSystem(),
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
Logger: () => mockLogger,
});
});
@@ -587,9 +605,9 @@
void testUsingAndroidContext(String description, dynamic testMethod()) {
testUsingContext(description, testMethod, overrides: <Type, Generator>{
Artifacts: () => mockArtifacts,
- ProcessManager: () => mockProcessManager,
Platform: () => android,
FileSystem: () => fs,
+ ProcessManager: () => mockProcessManager,
});
}
@@ -1011,6 +1029,7 @@
}, overrides: <Type, Generator>{
Cache: () => Cache(rootOverride: tempDir),
FileSystem: () => memoryFileSystem,
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
});
testUsingContext('Inject the wrapper when some files are missing', () {
@@ -1051,6 +1070,7 @@
}, overrides: <Type, Generator>{
Cache: () => Cache(rootOverride: tempDir),
FileSystem: () => memoryFileSystem,
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
});
testUsingContext('Gives executable permission to gradle', () {
@@ -1068,6 +1088,7 @@
}, overrides: <Type, Generator>{
Cache: () => Cache(rootOverride: tempDir),
FileSystem: () => memoryFileSystem,
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
OperatingSystemUtils: () => OperatingSystemUtils(),
});
});
@@ -1089,6 +1110,7 @@
}, overrides: <Type, Generator>{
FileSystem: () => memoryFileSystem,
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
});
testUsingContext('throws ToolExit if it cannot write gradle.properties', () {
@@ -1126,6 +1148,7 @@
equals('android.enableR8=true'));
}, overrides: <Type, Generator>{
FileSystem: () => memoryFileSystem,
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
});
testUsingContext('sets android.enableR8=true', () {
@@ -1146,6 +1169,7 @@
);
}, overrides: <Type, Generator>{
FileSystem: () => memoryFileSystem,
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
});
});
@@ -1167,6 +1191,7 @@
}, overrides: <Type, Generator>{
FileSystem: () => fs,
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
});
testUsingContext('returns false when the project is not using AndroidX', () async {
@@ -1180,6 +1205,7 @@
}, overrides: <Type, Generator>{
FileSystem: () => fs,
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
});
testUsingContext('returns false when gradle.properties does not exist', () async {
@@ -1189,6 +1215,7 @@
}, overrides: <Type, Generator>{
FileSystem: () => fs,
+ ProcessManager: () => FakeProcessManager(<FakeCommand>[]),
});
});
@@ -1291,8 +1318,8 @@
}, overrides: <Type, Generator>{
AndroidSdk: () => mockAndroidSdk,
FileSystem: () => fs,
- GradleUtils: () => FakeGradleUtils(),
ProcessManager: () => mockProcessManager,
+ GradleUtils: () => FakeGradleUtils(),
});
});
@@ -1405,9 +1432,9 @@
AndroidStudio: () => mockAndroidStudio,
Artifacts: () => mockArtifacts,
Cache: () => cache,
- ProcessManager: () => mockProcessManager,
Platform: () => android,
FileSystem: () => fs,
+ ProcessManager: () => mockProcessManager,
});
});
}