mirror of
https://github.com/flutter/flutter
synced 2024-10-13 03:32:55 +00:00
Add canRun override to FakeProcessManager (#74865)
This commit is contained in:
parent
904d63fbd6
commit
dbb1958c5e
|
@ -55,10 +55,12 @@ final Platform macPlatform = FakePlatform(
|
||||||
void main() {
|
void main() {
|
||||||
MockFlutterVersion mockFlutterVersion;
|
MockFlutterVersion mockFlutterVersion;
|
||||||
BufferLogger logger;
|
BufferLogger logger;
|
||||||
|
FakeProcessManager fakeProcessManager;
|
||||||
|
|
||||||
setUp(() {
|
setUp(() {
|
||||||
mockFlutterVersion = MockFlutterVersion();
|
mockFlutterVersion = MockFlutterVersion();
|
||||||
logger = BufferLogger.test();
|
logger = BufferLogger.test();
|
||||||
|
fakeProcessManager = FakeProcessManager.list(<FakeCommand>[]);
|
||||||
});
|
});
|
||||||
|
|
||||||
testWithoutContext('ValidationMessage equality and hashCode includes contextUrl', () {
|
testWithoutContext('ValidationMessage equality and hashCode includes contextUrl', () {
|
||||||
|
@ -597,7 +599,6 @@ void main() {
|
||||||
}, overrides: noColorTerminalOverride);
|
}, overrides: noColorTerminalOverride);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
group('grouped validator merging results', () {
|
group('grouped validator merging results', () {
|
||||||
final PassingGroupedValidator installed = PassingGroupedValidator('Category');
|
final PassingGroupedValidator installed = PassingGroupedValidator('Category');
|
||||||
final PartialGroupedValidator partial = PartialGroupedValidator('Category');
|
final PartialGroupedValidator partial = PartialGroupedValidator('Category');
|
||||||
|
@ -650,14 +651,12 @@ void main() {
|
||||||
});
|
});
|
||||||
|
|
||||||
testUsingContext('WebWorkflow is a part of validator workflows if enabled', () async {
|
testUsingContext('WebWorkflow is a part of validator workflows if enabled', () async {
|
||||||
when(globals.processManager.canRun(any)).thenReturn(true);
|
|
||||||
|
|
||||||
expect(DoctorValidatorsProvider.defaultInstance.workflows,
|
expect(DoctorValidatorsProvider.defaultInstance.workflows,
|
||||||
contains(isA<WebWorkflow>()));
|
contains(isA<WebWorkflow>()));
|
||||||
}, overrides: <Type, Generator>{
|
}, overrides: <Type, Generator>{
|
||||||
FeatureFlags: () => TestFeatureFlags(isWebEnabled: true),
|
FeatureFlags: () => TestFeatureFlags(isWebEnabled: true),
|
||||||
FileSystem: () => MemoryFileSystem.test(),
|
FileSystem: () => MemoryFileSystem.test(),
|
||||||
ProcessManager: () => MockProcessManager(),
|
ProcessManager: () => fakeProcessManager,
|
||||||
});
|
});
|
||||||
|
|
||||||
testUsingContext('Fetches tags to get the right version', () async {
|
testUsingContext('Fetches tags to get the right version', () async {
|
||||||
|
@ -1046,7 +1045,6 @@ class VsCodeValidatorTestTargets extends VsCodeValidator {
|
||||||
static final String missingExtensions = globals.fs.path.join('test', 'data', 'vscode', 'notExtensions');
|
static final String missingExtensions = globals.fs.path.join('test', 'data', 'vscode', 'notExtensions');
|
||||||
}
|
}
|
||||||
|
|
||||||
class MockProcessManager extends Mock implements ProcessManager {}
|
|
||||||
class MockPlistParser extends Mock implements PlistParser {}
|
class MockPlistParser extends Mock implements PlistParser {}
|
||||||
class MockDeviceManager extends Mock implements DeviceManager {}
|
class MockDeviceManager extends Mock implements DeviceManager {}
|
||||||
class MockDevice extends Mock implements Device {
|
class MockDevice extends Mock implements Device {
|
||||||
|
|
|
@ -47,15 +47,16 @@ void main() {
|
||||||
});
|
});
|
||||||
|
|
||||||
testWithoutContext('AndroidDevices returns empty device list and diagnostics when adb cannot be run', () async {
|
testWithoutContext('AndroidDevices returns empty device list and diagnostics when adb cannot be run', () async {
|
||||||
|
final FakeProcessManager fakeProcessManager = FakeProcessManager.list(<FakeCommand>[]);
|
||||||
|
fakeProcessManager.excludedExecutables.add('adb');
|
||||||
final AndroidDevices androidDevices = AndroidDevices(
|
final AndroidDevices androidDevices = AndroidDevices(
|
||||||
androidSdk: FakeAndroidSdk(null),
|
androidSdk: FakeAndroidSdk(),
|
||||||
logger: BufferLogger.test(),
|
logger: BufferLogger.test(),
|
||||||
androidWorkflow: AndroidWorkflow(
|
androidWorkflow: AndroidWorkflow(
|
||||||
androidSdk: FakeAndroidSdk('adb'),
|
androidSdk: FakeAndroidSdk('adb'),
|
||||||
featureFlags: TestFeatureFlags(),
|
featureFlags: TestFeatureFlags(),
|
||||||
),
|
),
|
||||||
// Will throw an exception if anything other than canRun is invoked
|
processManager: fakeProcessManager,
|
||||||
processManager: FakeProcessManger(),
|
|
||||||
fileSystem: MemoryFileSystem.test(),
|
fileSystem: MemoryFileSystem.test(),
|
||||||
platform: FakePlatform(),
|
platform: FakePlatform(),
|
||||||
userMessages: UserMessages(),
|
userMessages: UserMessages(),
|
||||||
|
@ -63,6 +64,7 @@ void main() {
|
||||||
|
|
||||||
expect(await androidDevices.pollingGetDevices(), isEmpty);
|
expect(await androidDevices.pollingGetDevices(), isEmpty);
|
||||||
expect(await androidDevices.getDiagnostics(), isEmpty);
|
expect(await androidDevices.getDiagnostics(), isEmpty);
|
||||||
|
expect(fakeProcessManager.hasRemainingExpectations, isFalse);
|
||||||
});
|
});
|
||||||
|
|
||||||
testWithoutContext('AndroidDevices returns empty device list and diagnostics on null Android SDK', () async {
|
testWithoutContext('AndroidDevices returns empty device list and diagnostics on null Android SDK', () async {
|
||||||
|
@ -239,10 +241,3 @@ class FakeAndroidSdk extends Fake implements AndroidSdk {
|
||||||
@override
|
@override
|
||||||
final String adbPath;
|
final String adbPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
class FakeProcessManger extends Fake implements ProcessManager {
|
|
||||||
@override
|
|
||||||
bool canRun(dynamic executable, {String workingDirectory}) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -763,11 +763,7 @@ class FakeDownloadedArtifact extends CachedArtifact {
|
||||||
}
|
}
|
||||||
|
|
||||||
class MockArtifactUpdater extends Mock implements ArtifactUpdater {}
|
class MockArtifactUpdater extends Mock implements ArtifactUpdater {}
|
||||||
class MockProcessManager extends Mock implements ProcessManager {}
|
|
||||||
class MockFileSystem extends Mock implements FileSystem {}
|
|
||||||
class MockFile extends Mock implements File {}
|
class MockFile extends Mock implements File {}
|
||||||
class MockDirectory extends Mock implements Directory {}
|
|
||||||
class MockRandomAccessFile extends Mock implements RandomAccessFile {}
|
|
||||||
class MockCachedArtifact extends Mock implements CachedArtifact {}
|
class MockCachedArtifact extends Mock implements CachedArtifact {}
|
||||||
class MockIosUsbArtifacts extends Mock implements IosUsbArtifacts {}
|
class MockIosUsbArtifacts extends Mock implements IosUsbArtifacts {}
|
||||||
class MockInternetAddress extends Mock implements InternetAddress {}
|
class MockInternetAddress extends Mock implements InternetAddress {}
|
||||||
|
|
|
@ -11,22 +11,20 @@ import 'package:flutter_tools/src/base/platform.dart';
|
||||||
import 'package:flutter_tools/src/doctor.dart';
|
import 'package:flutter_tools/src/doctor.dart';
|
||||||
import 'package:flutter_tools/src/web/chrome.dart';
|
import 'package:flutter_tools/src/web/chrome.dart';
|
||||||
import 'package:flutter_tools/src/web/web_validator.dart';
|
import 'package:flutter_tools/src/web/web_validator.dart';
|
||||||
import 'package:mockito/mockito.dart';
|
|
||||||
import 'package:process/process.dart';
|
|
||||||
|
|
||||||
import '../../src/common.dart';
|
import '../../src/common.dart';
|
||||||
import '../../src/fake_process_manager.dart';
|
import '../../src/fake_process_manager.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
Platform platform;
|
Platform platform;
|
||||||
ProcessManager processManager;
|
FakeProcessManager fakeProcessManager;
|
||||||
ChromiumLauncher chromeLauncher;
|
ChromiumLauncher chromeLauncher;
|
||||||
FileSystem fileSystem;
|
FileSystem fileSystem;
|
||||||
ChromiumValidator webValidator;
|
ChromiumValidator webValidator;
|
||||||
|
|
||||||
setUp(() {
|
setUp(() {
|
||||||
fileSystem = MemoryFileSystem.test();
|
fileSystem = MemoryFileSystem.test();
|
||||||
processManager = MockProcessManager();
|
fakeProcessManager = FakeProcessManager.list(<FakeCommand>[]);
|
||||||
platform = FakePlatform(
|
platform = FakePlatform(
|
||||||
operatingSystem: 'macos',
|
operatingSystem: 'macos',
|
||||||
environment: <String, String>{},
|
environment: <String, String>{},
|
||||||
|
@ -34,7 +32,7 @@ void main() {
|
||||||
chromeLauncher = ChromiumLauncher(
|
chromeLauncher = ChromiumLauncher(
|
||||||
fileSystem: fileSystem,
|
fileSystem: fileSystem,
|
||||||
platform: platform,
|
platform: platform,
|
||||||
processManager: processManager,
|
processManager: fakeProcessManager,
|
||||||
operatingSystemUtils: null,
|
operatingSystemUtils: null,
|
||||||
browserFinder: findChromeExecutable,
|
browserFinder: findChromeExecutable,
|
||||||
logger: BufferLogger.test(),
|
logger: BufferLogger.test(),
|
||||||
|
@ -46,15 +44,13 @@ void main() {
|
||||||
});
|
});
|
||||||
|
|
||||||
testWithoutContext('WebValidator can find executable on macOS', () async {
|
testWithoutContext('WebValidator can find executable on macOS', () async {
|
||||||
when(processManager.canRun(kMacOSExecutable)).thenReturn(true);
|
|
||||||
|
|
||||||
final ValidationResult result = await webValidator.validate();
|
final ValidationResult result = await webValidator.validate();
|
||||||
|
|
||||||
expect(result.type, ValidationType.installed);
|
expect(result.type, ValidationType.installed);
|
||||||
});
|
});
|
||||||
|
|
||||||
testWithoutContext('WebValidator Can notice missing macOS executable ', () async {
|
testWithoutContext('WebValidator Can notice missing macOS executable ', () async {
|
||||||
when(processManager.canRun(kMacOSExecutable)).thenReturn(false);
|
fakeProcessManager.excludedExecutables.add(kMacOSExecutable);
|
||||||
|
|
||||||
final ValidationResult result = await webValidator.validate();
|
final ValidationResult result = await webValidator.validate();
|
||||||
|
|
||||||
|
@ -62,7 +58,7 @@ void main() {
|
||||||
});
|
});
|
||||||
|
|
||||||
testWithoutContext('WebValidator does not warn about CHROME_EXECUTABLE unless it cant find chrome ', () async {
|
testWithoutContext('WebValidator does not warn about CHROME_EXECUTABLE unless it cant find chrome ', () async {
|
||||||
when(processManager.canRun(kMacOSExecutable)).thenReturn(false);
|
fakeProcessManager.excludedExecutables.add(kMacOSExecutable);
|
||||||
|
|
||||||
final ValidationResult result = await webValidator.validate();
|
final ValidationResult result = await webValidator.validate();
|
||||||
|
|
||||||
|
@ -73,5 +69,3 @@ void main() {
|
||||||
expect(result.type, ValidationType.missing);
|
expect(result.type, ValidationType.missing);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
class MockProcessManager extends Mock implements ProcessManager {}
|
|
||||||
|
|
|
@ -301,8 +301,11 @@ abstract class FakeProcessManager implements ProcessManager {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns false if executable in [excludedExecutables].
|
||||||
@override
|
@override
|
||||||
bool canRun(dynamic executable, {String workingDirectory}) => true;
|
bool canRun(dynamic executable, {String workingDirectory}) => !excludedExecutables.contains(executable);
|
||||||
|
|
||||||
|
Set<String> excludedExecutables = <String>{};
|
||||||
|
|
||||||
@override
|
@override
|
||||||
bool killPid(int pid, [io.ProcessSignal signal = io.ProcessSignal.sigterm]) {
|
bool killPid(int pid, [io.ProcessSignal signal = io.ProcessSignal.sigterm]) {
|
||||||
|
|
Loading…
Reference in a new issue