Revert "[flutter_tools] move process manager into tool (#75350)" (#75639)
This reverts commit 8b6baae44c8661d548643ced73493e6a66862622.
diff --git a/dev/tools/pubspec.yaml b/dev/tools/pubspec.yaml
index cc5e1b2..09e160d 100644
--- a/dev/tools/pubspec.yaml
+++ b/dev/tools/pubspec.yaml
@@ -7,6 +7,8 @@
dependencies:
archive: 3.0.0
args: 1.6.0
+ flutter_tools:
+ path: '../../packages/flutter_tools'
http: 0.12.2
intl: 0.17.0
meta: 1.3.0
diff --git a/dev/tools/test/codesign_test.dart b/dev/tools/test/codesign_test.dart
index 18524ce..3200616 100644
--- a/dev/tools/test/codesign_test.dart
+++ b/dev/tools/test/codesign_test.dart
@@ -11,8 +11,8 @@
import 'package:meta/meta.dart';
import 'package:platform/platform.dart';
+import '../../../packages/flutter_tools/test/src/fake_process_manager.dart';
import './common.dart';
-import 'fake_process_manager.dart';
void main() {
group('codesign command', () {
diff --git a/dev/tools/test/fake_process_manager.dart b/dev/tools/test/fake_process_manager.dart
deleted file mode 100644
index 0796926..0000000
--- a/dev/tools/test/fake_process_manager.dart
+++ /dev/null
@@ -1,376 +0,0 @@
-// Copyright 2014 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// @dart = 2.8
-
-import 'dart:async';
-import 'dart:convert';
-import 'dart:io';
-
-import 'package:process/process.dart';
-import 'package:meta/meta.dart';
-import 'common.dart';
-
-// TODO(flutter): consider moving this into package:process.
-
-typedef VoidCallback = void Function();
-
-/// A command for [FakeProcessManager].
-@immutable
-class FakeCommand {
- const FakeCommand({
- @required this.command,
- this.workingDirectory,
- this.environment,
- this.encoding,
- this.duration = Duration.zero,
- this.onRun,
- this.exitCode = 0,
- this.stdout = '',
- this.stderr = '',
- this.completer,
- this.stdin,
- }) : assert(command != null),
- assert(duration != null),
- assert(exitCode != null);
-
- /// The exact commands that must be matched for this [FakeCommand] to be
- /// considered correct.
- final List<String> command;
-
- /// The exact working directory that must be matched for this [FakeCommand] to
- /// be considered correct.
- ///
- /// If this is null, the working directory is ignored.
- final String workingDirectory;
-
- /// The environment that must be matched for this [FakeCommand] to be considered correct.
- ///
- /// If this is null, then the environment is ignored.
- ///
- /// Otherwise, each key in this environment must be present and must have a
- /// value that matches the one given here for the [FakeCommand] to match.
- final Map<String, String> environment;
-
- /// The stdout and stderr encoding that must be matched for this [FakeCommand]
- /// to be considered correct.
- ///
- /// If this is null, then the encodings are ignored.
- final Encoding encoding;
-
- /// The time to allow to elapse before returning the [exitCode], if this command
- /// is "executed".
- ///
- /// If you set this to a non-zero time, you should use a [FakeAsync] zone,
- /// otherwise the test will be artificially slow.
- final Duration duration;
-
- /// A callback that is run after [duration] expires but before the [exitCode]
- /// (and output) are passed back.
- final VoidCallback onRun;
-
- /// The process' exit code.
- ///
- /// To simulate a never-ending process, set [duration] to a value greater than
- /// 15 minutes (the timeout for our tests).
- ///
- /// To simulate a crash, subtract the crash signal number from 256. For example,
- /// SIGPIPE (-13) is 243.
- final int exitCode;
-
- /// The output to simulate on stdout. This will be encoded as UTF-8 and
- /// returned in one go.
- final String stdout;
-
- /// The output to simulate on stderr. This will be encoded as UTF-8 and
- /// returned in one go.
- final String stderr;
-
- /// If provided, allows the command completion to be blocked until the future
- /// resolves.
- final Completer<void> completer;
-
- /// An optional stdin sink that will be exposed through the resulting
- /// [FakeProcess].
- final IOSink stdin;
-
- void _matches(
- List<String> command,
- String workingDirectory,
- Map<String, String> environment,
- Encoding encoding,
- ) {
- expect(command, equals(this.command));
- if (this.workingDirectory != null) {
- expect(this.workingDirectory, workingDirectory);
- }
- if (this.environment != null) {
- expect(this.environment, environment);
- }
- if (this.encoding != null) {
- expect(this.encoding, encoding);
- }
- }
-}
-
-class _FakeProcess implements Process {
- _FakeProcess(
- this._exitCode,
- Duration duration,
- this.pid,
- this._stderr,
- this.stdin,
- this._stdout,
- this._completer,
- ) : exitCode = Future<void>.delayed(duration).then((void value) {
- if (_completer != null) {
- return _completer.future.then((void _) => _exitCode);
- }
- return _exitCode;
- }),
- stderr = _stderr == null
- ? const Stream<List<int>>.empty()
- : Stream<List<int>>.value(utf8.encode(_stderr)),
- stdout = _stdout == null
- ? const Stream<List<int>>.empty()
- : Stream<List<int>>.value(utf8.encode(_stdout));
-
- final int _exitCode;
- final Completer<void> _completer;
-
- @override
- final Future<int> exitCode;
-
- @override
- final int pid;
-
- final String _stderr;
-
- @override
- final Stream<List<int>> stderr;
-
- @override
- final IOSink stdin;
-
- @override
- final Stream<List<int>> stdout;
-
- final String _stdout;
-
- @override
- bool kill([ProcessSignal signal = ProcessSignal.sigterm]) {
- // Killing a fake process has no effect.
- return false;
- }
-}
-
-abstract class FakeProcessManager implements ProcessManager {
- /// A fake [ProcessManager] which responds to all commands as if they had run
- /// instantaneously with an exit code of 0 and no output.
- factory FakeProcessManager.any() = _FakeAnyProcessManager;
-
- /// A fake [ProcessManager] which responds to particular commands with
- /// particular results.
- ///
- /// On creation, pass in a list of [FakeCommand] objects. When the
- /// [ProcessManager] methods such as [start] are invoked, the next
- /// [FakeCommand] must match (otherwise the test fails); its settings are used
- /// to simulate the result of running that command.
- ///
- /// If no command is found, then one is implied which immediately returns exit
- /// code 0 with no output.
- ///
- /// There is no logic to ensure that all the listed commands are run. Use
- /// [FakeCommand.onRun] to set a flag, or specify a sentinel command as your
- /// last command and verify its execution is successful, to ensure that all
- /// the specified commands are actually called.
- factory FakeProcessManager.list(List<FakeCommand> commands) = _SequenceProcessManager;
-
- FakeProcessManager._();
-
- /// Adds a new [FakeCommand] to the current process manager.
- ///
- /// This can be used to configure test expectations after the [ProcessManager] has been
- /// provided to another interface.
- ///
- /// This is a no-op on [FakeProcessManager.any].
- void addCommand(FakeCommand command);
-
- /// Add multiple [FakeCommand] to the current process manager.
- void addCommands(Iterable<FakeCommand> commands) {
- commands.forEach(addCommand);
- }
-
- final Map<int, _FakeProcess> _fakeRunningProcesses = <int, _FakeProcess>{};
-
- /// Whether this fake has more [FakeCommand]s that are expected to run.
- ///
- /// This is always `true` for [FakeProcessManager.any].
- bool get hasRemainingExpectations;
-
- @protected
- FakeCommand findCommand(
- List<String> command,
- String workingDirectory,
- Map<String, String> environment,
- Encoding encoding,
- );
-
- int _pid = 9999;
-
- _FakeProcess _runCommand(
- List<String> command,
- String workingDirectory,
- Map<String, String> environment,
- Encoding encoding,
- ) {
- _pid += 1;
- final FakeCommand fakeCommand = findCommand(command, workingDirectory, environment, encoding);
- if (fakeCommand.onRun != null) {
- fakeCommand.onRun();
- }
- return _FakeProcess(
- fakeCommand.exitCode,
- fakeCommand.duration,
- _pid,
- fakeCommand.stderr,
- fakeCommand.stdin,
- fakeCommand.stdout,
- fakeCommand.completer,
- );
- }
-
- @override
- Future<Process> start(
- List<dynamic> command, {
- String workingDirectory,
- Map<String, String> environment,
- bool includeParentEnvironment = true, // ignored
- bool runInShell = false, // ignored
- ProcessStartMode mode = ProcessStartMode.normal, // ignored
- }) {
- final _FakeProcess process = _runCommand(command.cast<String>(), workingDirectory, environment, systemEncoding);
- if (process._completer != null) {
- _fakeRunningProcesses[process.pid] = process;
- process.exitCode.whenComplete(() {
- _fakeRunningProcesses.remove(process.pid);
- });
- }
- return Future<Process>.value(process);
- }
-
- @override
- Future<ProcessResult> run(
- List<dynamic> command, {
- String workingDirectory,
- Map<String, String> environment,
- bool includeParentEnvironment = true, // ignored
- bool runInShell = false, // ignored
- Encoding stdoutEncoding = systemEncoding,
- Encoding stderrEncoding = systemEncoding,
- }) async {
- final _FakeProcess process = _runCommand(command.cast<String>(), workingDirectory, environment, stdoutEncoding);
- await process.exitCode;
- return ProcessResult(
- process.pid,
- process._exitCode,
- stdoutEncoding == null ? process.stdout : await stdoutEncoding.decodeStream(process.stdout),
- stderrEncoding == null ? process.stderr : await stderrEncoding.decodeStream(process.stderr),
- );
- }
-
- @override
- ProcessResult runSync(
- List<dynamic> command, {
- String workingDirectory,
- Map<String, String> environment,
- bool includeParentEnvironment = true, // ignored
- bool runInShell = false, // ignored
- Encoding stdoutEncoding = systemEncoding, // actual encoder is ignored
- Encoding stderrEncoding = systemEncoding, // actual encoder is ignored
- }) {
- final _FakeProcess process = _runCommand(command.cast<String>(), workingDirectory, environment, stdoutEncoding);
- return ProcessResult(
- process.pid,
- process._exitCode,
- stdoutEncoding == null ? utf8.encode(process._stdout) : process._stdout,
- stderrEncoding == null ? utf8.encode(process._stderr) : process._stderr,
- );
- }
-
- /// Returns false if executable in [excludedExecutables].
- @override
- bool canRun(dynamic executable, {String workingDirectory}) => !excludedExecutables.contains(executable);
-
- Set<String> excludedExecutables = <String>{};
-
- @override
- bool killPid(int pid, [ProcessSignal signal = ProcessSignal.sigterm]) {
- // Killing a fake process has no effect unless it has an attached completer.
- final _FakeProcess fakeProcess = _fakeRunningProcesses[pid];
- if (fakeProcess == null) {
- return false;
- }
- fakeProcess._completer.complete();
- return true;
- }
-}
-
-class _FakeAnyProcessManager extends FakeProcessManager {
- _FakeAnyProcessManager() : super._();
-
- @override
- FakeCommand findCommand(
- List<String> command,
- String workingDirectory,
- Map<String, String> environment,
- Encoding encoding,
- ) {
- return FakeCommand(
- command: command,
- workingDirectory: workingDirectory,
- environment: environment,
- encoding: encoding,
- duration: Duration.zero,
- exitCode: 0,
- stdout: '',
- stderr: '',
- );
- }
-
- @override
- void addCommand(FakeCommand command) { }
-
- @override
- bool get hasRemainingExpectations => true;
-}
-
-class _SequenceProcessManager extends FakeProcessManager {
- _SequenceProcessManager(this._commands) : super._();
-
- final List<FakeCommand> _commands;
-
- @override
- FakeCommand findCommand(
- List<String> command,
- String workingDirectory,
- Map<String, String> environment,
- Encoding encoding,
- ) {
- expect(_commands, isNotEmpty,
- reason: 'ProcessManager was told to execute $command (in $workingDirectory) '
- 'but the FakeProcessManager.list expected no more processes.'
- );
- _commands.first._matches(command, workingDirectory, environment, encoding);
- return _commands.removeAt(0);
- }
-
- @override
- void addCommand(FakeCommand command) {
- _commands.add(command);
- }
-
- @override
- bool get hasRemainingExpectations => _commands.isNotEmpty;
-}
diff --git a/dev/tools/test/roll_dev_test.dart b/dev/tools/test/roll_dev_test.dart
index 8f52298..e88cdaf 100644
--- a/dev/tools/test/roll_dev_test.dart
+++ b/dev/tools/test/roll_dev_test.dart
@@ -9,8 +9,8 @@
import 'package:dev_tools/globals.dart';
import 'package:dev_tools/repository.dart';
+import '../../../packages/flutter_tools/test/src/fake_process_manager.dart';
import './common.dart';
-import 'fake_process_manager.dart';
void main() {
group('rollDev()', () {
diff --git a/packages/flutter_tools/lib/src/android/android_device.dart b/packages/flutter_tools/lib/src/android/android_device.dart
index e7260c7..e5af683 100644
--- a/packages/flutter_tools/lib/src/android/android_device.dart
+++ b/packages/flutter_tools/lib/src/android/android_device.dart
@@ -7,6 +7,7 @@
import 'dart:async';
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import '../android/android_builder.dart';
import '../android/android_sdk.dart';
diff --git a/packages/flutter_tools/lib/src/android/android_device_discovery.dart b/packages/flutter_tools/lib/src/android/android_device_discovery.dart
index d7f0125..b712fbd 100644
--- a/packages/flutter_tools/lib/src/android/android_device_discovery.dart
+++ b/packages/flutter_tools/lib/src/android/android_device_discovery.dart
@@ -5,6 +5,7 @@
// @dart = 2.8
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import '../base/common.dart';
import '../base/file_system.dart';
diff --git a/packages/flutter_tools/lib/src/android/android_emulator.dart b/packages/flutter_tools/lib/src/android/android_emulator.dart
index b5932c3..4378d26 100644
--- a/packages/flutter_tools/lib/src/android/android_emulator.dart
+++ b/packages/flutter_tools/lib/src/android/android_emulator.dart
@@ -7,6 +7,7 @@
import 'dart:async';
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import '../android/android_sdk.dart';
import '../android/android_workflow.dart';
diff --git a/packages/flutter_tools/lib/src/android/android_workflow.dart b/packages/flutter_tools/lib/src/android/android_workflow.dart
index 2665cd1..cc3a556 100644
--- a/packages/flutter_tools/lib/src/android/android_workflow.dart
+++ b/packages/flutter_tools/lib/src/android/android_workflow.dart
@@ -5,6 +5,7 @@
// @dart = 2.8
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import '../base/common.dart';
import '../base/context.dart';
@@ -13,7 +14,6 @@
import '../base/logger.dart';
import '../base/os.dart';
import '../base/platform.dart';
-import '../base/process.dart';
import '../base/user_messages.dart' hide userMessages;
import '../base/version.dart';
import '../convert.dart';
diff --git a/packages/flutter_tools/lib/src/application_package.dart b/packages/flutter_tools/lib/src/application_package.dart
index 78fb7f1..740674a 100644
--- a/packages/flutter_tools/lib/src/application_package.dart
+++ b/packages/flutter_tools/lib/src/application_package.dart
@@ -7,6 +7,7 @@
import 'dart:collection';
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import 'package:xml/xml.dart';
import 'android/android_sdk.dart';
diff --git a/packages/flutter_tools/lib/src/artifacts.dart b/packages/flutter_tools/lib/src/artifacts.dart
index aef8921..fc2e180 100644
--- a/packages/flutter_tools/lib/src/artifacts.dart
+++ b/packages/flutter_tools/lib/src/artifacts.dart
@@ -5,11 +5,11 @@
// @dart = 2.8
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import 'base/common.dart';
import 'base/file_system.dart';
import 'base/platform.dart';
-import 'base/process.dart';
import 'base/utils.dart';
import 'build_info.dart';
import 'cache.dart';
diff --git a/packages/flutter_tools/lib/src/base/build.dart b/packages/flutter_tools/lib/src/base/build.dart
index 1d7a740..a1fe82f 100644
--- a/packages/flutter_tools/lib/src/base/build.dart
+++ b/packages/flutter_tools/lib/src/base/build.dart
@@ -5,6 +5,7 @@
// @dart = 2.8
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import '../artifacts.dart';
import '../build_info.dart';
diff --git a/packages/flutter_tools/lib/src/base/error_handling_io.dart b/packages/flutter_tools/lib/src/base/error_handling_io.dart
index 383bdad..2298cf6 100644
--- a/packages/flutter_tools/lib/src/base/error_handling_io.dart
+++ b/packages/flutter_tools/lib/src/base/error_handling_io.dart
@@ -5,18 +5,17 @@
// @dart = 2.8
import 'dart:convert';
-import 'dart:io' as io show Directory, File, Link, ProcessException, ProcessResult, systemEncoding, Process, ProcessStartMode;
+import 'dart:io' as io show Directory, File, Link, ProcessException, ProcessResult, ProcessSignal, systemEncoding, Process, ProcessStartMode;
import 'dart:typed_data';
import 'package:file/file.dart';
import 'package:meta/meta.dart';
import 'package:path/path.dart' as p; // ignore: package_path_import
+import 'package:process/process.dart';
import '../reporting/reporting.dart';
import 'common.dart' show throwToolExit;
-import 'io.dart';
import 'platform.dart';
-import 'process.dart';
// The Flutter tool hits file system and process errors that only the end-user can address.
// We would like these errors to not hit crash logging. In these cases, we
@@ -674,7 +673,7 @@
}
@override
- bool canRun(String executable, {String workingDirectory}) {
+ bool canRun(dynamic executable, {String workingDirectory}) {
return _runSync(
() => _delegate.canRun(executable, workingDirectory: workingDirectory),
platform: _platform,
@@ -682,7 +681,7 @@
}
@override
- bool killPid(int pid, [ProcessSignal signal = ProcessSignal.SIGTERM]) {
+ bool killPid(int pid, [io.ProcessSignal signal = io.ProcessSignal.sigterm]) {
return _runSync(
() => _delegate.killPid(pid, signal),
platform: _platform,
@@ -691,7 +690,7 @@
@override
Future<io.ProcessResult> run(
- List<String> command, {
+ List<dynamic> command, {
String workingDirectory,
Map<String, String> environment,
bool includeParentEnvironment = true,
@@ -725,7 +724,7 @@
@override
Future<io.Process> start(
- List<String> command, {
+ List<dynamic> command, {
String workingDirectory,
Map<String, String> environment,
bool includeParentEnvironment = true,
@@ -754,7 +753,7 @@
@override
io.ProcessResult runSync(
- List<String> command, {
+ List<dynamic> command, {
String workingDirectory,
Map<String, String> environment,
bool includeParentEnvironment = true,
diff --git a/packages/flutter_tools/lib/src/base/os.dart b/packages/flutter_tools/lib/src/base/os.dart
index 87eef85..6dd4729 100644
--- a/packages/flutter_tools/lib/src/base/os.dart
+++ b/packages/flutter_tools/lib/src/base/os.dart
@@ -7,6 +7,7 @@
import 'package:archive/archive.dart';
import 'package:file/file.dart';
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import '../build_info.dart';
import '../globals.dart' as globals;
diff --git a/packages/flutter_tools/lib/src/base/process.dart b/packages/flutter_tools/lib/src/base/process.dart
index ace02bc..e4b8e05 100644
--- a/packages/flutter_tools/lib/src/base/process.dart
+++ b/packages/flutter_tools/lib/src/base/process.dart
@@ -7,15 +7,13 @@
import 'dart:async';
import 'package:meta/meta.dart';
-import 'package:file/local.dart' as local_fs;
+import 'package:process/process.dart';
import '../convert.dart';
import 'common.dart';
import 'context.dart';
-import 'file_system.dart';
import 'io.dart';
import 'logger.dart';
-import 'platform.dart';
typedef StringConverter = String Function(String string);
@@ -609,386 +607,3 @@
}
}
}
-
-/// Manages the creation of abstract processes.
-///
-/// Using instances of this class provides level of indirection from the static
-/// methods in the [Process] class, which in turn allows the underlying
-/// implementation to be mocked out or decorated for testing and debugging
-/// purposes.
-abstract class ProcessManager {
- /// Starts a process by running the specified [command].
- ///
- /// The first element in [command] will be treated as the executable to run,
- /// with subsequent elements being passed as arguments to the executable. It
- /// is left to implementations to decide what element types they support in
- /// the [command] list.
- ///
- /// Returns a `Future<Process>` that completes with a Process instance when
- /// the process has been successfully started. That [Process] object can be
- /// used to interact with the process. If the process cannot be started, the
- /// returned [Future] completes with an exception.
- ///
- /// Use [workingDirectory] to set the working directory for the process. Note
- /// that the change of directory occurs before executing the process on some
- /// platforms, which may have impact when using relative paths for the
- /// executable and the arguments.
- ///
- /// Use [environment] to set the environment variables for the process. If not
- /// set, the environment of the parent process is inherited. Currently, only
- /// US-ASCII environment variables are supported and errors are likely to occur
- /// if an environment variable with code-points outside the US-ASCII range is
- /// passed in.
- ///
- /// If [includeParentEnvironment] is `true`, the process's environment will
- /// include the parent process's environment, with [environment] taking
- /// precedence. Default is `true`.
- ///
- /// If [runInShell] is `true`, the process will be spawned through a system
- /// shell. On Linux and OS X, `/bin/sh` is used, while
- /// `%WINDIR%\system32\cmd.exe` is used on Windows.
- ///
- /// Users must read all data coming on the `stdout` and `stderr`
- /// streams of processes started with [start]. If the user
- /// does not read all data on the streams the underlying system
- /// resources will not be released since there is still pending data.
- ///
- /// The following code uses `start` to grep for `main` in the
- /// file `test.dart` on Linux.
- ///
- /// ProcessManager mgr = new LocalProcessManager();
- /// mgr.start('grep', ['-i', 'main', 'test.dart']).then((process) {
- /// stdout.addStream(process.stdout);
- /// stderr.addStream(process.stderr);
- /// });
- ///
- /// If [mode] is [ProcessStartMode.normal] (the default) a child
- /// process will be started with `stdin`, `stdout` and `stderr`
- /// connected.
- ///
- /// If `mode` is [ProcessStartMode.detached] a detached process will
- /// be created. A detached process has no connection to its parent,
- /// and can keep running on its own when the parent dies. The only
- /// information available from a detached process is its `pid`. There
- /// is no connection to its `stdin`, `stdout` or `stderr`, nor will
- /// the process' exit code become available when it terminates.
- ///
- /// If `mode` is [ProcessStartMode.detachedWithStdio] a detached
- /// process will be created where the `stdin`, `stdout` and `stderr`
- /// are connected. The creator can communicate with the child through
- /// these. The detached process will keep running even if these
- /// communication channels are closed. The process' exit code will
- /// not become available when it terminated.
- ///
- /// The default value for `mode` is `ProcessStartMode.NORMAL`.
- Future<Process> start(
- List<String> command, {
- String workingDirectory,
- Map<String, String> environment,
- bool includeParentEnvironment = true,
- bool runInShell = false,
- ProcessStartMode mode = ProcessStartMode.normal,
- });
-
- /// Starts a process and runs it non-interactively to completion.
- ///
- /// The first element in [command] will be treated as the executable to run,
- /// with subsequent elements being passed as arguments to the executable.
- ///
- /// Use [workingDirectory] to set the working directory for the process. Note
- /// that the change of directory occurs before executing the process on some
- /// platforms, which may have impact when using relative paths for the
- /// executable and the arguments.
- ///
- /// Use [environment] to set the environment variables for the process. If not
- /// set the environment of the parent process is inherited. Currently, only
- /// US-ASCII environment variables are supported and errors are likely to occur
- /// if an environment variable with code-points outside the US-ASCII range is
- /// passed in.
- ///
- /// If [includeParentEnvironment] is `true`, the process's environment will
- /// include the parent process's environment, with [environment] taking
- /// precedence. Default is `true`.
- ///
- /// If [runInShell] is true, the process will be spawned through a system
- /// shell. On Linux and OS X, `/bin/sh` is used, while
- /// `%WINDIR%\system32\cmd.exe` is used on Windows.
- ///
- /// The encoding used for decoding `stdout` and `stderr` into text is
- /// controlled through [stdoutEncoding] and [stderrEncoding]. The
- /// default encoding is [systemEncoding]. If `null` is used no
- /// decoding will happen and the [ProcessResult] will hold binary
- /// data.
- ///
- /// Returns a `Future<ProcessResult>` that completes with the
- /// result of running the process, i.e., exit code, standard out and
- /// standard in.
- ///
- /// The following code uses `run` to grep for `main` in the
- /// file `test.dart` on Linux.
- ///
- /// ProcessManager mgr = new LocalProcessManager();
- /// mgr.run('grep', ['-i', 'main', 'test.dart']).then((result) {
- /// stdout.write(result.stdout);
- /// stderr.write(result.stderr);
- /// });
- Future<ProcessResult> run(
- List<String> command, {
- String workingDirectory,
- Map<String, String> environment,
- bool includeParentEnvironment = true,
- bool runInShell = false,
- Encoding stdoutEncoding = systemEncoding,
- Encoding stderrEncoding = systemEncoding,
- });
-
- /// Starts a process and runs it to completion. This is a synchronous
- /// call and will block until the child process terminates.
- ///
- /// The arguments are the same as for [run]`.
- ///
- /// Returns a `ProcessResult` with the result of running the process,
- /// i.e., exit code, standard out and standard in.
- ProcessResult runSync(
- List<String> command, {
- String workingDirectory,
- Map<String, String> environment,
- bool includeParentEnvironment = true,
- bool runInShell = false,
- Encoding stdoutEncoding = systemEncoding,
- Encoding stderrEncoding = systemEncoding,
- });
-
- /// Returns `true` if the [executable] exists and if it can be executed.
- bool canRun(String executable, {String workingDirectory});
-
- /// Kills the process with id [pid].
- ///
- /// Where possible, sends the [signal] to the process with id
- /// `pid`. This includes Linux and OS X. The default signal is
- /// [ProcessSignal.sigterm] which will normally terminate the
- /// process.
- ///
- /// On platforms without signal support, including Windows, the call
- /// just terminates the process with id `pid` in a platform specific
- /// way, and the `signal` parameter is ignored.
- ///
- /// Returns `true` if the signal is successfully delivered to the
- /// process. Otherwise the signal could not be sent, usually meaning
- /// that the process is already dead.
- bool killPid(int pid, [ProcessSignal signal = ProcessSignal.SIGTERM]);
-}
-
-/// A process manager that delegates directly to the dart:io Process class.
-class LocalProcessManager implements ProcessManager {
- const LocalProcessManager({
- @visibleForTesting FileSystem fileSystem = const local_fs.LocalFileSystem(),
- @visibleForTesting Platform platform = const LocalPlatform(),
- }) : _platform = platform,
- _fileSystem = fileSystem;
-
- final Platform _platform;
- final FileSystem _fileSystem;
-
- @override
- bool canRun(String executable, {String workingDirectory}) {
- return getExecutablePath(executable, workingDirectory, platform: _platform, fileSystem: _fileSystem) != null;
- }
-
- @override
- bool killPid(int pid, [ProcessSignal signal = ProcessSignal.SIGTERM]) {
- return signal.send(pid);
- }
-
- @override
- Future<ProcessResult> run(List<String> command, {
- String workingDirectory,
- Map<String, String> environment,
- bool includeParentEnvironment = true,
- bool runInShell = false,
- Encoding stdoutEncoding = systemEncoding,
- Encoding stderrEncoding = systemEncoding,
- }) {
- return Process.run(
- sanitizeExecutablePath(_getExecutable(
- command,
- workingDirectory,
- runInShell,
- ), platform: _platform),
- _getArguments(command),
- environment: environment,
- includeParentEnvironment: includeParentEnvironment,
- stdoutEncoding: systemEncoding,
- stderrEncoding: systemEncoding,
- workingDirectory: workingDirectory,
- runInShell: runInShell,
- );
- }
-
- @override
- ProcessResult runSync(List<String> command, {
- String workingDirectory,
- Map<String, String> environment,
- bool includeParentEnvironment = true,
- bool runInShell = false,
- Encoding stdoutEncoding = systemEncoding,
- Encoding stderrEncoding = systemEncoding,
- }) {
- return Process.runSync(
- sanitizeExecutablePath(_getExecutable(
- command,
- workingDirectory,
- runInShell,
- ), platform: _platform),
- _getArguments(command),
- environment: environment,
- includeParentEnvironment: includeParentEnvironment,
- stdoutEncoding: systemEncoding,
- stderrEncoding: systemEncoding,
- workingDirectory: workingDirectory,
- runInShell: runInShell,
- );
- }
-
- @override
- Future<Process> start(
- List<String> command, {
- String workingDirectory,
- Map<String, String> environment,
- bool includeParentEnvironment = true,
- bool runInShell = false,
- ProcessStartMode mode = ProcessStartMode.normal,
- }) {
- return Process.start(
- sanitizeExecutablePath(_getExecutable(
- command,
- workingDirectory,
- runInShell,
- ), platform: _platform),
- _getArguments(command),
- workingDirectory: workingDirectory,
- environment: environment,
- includeParentEnvironment: includeParentEnvironment,
- runInShell: runInShell,
- mode: mode,
- );
- }
-
- String _getExecutable(
- List<String> command,
- String workingDirectory,
- bool runInShell,
- ) {
- final String commandName = command.first.toString();
- if (runInShell) {
- return commandName;
- }
- final String executable = getExecutablePath(commandName, workingDirectory, platform: _platform, fileSystem: _fileSystem);
- if (executable == null) {
- throw ArgumentError('Could not resolve $commandName to executablePath in $workingDirectory');
- }
- return executable;
- }
-
- List<String> _getArguments(
- List<String> command,
- ) {
- return command.skip(1).toList();
- }
-}
-
-/// Sanatizes the executable path on Windows.
-/// https://github.com/dart-lang/sdk/issues/37751
-String sanitizeExecutablePath(String executable, {@required Platform platform }) {
- if (executable.isEmpty) {
- return executable;
- }
- if (!platform.isWindows) {
- return executable;
- }
- if (executable.contains(' ') && !executable.contains('"')) {
- // Use quoted strings to indicate where the file name ends and the arguments begin;
- // otherwise, the file name is ambiguous.
- return '"$executable"';
- }
- return executable;
-}
-
-/// Searches the `PATH` for the executable that [command] is supposed to launch.
-///
-/// This first builds a list of candidate paths where the executable may reside.
-/// If [command] is already an absolute path, then the `PATH` environment
-/// variable will not be consulted, and the specified absolute path will be the
-/// only candidate that is considered.
-///
-/// Once the list of candidate paths has been constructed, this will pick the
-/// first such path that represents an existent file.
-///
-/// Return `null` if there were no viable candidates, meaning the executable
-/// could not be found.
-///
-/// If [platform] is not specified, it will default to the current platform.
-@visibleForTesting
-String getExecutablePath(
- String command,
- String workingDirectory, {
- @required Platform platform,
- @required FileSystem fileSystem,
-}) {
- try {
- workingDirectory ??= fileSystem.currentDirectory.path;
- } on FileSystemException {
- // The `currentDirectory` getter can throw a FileSystemException for example
- // when the process doesn't have read/list permissions in each component of
- // the cwd path. In this case, fall back on '.'.
- workingDirectory ??= '.';
- }
- final String pathSeparator = platform.isWindows ? ';' : ':';
-
- List<String> extensions = <String>[];
- if (platform.isWindows && fileSystem.path.extension(command).isEmpty) {
- extensions = platform.environment['PATHEXT'].split(pathSeparator);
- }
-
- List<String> candidates = <String>[];
- if (command.contains(fileSystem.path.separator)) {
- candidates = _getCandidatePaths(
- command, <String>[workingDirectory], extensions, fileSystem);
- } else {
- final List<String> searchPath = platform.environment['PATH'].split(pathSeparator);
- candidates = _getCandidatePaths(command, searchPath, extensions, fileSystem);
- }
- for (final String path in candidates) {
- if (fileSystem.file(path).existsSync()) {
- return path;
- }
- }
- return null;
-}
-
-/// Returns all possible combinations of `$searchPath\$command.$ext` for
-/// `searchPath` in [searchPaths] and `ext` in [extensions].
-///
-/// If [extensions] is empty, it will just enumerate all
-/// `$searchPath\$command`.
-/// If [command] is an absolute path, it will just enumerate
-/// `$command.$ext`.
-List<String> _getCandidatePaths(
- String command,
- List<String> searchPaths,
- List<String> extensions,
- FileSystem fileSystem,
-) {
- final List<String> withExtensions = extensions.isNotEmpty
- ? extensions.map((String ext) => '$command$ext').toList()
- : <String>[command];
- if (fileSystem.path.isAbsolute(command)) {
- return withExtensions;
- }
- return searchPaths
- .map((String path) =>
- withExtensions.map((String command) => fileSystem.path.join(path, command)))
- .expand((Iterable<String> e) => e)
- .toList()
- .cast<String>();
-}
diff --git a/packages/flutter_tools/lib/src/build_system/build_system.dart b/packages/flutter_tools/lib/src/build_system/build_system.dart
index 1c9a61e..48013e8 100644
--- a/packages/flutter_tools/lib/src/build_system/build_system.dart
+++ b/packages/flutter_tools/lib/src/build_system/build_system.dart
@@ -9,13 +9,13 @@
import 'package:crypto/crypto.dart';
import 'package:meta/meta.dart';
import 'package:pool/pool.dart';
+import 'package:process/process.dart';
import '../artifacts.dart';
import '../base/error_handling_io.dart';
import '../base/file_system.dart';
import '../base/logger.dart';
import '../base/platform.dart';
-import '../base/process.dart';
import '../base/utils.dart';
import '../cache.dart';
import '../convert.dart';
diff --git a/packages/flutter_tools/lib/src/build_system/targets/icon_tree_shaker.dart b/packages/flutter_tools/lib/src/build_system/targets/icon_tree_shaker.dart
index 1bbefca..4eb4dc5 100644
--- a/packages/flutter_tools/lib/src/build_system/targets/icon_tree_shaker.dart
+++ b/packages/flutter_tools/lib/src/build_system/targets/icon_tree_shaker.dart
@@ -5,6 +5,7 @@
// @dart = 2.8
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import 'package:mime/mime.dart' as mime;
import '../../artifacts.dart';
@@ -12,7 +13,6 @@
import '../../base/file_system.dart';
import '../../base/io.dart';
import '../../base/logger.dart';
-import '../../base/process.dart';
import '../../convert.dart';
import '../../devfs.dart';
import '../build_system.dart';
diff --git a/packages/flutter_tools/lib/src/cache.dart b/packages/flutter_tools/lib/src/cache.dart
index 09179f5..8cdd95d 100644
--- a/packages/flutter_tools/lib/src/cache.dart
+++ b/packages/flutter_tools/lib/src/cache.dart
@@ -10,6 +10,7 @@
import 'package:file/memory.dart';
import 'package:meta/meta.dart';
import 'package:package_config/package_config.dart';
+import 'package:process/process.dart';
import 'android/gradle_utils.dart';
import 'base/common.dart';
diff --git a/packages/flutter_tools/lib/src/commands/analyze.dart b/packages/flutter_tools/lib/src/commands/analyze.dart
index 1012bbb..8b014f5 100644
--- a/packages/flutter_tools/lib/src/commands/analyze.dart
+++ b/packages/flutter_tools/lib/src/commands/analyze.dart
@@ -5,12 +5,12 @@
// @dart = 2.8
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import '../artifacts.dart';
import '../base/file_system.dart';
import '../base/logger.dart';
import '../base/platform.dart';
-import '../base/process.dart';
import '../base/terminal.dart';
import '../runner/flutter_command.dart';
import 'analyze_continuously.dart';
diff --git a/packages/flutter_tools/lib/src/commands/analyze_base.dart b/packages/flutter_tools/lib/src/commands/analyze_base.dart
index 3efc142..b9ee108 100644
--- a/packages/flutter_tools/lib/src/commands/analyze_base.dart
+++ b/packages/flutter_tools/lib/src/commands/analyze_base.dart
@@ -6,6 +6,7 @@
import 'package:args/args.dart';
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import 'package:yaml/yaml.dart' as yaml;
import '../artifacts.dart';
@@ -13,7 +14,6 @@
import '../base/file_system.dart';
import '../base/logger.dart';
import '../base/platform.dart';
-import '../base/process.dart';
import '../base/terminal.dart';
import '../base/utils.dart';
import '../cache.dart';
diff --git a/packages/flutter_tools/lib/src/commands/analyze_continuously.dart b/packages/flutter_tools/lib/src/commands/analyze_continuously.dart
index 4ad30b0..84aa07e 100644
--- a/packages/flutter_tools/lib/src/commands/analyze_continuously.dart
+++ b/packages/flutter_tools/lib/src/commands/analyze_continuously.dart
@@ -6,6 +6,7 @@
import 'package:args/args.dart';
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import '../artifacts.dart';
import '../base/common.dart';
@@ -13,7 +14,6 @@
import '../base/io.dart';
import '../base/logger.dart';
import '../base/platform.dart';
-import '../base/process.dart';
import '../base/terminal.dart';
import '../dart/analysis.dart';
import 'analyze_base.dart';
diff --git a/packages/flutter_tools/lib/src/commands/analyze_once.dart b/packages/flutter_tools/lib/src/commands/analyze_once.dart
index dbc80aa..6a55909 100644
--- a/packages/flutter_tools/lib/src/commands/analyze_once.dart
+++ b/packages/flutter_tools/lib/src/commands/analyze_once.dart
@@ -8,13 +8,13 @@
import 'package:args/args.dart';
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import '../artifacts.dart';
import '../base/common.dart';
import '../base/file_system.dart';
import '../base/logger.dart';
import '../base/platform.dart';
-import '../base/process.dart';
import '../base/terminal.dart';
import '../dart/analysis.dart';
import 'analyze_base.dart';
diff --git a/packages/flutter_tools/lib/src/commands/downgrade.dart b/packages/flutter_tools/lib/src/commands/downgrade.dart
index 88bbf55..71dfec2 100644
--- a/packages/flutter_tools/lib/src/commands/downgrade.dart
+++ b/packages/flutter_tools/lib/src/commands/downgrade.dart
@@ -4,6 +4,8 @@
// @dart = 2.8
+import 'package:process/process.dart';
+
import '../base/common.dart';
import '../base/file_system.dart';
import '../base/io.dart';
diff --git a/packages/flutter_tools/lib/src/compile.dart b/packages/flutter_tools/lib/src/compile.dart
index 0a5095a..76923c2 100644
--- a/packages/flutter_tools/lib/src/compile.dart
+++ b/packages/flutter_tools/lib/src/compile.dart
@@ -8,6 +8,7 @@
import 'package:meta/meta.dart';
import 'package:package_config/package_config.dart';
+import 'package:process/process.dart';
import 'package:usage/uuid/uuid.dart';
import 'artifacts.dart';
@@ -16,7 +17,6 @@
import 'base/io.dart';
import 'base/logger.dart';
import 'base/platform.dart';
-import 'base/process.dart';
import 'build_info.dart';
import 'convert.dart';
diff --git a/packages/flutter_tools/lib/src/context_runner.dart b/packages/flutter_tools/lib/src/context_runner.dart
index bb3139b..ae436f5 100644
--- a/packages/flutter_tools/lib/src/context_runner.dart
+++ b/packages/flutter_tools/lib/src/context_runner.dart
@@ -6,6 +6,8 @@
import 'dart:async';
+import 'package:process/process.dart';
+
import 'android/android_sdk.dart';
import 'android/android_studio.dart';
import 'android/android_workflow.dart';
diff --git a/packages/flutter_tools/lib/src/dart/analysis.dart b/packages/flutter_tools/lib/src/dart/analysis.dart
index cc05e91..ef873b2 100644
--- a/packages/flutter_tools/lib/src/dart/analysis.dart
+++ b/packages/flutter_tools/lib/src/dart/analysis.dart
@@ -8,13 +8,13 @@
import 'dart:math' as math;
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import '../base/common.dart';
import '../base/file_system.dart';
import '../base/io.dart';
import '../base/logger.dart';
import '../base/platform.dart';
-import '../base/process.dart';
import '../base/terminal.dart';
import '../base/utils.dart';
import '../convert.dart';
diff --git a/packages/flutter_tools/lib/src/dart/pub.dart b/packages/flutter_tools/lib/src/dart/pub.dart
index 61c9c44..535a08b 100644
--- a/packages/flutter_tools/lib/src/dart/pub.dart
+++ b/packages/flutter_tools/lib/src/dart/pub.dart
@@ -6,6 +6,7 @@
import 'package:meta/meta.dart';
import 'package:package_config/package_config.dart';
+import 'package:process/process.dart';
import '../base/bot_detector.dart';
import '../base/common.dart';
diff --git a/packages/flutter_tools/lib/src/desktop_device.dart b/packages/flutter_tools/lib/src/desktop_device.dart
index 20f7fac..0a8d1b9 100644
--- a/packages/flutter_tools/lib/src/desktop_device.dart
+++ b/packages/flutter_tools/lib/src/desktop_device.dart
@@ -7,6 +7,7 @@
import 'dart:async';
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import 'application_package.dart';
import 'base/common.dart';
@@ -14,7 +15,6 @@
import 'base/io.dart';
import 'base/logger.dart';
import 'base/os.dart';
-import 'base/process.dart';
import 'build_info.dart';
import 'convert.dart';
import 'devfs.dart';
diff --git a/packages/flutter_tools/lib/src/device.dart b/packages/flutter_tools/lib/src/device.dart
index 1c6d661..d6bbc42 100644
--- a/packages/flutter_tools/lib/src/device.dart
+++ b/packages/flutter_tools/lib/src/device.dart
@@ -8,6 +8,7 @@
import 'dart:math' as math;
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import 'package:vm_service/vm_service.dart' as vm_service;
import 'android/android_device_discovery.dart';
@@ -24,7 +25,6 @@
import 'base/logger.dart';
import 'base/os.dart';
import 'base/platform.dart';
-import 'base/process.dart';
import 'base/terminal.dart';
import 'base/user_messages.dart' hide userMessages;
import 'base/utils.dart';
diff --git a/packages/flutter_tools/lib/src/devtools_launcher.dart b/packages/flutter_tools/lib/src/devtools_launcher.dart
index 3562058..791f577 100644
--- a/packages/flutter_tools/lib/src/devtools_launcher.dart
+++ b/packages/flutter_tools/lib/src/devtools_launcher.dart
@@ -8,11 +8,11 @@
import 'package:http/http.dart' as http;
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import 'base/io.dart' as io;
import 'base/logger.dart';
import 'base/platform.dart';
-import 'base/process.dart';
import 'convert.dart';
import 'persistent_tool_state.dart';
import 'resident_runner.dart';
diff --git a/packages/flutter_tools/lib/src/doctor.dart b/packages/flutter_tools/lib/src/doctor.dart
index 44b8590..badb294 100644
--- a/packages/flutter_tools/lib/src/doctor.dart
+++ b/packages/flutter_tools/lib/src/doctor.dart
@@ -5,6 +5,7 @@
// @dart = 2.8
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import 'android/android_studio_validator.dart';
import 'android/android_workflow.dart';
@@ -15,7 +16,6 @@
import 'base/logger.dart';
import 'base/os.dart';
import 'base/platform.dart';
-import 'base/process.dart';
import 'base/terminal.dart';
import 'base/user_messages.dart';
import 'base/utils.dart';
diff --git a/packages/flutter_tools/lib/src/emulator.dart b/packages/flutter_tools/lib/src/emulator.dart
index de70d4a..e825ea2 100644
--- a/packages/flutter_tools/lib/src/emulator.dart
+++ b/packages/flutter_tools/lib/src/emulator.dart
@@ -7,6 +7,7 @@
import 'dart:math' as math;
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import 'android/android_emulator.dart';
import 'android/android_sdk.dart';
diff --git a/packages/flutter_tools/lib/src/fuchsia/fuchsia_dev_finder.dart b/packages/flutter_tools/lib/src/fuchsia/fuchsia_dev_finder.dart
index 44b6b91..4086dfc 100644
--- a/packages/flutter_tools/lib/src/fuchsia/fuchsia_dev_finder.dart
+++ b/packages/flutter_tools/lib/src/fuchsia/fuchsia_dev_finder.dart
@@ -5,6 +5,7 @@
// @dart = 2.8
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import '../base/common.dart';
import '../base/logger.dart';
diff --git a/packages/flutter_tools/lib/src/globals.dart b/packages/flutter_tools/lib/src/globals.dart
index 7a04cce..9288e75 100644
--- a/packages/flutter_tools/lib/src/globals.dart
+++ b/packages/flutter_tools/lib/src/globals.dart
@@ -4,6 +4,8 @@
// @dart = 2.8
+import 'package:process/process.dart';
+
import 'android/android_sdk.dart';
import 'android/android_studio.dart';
import 'artifacts.dart';
@@ -80,8 +82,10 @@
platform: platform,
);
+const ProcessManager _kLocalProcessManager = LocalProcessManager();
+
/// The active process manager.
-ProcessManager get processManager => context.get<ProcessManager>();
+ProcessManager get processManager => context.get<ProcessManager>() ?? _kLocalProcessManager;
ProcessUtils get processUtils => context.get<ProcessUtils>();
const Platform _kLocalPlatform = LocalPlatform();
diff --git a/packages/flutter_tools/lib/src/ios/code_signing.dart b/packages/flutter_tools/lib/src/ios/code_signing.dart
index 22e2fce..20708d1 100644
--- a/packages/flutter_tools/lib/src/ios/code_signing.dart
+++ b/packages/flutter_tools/lib/src/ios/code_signing.dart
@@ -5,6 +5,7 @@
// @dart = 2.8
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import '../application_package.dart';
import '../base/common.dart';
diff --git a/packages/flutter_tools/lib/src/ios/devices.dart b/packages/flutter_tools/lib/src/ios/devices.dart
index e29d606..a66f947 100644
--- a/packages/flutter_tools/lib/src/ios/devices.dart
+++ b/packages/flutter_tools/lib/src/ios/devices.dart
@@ -7,6 +7,7 @@
import 'dart:async';
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import 'package:vm_service/vm_service.dart' as vm_service;
import '../application_package.dart';
@@ -16,7 +17,6 @@
import '../base/logger.dart';
import '../base/os.dart';
import '../base/platform.dart';
-import '../base/process.dart';
import '../base/utils.dart';
import '../build_info.dart';
import '../convert.dart';
diff --git a/packages/flutter_tools/lib/src/ios/ios_deploy.dart b/packages/flutter_tools/lib/src/ios/ios_deploy.dart
index 55c8cec..9980d77 100644
--- a/packages/flutter_tools/lib/src/ios/ios_deploy.dart
+++ b/packages/flutter_tools/lib/src/ios/ios_deploy.dart
@@ -7,6 +7,7 @@
import 'dart:async';
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import '../artifacts.dart';
import '../base/common.dart';
diff --git a/packages/flutter_tools/lib/src/ios/iproxy.dart b/packages/flutter_tools/lib/src/ios/iproxy.dart
index e712b6f..6ce9455 100644
--- a/packages/flutter_tools/lib/src/ios/iproxy.dart
+++ b/packages/flutter_tools/lib/src/ios/iproxy.dart
@@ -5,6 +5,7 @@
// @dart = 2.8
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import '../base/io.dart';
import '../base/logger.dart';
diff --git a/packages/flutter_tools/lib/src/ios/mac.dart b/packages/flutter_tools/lib/src/ios/mac.dart
index e4bca0f..9aeaf00 100644
--- a/packages/flutter_tools/lib/src/ios/mac.dart
+++ b/packages/flutter_tools/lib/src/ios/mac.dart
@@ -5,6 +5,7 @@
// @dart = 2.8
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import '../application_package.dart';
import '../artifacts.dart';
diff --git a/packages/flutter_tools/lib/src/ios/plist_parser.dart b/packages/flutter_tools/lib/src/ios/plist_parser.dart
index a3319a9..46efe26 100644
--- a/packages/flutter_tools/lib/src/ios/plist_parser.dart
+++ b/packages/flutter_tools/lib/src/ios/plist_parser.dart
@@ -5,6 +5,7 @@
// @dart = 2.8
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import '../base/file_system.dart';
import '../base/io.dart';
diff --git a/packages/flutter_tools/lib/src/ios/simulators.dart b/packages/flutter_tools/lib/src/ios/simulators.dart
index 800f4e8..05d4a1d 100644
--- a/packages/flutter_tools/lib/src/ios/simulators.dart
+++ b/packages/flutter_tools/lib/src/ios/simulators.dart
@@ -8,6 +8,7 @@
import 'dart:math' as math;
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import '../application_package.dart';
import '../base/common.dart';
diff --git a/packages/flutter_tools/lib/src/ios/xcodeproj.dart b/packages/flutter_tools/lib/src/ios/xcodeproj.dart
index 56cb7d7..88d1280 100644
--- a/packages/flutter_tools/lib/src/ios/xcodeproj.dart
+++ b/packages/flutter_tools/lib/src/ios/xcodeproj.dart
@@ -6,6 +6,7 @@
import 'package:file/memory.dart';
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import '../artifacts.dart';
import '../base/common.dart';
diff --git a/packages/flutter_tools/lib/src/linux/linux_device.dart b/packages/flutter_tools/lib/src/linux/linux_device.dart
index 07ccb7f..e122cea 100644
--- a/packages/flutter_tools/lib/src/linux/linux_device.dart
+++ b/packages/flutter_tools/lib/src/linux/linux_device.dart
@@ -5,12 +5,12 @@
// @dart = 2.8
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import '../base/file_system.dart';
import '../base/logger.dart';
import '../base/os.dart';
import '../base/platform.dart';
-import '../base/process.dart';
import '../build_info.dart';
import '../desktop_device.dart';
import '../device.dart';
diff --git a/packages/flutter_tools/lib/src/linux/linux_doctor.dart b/packages/flutter_tools/lib/src/linux/linux_doctor.dart
index 6573e73..73fa32f 100644
--- a/packages/flutter_tools/lib/src/linux/linux_doctor.dart
+++ b/packages/flutter_tools/lib/src/linux/linux_doctor.dart
@@ -5,9 +5,9 @@
// @dart = 2.8
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import '../base/io.dart';
-import '../base/process.dart';
import '../base/user_messages.dart';
import '../base/version.dart';
import '../doctor.dart';
diff --git a/packages/flutter_tools/lib/src/macos/cocoapods.dart b/packages/flutter_tools/lib/src/macos/cocoapods.dart
index 39aeb55..de01064 100644
--- a/packages/flutter_tools/lib/src/macos/cocoapods.dart
+++ b/packages/flutter_tools/lib/src/macos/cocoapods.dart
@@ -6,6 +6,7 @@
import 'package:file/file.dart';
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import '../base/common.dart';
import '../base/error_handling_io.dart';
diff --git a/packages/flutter_tools/lib/src/macos/macos_device.dart b/packages/flutter_tools/lib/src/macos/macos_device.dart
index 07f0fcb..175255f 100644
--- a/packages/flutter_tools/lib/src/macos/macos_device.dart
+++ b/packages/flutter_tools/lib/src/macos/macos_device.dart
@@ -5,13 +5,13 @@
// @dart = 2.8
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import '../base/file_system.dart';
import '../base/io.dart';
import '../base/logger.dart';
import '../base/os.dart';
import '../base/platform.dart';
-import '../base/process.dart';
import '../build_info.dart';
import '../desktop_device.dart';
import '../device.dart';
diff --git a/packages/flutter_tools/lib/src/macos/xcode.dart b/packages/flutter_tools/lib/src/macos/xcode.dart
index 57ba8de..034b0d9 100644
--- a/packages/flutter_tools/lib/src/macos/xcode.dart
+++ b/packages/flutter_tools/lib/src/macos/xcode.dart
@@ -8,6 +8,7 @@
import 'package:file/memory.dart';
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import '../artifacts.dart';
import '../base/common.dart';
diff --git a/packages/flutter_tools/lib/src/test/web_test_compiler.dart b/packages/flutter_tools/lib/src/test/web_test_compiler.dart
index 53dad37..5ee47bf 100644
--- a/packages/flutter_tools/lib/src/test/web_test_compiler.dart
+++ b/packages/flutter_tools/lib/src/test/web_test_compiler.dart
@@ -6,6 +6,7 @@
import 'package:meta/meta.dart';
import 'package:package_config/package_config.dart';
+import 'package:process/process.dart';
import '../artifacts.dart';
import '../base/common.dart';
@@ -13,7 +14,6 @@
import '../base/file_system.dart';
import '../base/logger.dart';
import '../base/platform.dart';
-import '../base/process.dart';
import '../build_info.dart';
import '../bundle.dart';
import '../compile.dart';
diff --git a/packages/flutter_tools/lib/src/tester/flutter_tester.dart b/packages/flutter_tools/lib/src/tester/flutter_tester.dart
index 8270922..d99e7ef 100644
--- a/packages/flutter_tools/lib/src/tester/flutter_tester.dart
+++ b/packages/flutter_tools/lib/src/tester/flutter_tester.dart
@@ -7,6 +7,7 @@
import 'dart:async';
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import '../application_package.dart';
import '../artifacts.dart';
@@ -14,7 +15,6 @@
import '../base/file_system.dart';
import '../base/io.dart';
import '../base/logger.dart';
-import '../base/process.dart';
import '../build_info.dart';
import '../bundle.dart';
import '../convert.dart';
diff --git a/packages/flutter_tools/lib/src/web/chrome.dart b/packages/flutter_tools/lib/src/web/chrome.dart
index 0e44884..427f1d8 100644
--- a/packages/flutter_tools/lib/src/web/chrome.dart
+++ b/packages/flutter_tools/lib/src/web/chrome.dart
@@ -7,6 +7,7 @@
import 'dart:async';
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
import '../base/common.dart';
@@ -15,7 +16,6 @@
import '../base/logger.dart';
import '../base/os.dart';
import '../base/platform.dart';
-import '../base/process.dart';
import '../convert.dart';
/// An environment variable used to override the location of Google Chrome.
diff --git a/packages/flutter_tools/lib/src/web/web_device.dart b/packages/flutter_tools/lib/src/web/web_device.dart
index 044a73b..df30ece 100644
--- a/packages/flutter_tools/lib/src/web/web_device.dart
+++ b/packages/flutter_tools/lib/src/web/web_device.dart
@@ -5,6 +5,7 @@
// @dart = 2.8
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import '../application_package.dart';
import '../base/file_system.dart';
@@ -12,7 +13,6 @@
import '../base/logger.dart';
import '../base/os.dart';
import '../base/platform.dart';
-import '../base/process.dart';
import '../base/version.dart';
import '../build_info.dart';
import '../device.dart';
diff --git a/packages/flutter_tools/lib/src/windows/visual_studio.dart b/packages/flutter_tools/lib/src/windows/visual_studio.dart
index cf2f9eb..0aedcbb 100644
--- a/packages/flutter_tools/lib/src/windows/visual_studio.dart
+++ b/packages/flutter_tools/lib/src/windows/visual_studio.dart
@@ -5,6 +5,7 @@
// @dart = 2.8
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import '../base/file_system.dart';
import '../base/io.dart';
diff --git a/packages/flutter_tools/lib/src/windows/windows_device.dart b/packages/flutter_tools/lib/src/windows/windows_device.dart
index c67c8dd..4798029 100644
--- a/packages/flutter_tools/lib/src/windows/windows_device.dart
+++ b/packages/flutter_tools/lib/src/windows/windows_device.dart
@@ -5,11 +5,11 @@
// @dart = 2.8
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import '../base/file_system.dart';
import '../base/logger.dart';
import '../base/os.dart';
-import '../base/process.dart';
import '../build_info.dart';
import '../desktop_device.dart';
import '../device.dart';
diff --git a/packages/flutter_tools/test/commands.shard/hermetic/analyze_continuously_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/analyze_continuously_test.dart
index cb0950e..38d8086 100644
--- a/packages/flutter_tools/test/commands.shard/hermetic/analyze_continuously_test.dart
+++ b/packages/flutter_tools/test/commands.shard/hermetic/analyze_continuously_test.dart
@@ -13,7 +13,6 @@
import 'package:flutter_tools/src/base/io.dart';
import 'package:flutter_tools/src/base/logger.dart';
import 'package:flutter_tools/src/base/platform.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/base/terminal.dart';
import 'package:flutter_tools/src/cache.dart';
import 'package:flutter_tools/src/commands/analyze.dart';
@@ -21,6 +20,7 @@
import 'package:flutter_tools/src/dart/pub.dart';
import 'package:flutter_tools/src/globals.dart' as globals;
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import '../../src/common.dart';
import '../../src/context.dart';
@@ -41,10 +41,7 @@
setUp(() {
fileSystem = LocalFileSystem.instance;
platform = const LocalPlatform();
- processManager = LocalProcessManager(
- fileSystem: fileSystem,
- platform: platform,
- );
+ processManager = const LocalProcessManager();
terminal = AnsiTerminal(platform: platform, stdio: Stdio());
logger = BufferLogger(outputPreferences: OutputPreferences.test(), terminal: terminal);
tempDir = fileSystem.systemTempDirectory.createTempSync('flutter_analysis_test.');
diff --git a/packages/flutter_tools/test/commands.shard/hermetic/attach_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/attach_test.dart
index 03bb779..9277393 100644
--- a/packages/flutter_tools/test/commands.shard/hermetic/attach_test.dart
+++ b/packages/flutter_tools/test/commands.shard/hermetic/attach_test.dart
@@ -26,6 +26,7 @@
import 'package:flutter_tools/src/vmservice.dart';
import 'package:meta/meta.dart';
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import 'package:vm_service/vm_service.dart' as vm_service;
import '../../src/common.dart';
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 4efecf7..0ec608b 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
@@ -18,6 +18,7 @@
import 'package:flutter_tools/src/project.dart';
import 'package:meta/meta.dart';
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import '../../src/common.dart';
import '../../src/context.dart';
diff --git a/packages/flutter_tools/test/commands.shard/hermetic/build_ipa_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/build_ipa_test.dart
index 820dbe8..1f459c0 100644
--- a/packages/flutter_tools/test/commands.shard/hermetic/build_ipa_test.dart
+++ b/packages/flutter_tools/test/commands.shard/hermetic/build_ipa_test.dart
@@ -8,11 +8,11 @@
import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/base/logger.dart';
import 'package:flutter_tools/src/base/platform.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/cache.dart';
import 'package:flutter_tools/src/commands/build.dart';
import 'package:flutter_tools/src/ios/xcodeproj.dart';
import 'package:flutter_tools/src/reporting/reporting.dart';
+import 'package:process/process.dart';
import '../../src/common.dart';
import '../../src/context.dart';
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 051d484..e614b93 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
@@ -9,7 +9,6 @@
import 'package:file_testing/file_testing.dart';
import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/base/platform.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/base/utils.dart';
import 'package:flutter_tools/src/cache.dart';
import 'package:flutter_tools/src/cmake.dart';
@@ -18,6 +17,7 @@
import 'package:flutter_tools/src/features.dart';
import 'package:flutter_tools/src/project.dart';
import 'package:flutter_tools/src/reporting/reporting.dart';
+import 'package:process/process.dart';
import '../../src/common.dart';
import '../../src/context.dart';
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 2ffe2d5..72c15d0 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
@@ -12,7 +12,6 @@
import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/base/logger.dart';
import 'package:flutter_tools/src/base/platform.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/build_info.dart';
import 'package:flutter_tools/src/cache.dart';
import 'package:flutter_tools/src/commands/build.dart';
@@ -21,6 +20,7 @@
import 'package:flutter_tools/src/ios/xcodeproj.dart';
import 'package:flutter_tools/src/project.dart';
import 'package:flutter_tools/src/reporting/reporting.dart';
+import 'package:process/process.dart';
import '../../src/common.dart';
import '../../src/context.dart';
diff --git a/packages/flutter_tools/test/commands.shard/hermetic/build_web_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/build_web_test.dart
index 96a5e27..d5ac8d6 100644
--- a/packages/flutter_tools/test/commands.shard/hermetic/build_web_test.dart
+++ b/packages/flutter_tools/test/commands.shard/hermetic/build_web_test.dart
@@ -8,7 +8,6 @@
import 'package:file/memory.dart';
import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/base/platform.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/build_info.dart';
import 'package:flutter_tools/src/build_system/build_system.dart';
import 'package:flutter_tools/src/cache.dart';
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 ffab943..06b06a3 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
@@ -8,13 +8,13 @@
import 'package:file_testing/file_testing.dart';
import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/base/platform.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/cache.dart';
import 'package:flutter_tools/src/commands/build_windows.dart';
import 'package:flutter_tools/src/features.dart';
import 'package:flutter_tools/src/reporting/reporting.dart';
import 'package:flutter_tools/src/windows/visual_studio.dart';
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import '../../src/common.dart';
import '../../src/context.dart';
diff --git a/packages/flutter_tools/test/commands.shard/hermetic/clean_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/clean_test.dart
index 4c800ed..fbdbffe 100644
--- a/packages/flutter_tools/test/commands.shard/hermetic/clean_test.dart
+++ b/packages/flutter_tools/test/commands.shard/hermetic/clean_test.dart
@@ -9,12 +9,12 @@
import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/base/logger.dart';
import 'package:flutter_tools/src/base/platform.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/commands/clean.dart';
import 'package:flutter_tools/src/ios/xcodeproj.dart';
import 'package:flutter_tools/src/macos/xcode.dart';
import 'package:flutter_tools/src/project.dart';
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import '../../src/common.dart';
import '../../src/context.dart';
diff --git a/packages/flutter_tools/test/commands.shard/hermetic/devices_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/devices_test.dart
index 7462be9..42b8942 100644
--- a/packages/flutter_tools/test/commands.shard/hermetic/devices_test.dart
+++ b/packages/flutter_tools/test/commands.shard/hermetic/devices_test.dart
@@ -8,11 +8,11 @@
import 'package:flutter_tools/src/android/android_sdk.dart';
import 'package:flutter_tools/src/artifacts.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/cache.dart';
import 'package:flutter_tools/src/commands/devices.dart';
import 'package:flutter_tools/src/device.dart';
import 'package:flutter_tools/src/globals.dart' as globals;
+import 'package:process/process.dart';
import '../../src/common.dart';
import '../../src/context.dart';
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 0fadb98..39fd9fc 100644
--- a/packages/flutter_tools/test/commands.shard/hermetic/doctor_test.dart
+++ b/packages/flutter_tools/test/commands.shard/hermetic/doctor_test.dart
@@ -14,7 +14,6 @@
import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/base/logger.dart';
import 'package:flutter_tools/src/base/platform.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/base/terminal.dart';
import 'package:flutter_tools/src/base/user_messages.dart';
import 'package:flutter_tools/src/build_info.dart';
@@ -30,6 +29,7 @@
import 'package:flutter_tools/src/vscode/vscode_validator.dart';
import 'package:flutter_tools/src/web/workflow.dart';
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import 'package:fake_async/fake_async.dart';
import '../../src/common.dart';
diff --git a/packages/flutter_tools/test/commands.shard/hermetic/downgrade_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/downgrade_test.dart
index fbd10c2..7193904 100644
--- a/packages/flutter_tools/test/commands.shard/hermetic/downgrade_test.dart
+++ b/packages/flutter_tools/test/commands.shard/hermetic/downgrade_test.dart
@@ -8,7 +8,6 @@
import 'package:file/memory.dart';
import 'package:flutter_tools/src/base/io.dart';
import 'package:flutter_tools/src/base/logger.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/base/terminal.dart';
import 'package:flutter_tools/src/cache.dart';
import 'package:flutter_tools/src/commands/downgrade.dart';
diff --git a/packages/flutter_tools/test/commands.shard/hermetic/pub_get_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/pub_get_test.dart
index 746bf1a..b73360e 100644
--- a/packages/flutter_tools/test/commands.shard/hermetic/pub_get_test.dart
+++ b/packages/flutter_tools/test/commands.shard/hermetic/pub_get_test.dart
@@ -7,7 +7,6 @@
import 'package:args/command_runner.dart';
import 'package:file/memory.dart';
import 'package:flutter_tools/src/base/file_system.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/cache.dart';
import 'package:flutter_tools/src/commands/packages.dart';
import 'package:flutter_tools/src/dart/pub.dart';
diff --git a/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart
index f10497b..54d64f9 100644
--- a/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart
+++ b/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart
@@ -15,7 +15,6 @@
import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/base/io.dart';
import 'package:flutter_tools/src/base/logger.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/base/user_messages.dart';
import 'package:flutter_tools/src/build_info.dart';
import 'package:flutter_tools/src/cache.dart';
diff --git a/packages/flutter_tools/test/commands.shard/hermetic/shell_completion_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/shell_completion_test.dart
index d727099..fbc2e9d 100644
--- a/packages/flutter_tools/test/commands.shard/hermetic/shell_completion_test.dart
+++ b/packages/flutter_tools/test/commands.shard/hermetic/shell_completion_test.dart
@@ -9,9 +9,9 @@
import 'package:flutter_tools/src/base/context.dart';
import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/base/io.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/cache.dart';
import 'package:flutter_tools/src/commands/shell_completion.dart';
+import 'package:process/process.dart';
import 'package:flutter_tools/src/globals.dart' as globals;
import '../../src/common.dart';
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 ffcdc26..84ff16e 100644
--- a/packages/flutter_tools/test/commands.shard/hermetic/test_test.dart
+++ b/packages/flutter_tools/test/commands.shard/hermetic/test_test.dart
@@ -10,7 +10,6 @@
import 'package:file/memory.dart';
import 'package:flutter_tools/src/base/common.dart';
import 'package:flutter_tools/src/base/file_system.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/build_info.dart';
import 'package:flutter_tools/src/cache.dart';
import 'package:flutter_tools/src/commands/test.dart';
@@ -20,6 +19,7 @@
import 'package:flutter_tools/src/test/test_wrapper.dart';
import 'package:flutter_tools/src/test/watcher.dart';
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import '../../src/common.dart';
import '../../src/context.dart';
diff --git a/packages/flutter_tools/test/commands.shard/permeable/analyze_once_test.dart b/packages/flutter_tools/test/commands.shard/permeable/analyze_once_test.dart
index bedf889..b2857bb 100644
--- a/packages/flutter_tools/test/commands.shard/permeable/analyze_once_test.dart
+++ b/packages/flutter_tools/test/commands.shard/permeable/analyze_once_test.dart
@@ -5,7 +5,6 @@
// @dart = 2.8
import 'package:flutter_tools/src/base/error_handling_io.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/base/user_messages.dart';
import 'package:flutter_tools/src/globals.dart' as globals;
import 'package:flutter_tools/src/artifacts.dart';
@@ -18,6 +17,7 @@
import 'package:flutter_tools/src/cache.dart';
import 'package:flutter_tools/src/commands/analyze.dart';
import 'package:flutter_tools/src/runner/flutter_command.dart';
+import 'package:process/process.dart';
import '../../src/common.dart';
import '../../src/context.dart';
@@ -108,13 +108,10 @@
setUpAll(() {
Cache.disableLocking();
+ processManager = const LocalProcessManager();
platform = const LocalPlatform();
terminal = AnsiTerminal(platform: platform, stdio: Stdio());
fileSystem = LocalFileSystem.instance;
- processManager = LocalProcessManager(
- platform: platform,
- fileSystem: fileSystem,
- );
logger = BufferLogger.test();
analyzerSeparator = platform.isWindows ? '-' : '•';
artifacts = CachedArtifacts(
diff --git a/packages/flutter_tools/test/commands.shard/permeable/build_aar_test.dart b/packages/flutter_tools/test/commands.shard/permeable/build_aar_test.dart
index d5f4423..4a857bc 100644
--- a/packages/flutter_tools/test/commands.shard/permeable/build_aar_test.dart
+++ b/packages/flutter_tools/test/commands.shard/permeable/build_aar_test.dart
@@ -10,7 +10,6 @@
import 'package:flutter_tools/src/android/android_builder.dart';
import 'package:flutter_tools/src/android/android_sdk.dart';
import 'package:flutter_tools/src/base/file_system.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/build_info.dart';
import 'package:flutter_tools/src/cache.dart';
import 'package:flutter_tools/src/commands/build_aar.dart';
@@ -18,6 +17,7 @@
import 'package:flutter_tools/src/reporting/reporting.dart';
import 'package:flutter_tools/src/globals.dart' as globals;
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import '../../src/android_common.dart';
import '../../src/common.dart';
diff --git a/packages/flutter_tools/test/commands.shard/permeable/build_apk_test.dart b/packages/flutter_tools/test/commands.shard/permeable/build_apk_test.dart
index 8a685b5..4984b8b 100644
--- a/packages/flutter_tools/test/commands.shard/permeable/build_apk_test.dart
+++ b/packages/flutter_tools/test/commands.shard/permeable/build_apk_test.dart
@@ -11,7 +11,6 @@
import 'package:flutter_tools/src/android/android_sdk.dart';
import 'package:flutter_tools/src/base/context.dart';
import 'package:flutter_tools/src/base/file_system.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/cache.dart';
import 'package:flutter_tools/src/commands/build_apk.dart';
@@ -19,6 +18,7 @@
import 'package:flutter_tools/src/reporting/reporting.dart';
import 'package:flutter_tools/src/globals.dart' as globals;
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import '../../src/android_common.dart';
import '../../src/common.dart';
diff --git a/packages/flutter_tools/test/commands.shard/permeable/build_appbundle_test.dart b/packages/flutter_tools/test/commands.shard/permeable/build_appbundle_test.dart
index 34e1482..9fe51a9 100644
--- a/packages/flutter_tools/test/commands.shard/permeable/build_appbundle_test.dart
+++ b/packages/flutter_tools/test/commands.shard/permeable/build_appbundle_test.dart
@@ -17,6 +17,7 @@
import 'package:flutter_tools/src/project.dart';
import 'package:flutter_tools/src/reporting/reporting.dart';
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import '../../src/android_common.dart';
import '../../src/common.dart';
diff --git a/packages/flutter_tools/test/commands.shard/permeable/build_bundle_test.dart b/packages/flutter_tools/test/commands.shard/permeable/build_bundle_test.dart
index ad387a6..d0452f0 100644
--- a/packages/flutter_tools/test/commands.shard/permeable/build_bundle_test.dart
+++ b/packages/flutter_tools/test/commands.shard/permeable/build_bundle_test.dart
@@ -7,7 +7,6 @@
import 'package:args/command_runner.dart';
import 'package:file/memory.dart';
import 'package:flutter_tools/src/base/file_system.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/build_system/build_system.dart';
import 'package:flutter_tools/src/build_system/targets/common.dart';
import 'package:flutter_tools/src/build_system/targets/icon_tree_shaker.dart';
@@ -17,6 +16,7 @@
import 'package:flutter_tools/src/features.dart';
import 'package:flutter_tools/src/reporting/reporting.dart';
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import 'package:flutter_tools/src/globals.dart' as globals;
import '../../src/common.dart';
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 af049dd..4db25b0 100755
--- a/packages/flutter_tools/test/commands.shard/permeable/create_test.dart
+++ b/packages/flutter_tools/test/commands.shard/permeable/create_test.dart
@@ -16,7 +16,6 @@
import 'package:flutter_tools/src/base/logger.dart';
import 'package:flutter_tools/src/base/net.dart';
import 'package:flutter_tools/src/base/platform.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/build_info.dart';
import 'package:flutter_tools/src/cache.dart';
import 'package:flutter_tools/src/commands/create.dart';
@@ -26,6 +25,7 @@
import 'package:flutter_tools/src/project.dart';
import 'package:flutter_tools/src/version.dart';
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import 'package:pub_semver/pub_semver.dart';
import 'package:pubspec_parse/pubspec_parse.dart';
diff --git a/packages/flutter_tools/test/commands.shard/permeable/packages_test.dart b/packages/flutter_tools/test/commands.shard/permeable/packages_test.dart
index 56623d4..f34b953 100644
--- a/packages/flutter_tools/test/commands.shard/permeable/packages_test.dart
+++ b/packages/flutter_tools/test/commands.shard/permeable/packages_test.dart
@@ -11,11 +11,11 @@
import 'package:flutter_tools/src/base/error_handling_io.dart';
import 'package:flutter_tools/src/base/file_system.dart' hide IOSink;
import 'package:flutter_tools/src/base/io.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/cache.dart';
import 'package:flutter_tools/src/commands/packages.dart';
import 'package:flutter_tools/src/dart/pub.dart';
import 'package:flutter_tools/src/reporting/reporting.dart';
+import 'package:process/process.dart';
import 'package:flutter_tools/src/globals.dart' as globals;
import '../../src/common.dart';
diff --git a/packages/flutter_tools/test/commands.shard/permeable/upgrade_test.dart b/packages/flutter_tools/test/commands.shard/permeable/upgrade_test.dart
index b74bec3..c394676 100644
--- a/packages/flutter_tools/test/commands.shard/permeable/upgrade_test.dart
+++ b/packages/flutter_tools/test/commands.shard/permeable/upgrade_test.dart
@@ -7,7 +7,6 @@
import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/base/io.dart';
import 'package:flutter_tools/src/base/platform.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/cache.dart';
import 'package:flutter_tools/src/commands/upgrade.dart';
import 'package:flutter_tools/src/convert.dart';
@@ -16,6 +15,7 @@
import 'package:flutter_tools/src/runner/flutter_command.dart';
import 'package:flutter_tools/src/version.dart';
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import '../../src/common.dart';
import '../../src/context.dart';
diff --git a/packages/flutter_tools/test/general.shard/analytics_test.dart b/packages/flutter_tools/test/general.shard/analytics_test.dart
index 93a7720..fbbafac 100644
--- a/packages/flutter_tools/test/general.shard/analytics_test.dart
+++ b/packages/flutter_tools/test/general.shard/analytics_test.dart
@@ -10,7 +10,6 @@
import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/base/io.dart';
import 'package:flutter_tools/src/base/platform.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/base/time.dart';
import 'package:flutter_tools/src/cache.dart';
import 'package:flutter_tools/src/commands/build.dart';
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 74c8063..6600a6b 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
@@ -10,7 +10,6 @@
import 'package:flutter_tools/src/android/android_workflow.dart';
import 'package:flutter_tools/src/base/logger.dart';
import 'package:flutter_tools/src/base/platform.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/base/user_messages.dart';
import 'package:flutter_tools/src/device.dart';
import 'package:test/fake.dart';
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 943ab12..33d6963 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
@@ -16,11 +16,11 @@
import 'package:flutter_tools/src/base/io.dart';
import 'package:flutter_tools/src/base/logger.dart';
import 'package:flutter_tools/src/base/platform.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/build_info.dart';
import 'package:flutter_tools/src/device.dart';
import 'package:flutter_tools/src/project.dart';
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import '../../src/common.dart';
import '../../src/context.dart';
diff --git a/packages/flutter_tools/test/general.shard/android/android_install_test.dart b/packages/flutter_tools/test/general.shard/android/android_install_test.dart
index f25ae6c..2540af3 100644
--- a/packages/flutter_tools/test/general.shard/android/android_install_test.dart
+++ b/packages/flutter_tools/test/general.shard/android/android_install_test.dart
@@ -11,7 +11,6 @@
import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/base/logger.dart';
import 'package:flutter_tools/src/base/platform.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:test/fake.dart';
import '../../src/common.dart';
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 bc54cdf..7ac4e71 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
@@ -10,9 +10,9 @@
import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/base/io.dart' show ProcessResult;
import 'package:flutter_tools/src/base/platform.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:meta/meta.dart';
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import '../../src/common.dart';
import '../../src/context.dart';
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 2b14a8a..bd38129 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
@@ -8,7 +8,6 @@
import 'package:flutter_tools/src/android/android_studio.dart';
import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/base/platform.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/base/version.dart';
import 'package:flutter_tools/src/globals.dart' as globals;
import 'package:flutter_tools/src/ios/plist_parser.dart';
diff --git a/packages/flutter_tools/test/general.shard/android/android_studio_validator_test.dart b/packages/flutter_tools/test/general.shard/android/android_studio_validator_test.dart
index 41cd0f2..50ea44a 100644
--- a/packages/flutter_tools/test/general.shard/android/android_studio_validator_test.dart
+++ b/packages/flutter_tools/test/general.shard/android/android_studio_validator_test.dart
@@ -10,10 +10,10 @@
import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/base/io.dart';
import 'package:flutter_tools/src/base/platform.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/base/user_messages.dart';
import 'package:flutter_tools/src/doctor.dart';
import 'package:flutter_tools/src/globals.dart' as globals;
+import 'package:process/process.dart';
import '../../src/common.dart';
import '../../src/context.dart';
diff --git a/packages/flutter_tools/test/general.shard/android/gradle_errors_test.dart b/packages/flutter_tools/test/general.shard/android/gradle_errors_test.dart
index 5696fa0..4430784 100644
--- a/packages/flutter_tools/test/general.shard/android/gradle_errors_test.dart
+++ b/packages/flutter_tools/test/general.shard/android/gradle_errors_test.dart
@@ -12,11 +12,11 @@
import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/base/io.dart';
import 'package:flutter_tools/src/base/platform.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/globals.dart' as globals;
import 'package:flutter_tools/src/project.dart';
import 'package:flutter_tools/src/reporting/reporting.dart';
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import '../../src/common.dart';
import '../../src/context.dart';
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 84a4cf4..c7dfa2b 100644
--- a/packages/flutter_tools/test/general.shard/android/gradle_test.dart
+++ b/packages/flutter_tools/test/general.shard/android/gradle_test.dart
@@ -18,7 +18,6 @@
import 'package:flutter_tools/src/base/io.dart';
import 'package:flutter_tools/src/base/logger.dart';
import 'package:flutter_tools/src/base/platform.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/base/terminal.dart';
import 'package:flutter_tools/src/build_info.dart';
import 'package:flutter_tools/src/cache.dart';
@@ -26,6 +25,7 @@
import 'package:flutter_tools/src/project.dart';
import 'package:flutter_tools/src/reporting/reporting.dart';
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import '../../src/common.dart';
import '../../src/context.dart';
diff --git a/packages/flutter_tools/test/general.shard/android/gradle_utils_test.dart b/packages/flutter_tools/test/general.shard/android/gradle_utils_test.dart
index 07972fd..e1dfccb 100644
--- a/packages/flutter_tools/test/general.shard/android/gradle_utils_test.dart
+++ b/packages/flutter_tools/test/general.shard/android/gradle_utils_test.dart
@@ -8,11 +8,11 @@
import 'package:flutter_tools/src/android/gradle_utils.dart';
import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/base/os.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/cache.dart';
import 'package:flutter_tools/src/project.dart';
import 'package:flutter_tools/src/globals.dart' as globals;
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import '../../src/common.dart';
import '../../src/context.dart';
diff --git a/packages/flutter_tools/test/general.shard/application_package_test.dart b/packages/flutter_tools/test/general.shard/application_package_test.dart
index 253ae1e..10346e3 100644
--- a/packages/flutter_tools/test/general.shard/application_package_test.dart
+++ b/packages/flutter_tools/test/general.shard/application_package_test.dart
@@ -13,7 +13,6 @@
import 'package:flutter_tools/src/base/logger.dart';
import 'package:flutter_tools/src/base/os.dart';
import 'package:flutter_tools/src/base/platform.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/base/user_messages.dart';
import 'package:flutter_tools/src/build_info.dart';
import 'package:flutter_tools/src/cache.dart';
@@ -22,6 +21,7 @@
import 'package:flutter_tools/src/ios/plist_parser.dart';
import 'package:flutter_tools/src/project.dart';
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import '../src/common.dart';
import '../src/context.dart';
diff --git a/packages/flutter_tools/test/general.shard/asset_bundle_package_fonts_test.dart b/packages/flutter_tools/test/general.shard/asset_bundle_package_fonts_test.dart
index 9aabcfa..a312ea9 100644
--- a/packages/flutter_tools/test/general.shard/asset_bundle_package_fonts_test.dart
+++ b/packages/flutter_tools/test/general.shard/asset_bundle_package_fonts_test.dart
@@ -11,7 +11,6 @@
import 'package:flutter_tools/src/asset.dart';
import 'package:flutter_tools/src/base/file_system.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/globals.dart' as globals;
diff --git a/packages/flutter_tools/test/general.shard/base/error_handling_io_test.dart b/packages/flutter_tools/test/general.shard/base/error_handling_io_test.dart
index 2d814a6..1d705cf 100644
--- a/packages/flutter_tools/test/general.shard/base/error_handling_io_test.dart
+++ b/packages/flutter_tools/test/general.shard/base/error_handling_io_test.dart
@@ -11,11 +11,11 @@
import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/base/io.dart';
import 'package:flutter_tools/src/base/platform.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/globals.dart' as globals show flutterUsage;
import 'package:flutter_tools/src/reporting/reporting.dart';
import 'package:mockito/mockito.dart';
import 'package:path/path.dart' as path; // ignore: package_path_import
+import 'package:process/process.dart';
import '../../src/common.dart';
import '../../src/context.dart';
diff --git a/packages/flutter_tools/test/general.shard/base/os_test.dart b/packages/flutter_tools/test/general.shard/base/os_test.dart
index d698209..0178dbe 100644
--- a/packages/flutter_tools/test/general.shard/base/os_test.dart
+++ b/packages/flutter_tools/test/general.shard/base/os_test.dart
@@ -13,6 +13,7 @@
import 'package:flutter_tools/src/base/platform.dart';
import 'package:flutter_tools/src/build_info.dart';
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import '../../src/common.dart';
import '../../src/context.dart';
diff --git a/packages/flutter_tools/test/general.shard/base/os_utils_test.dart b/packages/flutter_tools/test/general.shard/base/os_utils_test.dart
index 855c8e8..5a21ab7 100644
--- a/packages/flutter_tools/test/general.shard/base/os_utils_test.dart
+++ b/packages/flutter_tools/test/general.shard/base/os_utils_test.dart
@@ -8,8 +8,8 @@
import 'package:flutter_tools/src/base/logger.dart';
import 'package:flutter_tools/src/base/os.dart';
import 'package:flutter_tools/src/base/platform.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/base/signals.dart';
+import 'package:process/process.dart';
import '../../src/common.dart';
diff --git a/packages/flutter_tools/test/general.shard/base/process_manager_test.dart b/packages/flutter_tools/test/general.shard/base/process_manager_test.dart
deleted file mode 100644
index d898845..0000000
--- a/packages/flutter_tools/test/general.shard/base/process_manager_test.dart
+++ /dev/null
@@ -1,327 +0,0 @@
-// Copyright 2014 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// @dart = 2.8
-
-import 'package:file/memory.dart';
-import 'package:flutter_tools/src/base/file_system.dart';
-import 'package:flutter_tools/src/base/platform.dart';
-import 'package:flutter_tools/src/base/process.dart';
-
-import '../../src/common.dart';
-
-void main() {
- group('getExecutablePath', () {
- FileSystem fileSystem;
- Directory workingDir;
- Directory dir1;
- Directory dir2;
- Directory dir3;
-
- void initialize(FileSystemStyle style) {
- setUp(() {
- fileSystem = MemoryFileSystem(style: style);
- workingDir = fileSystem.systemTempDirectory.createTempSync('work_dir_');
- dir1 = fileSystem.systemTempDirectory.createTempSync('dir1_');
- dir2 = fileSystem.systemTempDirectory.createTempSync('dir2_');
- dir3 = fileSystem.systemTempDirectory.createTempSync('dir3_');
- });
- }
-
- tearDown(() {
- workingDir.deleteSync(recursive: true);
- dir1.deleteSync(recursive: true);
- dir2.deleteSync(recursive: true);
- dir3.deleteSync(recursive: true);
- });
-
- group('on windows', () {
- Platform platform;
-
- initialize(FileSystemStyle.windows);
-
- setUp(() {
- platform = FakePlatform(
- operatingSystem: 'windows',
- environment: <String, String>{
- 'PATH': '${dir1.path};${dir2.path}',
- 'PATHEXT': '.exe;.bat'
- },
- );
- });
-
- test('absolute', () {
- String command = fileSystem.path.join(dir3.path, 'bla.exe');
- final String expectedPath = command;
- fileSystem.file(command).createSync();
-
- String executablePath = getExecutablePath(
- command,
- workingDir.path,
- platform: platform,
- fileSystem: fileSystem,
- );
- _expectSamePath(executablePath, expectedPath);
-
- command = fileSystem.path.withoutExtension(command);
- executablePath = getExecutablePath(
- command,
- workingDir.path,
- platform: platform,
- fileSystem: fileSystem,
- );
- _expectSamePath(executablePath, expectedPath);
- });
-
- test('in path', () {
- String command = 'bla.exe';
- final String expectedPath = fileSystem.path.join(dir2.path, command);
- fileSystem.file(expectedPath).createSync();
-
- String executablePath = getExecutablePath(
- command,
- workingDir.path,
- platform: platform,
- fileSystem: fileSystem,
- );
- _expectSamePath(executablePath, expectedPath);
-
- command = fileSystem.path.withoutExtension(command);
- executablePath = getExecutablePath(
- command,
- workingDir.path,
- platform: platform,
- fileSystem: fileSystem,
- );
- _expectSamePath(executablePath, expectedPath);
- });
-
- test('in path multiple times', () {
- String command = 'bla.exe';
- final String expectedPath = fileSystem.path.join(dir1.path, command);
- final String wrongPath = fileSystem.path.join(dir2.path, command);
- fileSystem.file(expectedPath).createSync();
- fileSystem.file(wrongPath).createSync();
-
- String executablePath = getExecutablePath(
- command,
- workingDir.path,
- platform: platform,
- fileSystem: fileSystem,
- );
- _expectSamePath(executablePath, expectedPath);
-
- command = fileSystem.path.withoutExtension(command);
- executablePath = getExecutablePath(
- command,
- workingDir.path,
- platform: platform,
- fileSystem: fileSystem,
- );
- _expectSamePath(executablePath, expectedPath);
- });
-
- test('in subdir of work dir', () {
- String command = fileSystem.path.join('.', 'foo', 'bla.exe');
- final String expectedPath = fileSystem.path.join(workingDir.path, command);
- fileSystem.file(expectedPath).createSync(recursive: true);
-
- String executablePath = getExecutablePath(
- command,
- workingDir.path,
- platform: platform,
- fileSystem: fileSystem,
- );
- _expectSamePath(executablePath, expectedPath);
-
- command = fileSystem.path.withoutExtension(command);
- executablePath = getExecutablePath(
- command,
- workingDir.path,
- platform: platform,
- fileSystem: fileSystem,
- );
- _expectSamePath(executablePath, expectedPath);
- });
-
- test('in work dir', () {
- String command = fileSystem.path.join('.', 'bla.exe');
- final String expectedPath = fileSystem.path.join(workingDir.path, command);
- final String wrongPath = fileSystem.path.join(dir2.path, command);
- fileSystem.file(expectedPath).createSync();
- fileSystem.file(wrongPath).createSync();
-
- String executablePath = getExecutablePath(
- command,
- workingDir.path,
- platform: platform,
- fileSystem: fileSystem,
- );
- _expectSamePath(executablePath, expectedPath);
-
- command = fileSystem.path.withoutExtension(command);
- executablePath = getExecutablePath(
- command,
- workingDir.path,
- platform: platform,
- fileSystem: fileSystem,
- );
- _expectSamePath(executablePath, expectedPath);
- });
-
- test('with multiple extensions', () {
- const String command = 'foo';
- final String expectedPath = fileSystem.path.join(dir1.path, '$command.exe');
- final String wrongPath1 = fileSystem.path.join(dir1.path, '$command.bat');
- final String wrongPath2 = fileSystem.path.join(dir2.path, '$command.exe');
- fileSystem.file(expectedPath).createSync();
- fileSystem.file(wrongPath1).createSync();
- fileSystem.file(wrongPath2).createSync();
-
- final String executablePath = getExecutablePath(
- command,
- workingDir.path,
- platform: platform,
- fileSystem: fileSystem,
- );
- _expectSamePath(executablePath, expectedPath);
- });
-
- test('not found', () {
- const String command = 'foo.exe';
-
- final String executablePath = getExecutablePath(
- command,
- workingDir.path,
- platform: platform,
- fileSystem: fileSystem,
- );
- expect(executablePath, isNull);
- });
-
- test('when path has spaces', () {
- expect(
- sanitizeExecutablePath(r'Program Files\bla.exe', platform: platform),
- r'"Program Files\bla.exe"');
- expect(
- sanitizeExecutablePath(r'ProgramFiles\bla.exe', platform: platform),
- r'ProgramFiles\bla.exe');
- expect(
- sanitizeExecutablePath(r'"Program Files\bla.exe"', platform: platform),
- r'"Program Files\bla.exe"');
- expect(
- sanitizeExecutablePath(r'"Program Files\bla.exe"', platform: platform),
- r'"Program Files\bla.exe"');
- expect(
- sanitizeExecutablePath(r'C:"Program Files"\bla.exe', platform: platform),
- r'C:"Program Files"\bla.exe');
- });
-
- test('with absolute path when currentDirectory getter throws', () {
- final FileSystem fileSystemNoCwd = MemoryFileSystemNoCwd(fileSystem);
- final String command = fileSystem.path.join(dir3.path, 'bla.exe');
- final String expectedPath = command;
- fileSystem.file(command).createSync();
-
- final String executablePath = getExecutablePath(
- command,
- null,
- platform: platform,
- fileSystem: fileSystemNoCwd,
- );
- _expectSamePath(executablePath, expectedPath);
- });
-
- test('with relative path when currentDirectory getter throws', () {
- final FileSystem fileSystemNoCwd = MemoryFileSystemNoCwd(fileSystem);
- final String command = fileSystem.path.join('.', 'bla.exe');
-
- final String executablePath = getExecutablePath(
- command,
- null,
- platform: platform,
- fileSystem: fileSystemNoCwd,
- );
- expect(executablePath, isNull);
- });
- });
-
- group('on Linux', () {
- Platform platform;
-
- initialize(FileSystemStyle.posix);
-
- setUp(() {
- platform = FakePlatform(
- operatingSystem: 'linux',
- environment: <String, String>{'PATH': '${dir1.path}:${dir2.path}'});
- });
-
- test('absolute', () {
- final String command = fileSystem.path.join(dir3.path, 'bla');
- final String expectedPath = command;
- final String wrongPath = fileSystem.path.join(dir3.path, 'bla.bat');
- fileSystem.file(command).createSync();
- fileSystem.file(wrongPath).createSync();
-
- final String executablePath = getExecutablePath(
- command,
- workingDir.path,
- platform: platform,
- fileSystem: fileSystem,
- );
- _expectSamePath(executablePath, expectedPath);
- });
-
- test('in path multiple times', () {
- const String command = 'xxx';
- final String expectedPath = fileSystem.path.join(dir1.path, command);
- final String wrongPath = fileSystem.path.join(dir2.path, command);
- fileSystem.file(expectedPath).createSync();
- fileSystem.file(wrongPath).createSync();
-
- final String executablePath = getExecutablePath(
- command,
- workingDir.path,
- platform: platform,
- fileSystem: fileSystem,
- );
- _expectSamePath(executablePath, expectedPath);
- });
-
- test('not found', () {
- const String command = 'foo';
-
- final String executablePath = getExecutablePath(
- command,
- workingDir.path,
- platform: platform,
- fileSystem: fileSystem,
- );
- expect(executablePath, isNull);
- });
-
- test('when path has spaces', () {
- expect(
- sanitizeExecutablePath('/usr/local/bin/foo bar',
- platform: platform),
- '/usr/local/bin/foo bar');
- });
- });
- });
-}
-
-void _expectSamePath(String actual, String expected) {
- expect(actual, isNotNull);
- expect(actual.toLowerCase(), expected.toLowerCase());
-}
-
-class MemoryFileSystemNoCwd extends ForwardingFileSystem {
- MemoryFileSystemNoCwd(FileSystem delegate) : super(delegate);
-
- @override
- Directory get currentDirectory {
- throw const FileSystemException('Access denied');
- }
-}
diff --git a/packages/flutter_tools/test/general.shard/build_system/targets/web_test.dart b/packages/flutter_tools/test/general.shard/build_system/targets/web_test.dart
index 1006bfd..60201db 100644
--- a/packages/flutter_tools/test/general.shard/build_system/targets/web_test.dart
+++ b/packages/flutter_tools/test/general.shard/build_system/targets/web_test.dart
@@ -15,6 +15,7 @@
import 'package:flutter_tools/src/build_system/targets/web.dart';
import 'package:flutter_tools/src/globals.dart' as globals;
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import '../../../src/common.dart';
import '../../../src/context.dart';
diff --git a/packages/flutter_tools/test/general.shard/cache_test.dart b/packages/flutter_tools/test/general.shard/cache_test.dart
index eccbe2d..68112c9 100644
--- a/packages/flutter_tools/test/general.shard/cache_test.dart
+++ b/packages/flutter_tools/test/general.shard/cache_test.dart
@@ -18,6 +18,7 @@
import 'package:flutter_tools/src/dart/pub.dart';
import 'package:meta/meta.dart';
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import '../src/common.dart';
import '../src/context.dart';
diff --git a/packages/flutter_tools/test/general.shard/channel_test.dart b/packages/flutter_tools/test/general.shard/channel_test.dart
index 6b13792..2156143 100644
--- a/packages/flutter_tools/test/general.shard/channel_test.dart
+++ b/packages/flutter_tools/test/general.shard/channel_test.dart
@@ -11,6 +11,7 @@
import 'package:flutter_tools/src/globals.dart' as globals;
import 'package:flutter_tools/src/commands/channel.dart';
import 'package:flutter_tools/src/version.dart';
+import 'package:process/process.dart';
import '../src/common.dart';
import '../src/context.dart';
diff --git a/packages/flutter_tools/test/general.shard/compile_batch_test.dart b/packages/flutter_tools/test/general.shard/compile_batch_test.dart
index a10fa35..0805f51 100644
--- a/packages/flutter_tools/test/general.shard/compile_batch_test.dart
+++ b/packages/flutter_tools/test/general.shard/compile_batch_test.dart
@@ -15,6 +15,7 @@
import 'package:flutter_tools/src/convert.dart';
import 'package:mockito/mockito.dart';
import 'package:package_config/package_config.dart';
+import 'package:process/process.dart';
import '../src/common.dart';
import '../src/context.dart';
diff --git a/packages/flutter_tools/test/general.shard/compile_expression_test.dart b/packages/flutter_tools/test/general.shard/compile_expression_test.dart
index d4ba1ba..c2cf844 100644
--- a/packages/flutter_tools/test/general.shard/compile_expression_test.dart
+++ b/packages/flutter_tools/test/general.shard/compile_expression_test.dart
@@ -16,6 +16,7 @@
import 'package:flutter_tools/src/convert.dart';
import 'package:mockito/mockito.dart';
import 'package:package_config/package_config.dart';
+import 'package:process/process.dart';
import '../src/common.dart';
import '../src/context.dart';
diff --git a/packages/flutter_tools/test/general.shard/compile_incremental_test.dart b/packages/flutter_tools/test/general.shard/compile_incremental_test.dart
index 20edf45..7e2747a 100644
--- a/packages/flutter_tools/test/general.shard/compile_incremental_test.dart
+++ b/packages/flutter_tools/test/general.shard/compile_incremental_test.dart
@@ -16,6 +16,7 @@
import 'package:flutter_tools/src/convert.dart';
import 'package:mockito/mockito.dart';
import 'package:package_config/package_config.dart';
+import 'package:process/process.dart';
import '../src/common.dart';
import '../src/context.dart';
diff --git a/packages/flutter_tools/test/general.shard/dart/pub_get_test.dart b/packages/flutter_tools/test/general.shard/dart/pub_get_test.dart
index 6432fa9..d254c0f 100644
--- a/packages/flutter_tools/test/general.shard/dart/pub_get_test.dart
+++ b/packages/flutter_tools/test/general.shard/dart/pub_get_test.dart
@@ -16,6 +16,7 @@
import 'package:flutter_tools/src/dart/pub.dart';
import 'package:flutter_tools/src/reporting/reporting.dart';
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import 'package:fake_async/fake_async.dart';
import '../../src/common.dart';
diff --git a/packages/flutter_tools/test/general.shard/desktop_device_test.dart b/packages/flutter_tools/test/general.shard/desktop_device_test.dart
index ce68147..6cdf75e 100644
--- a/packages/flutter_tools/test/general.shard/desktop_device_test.dart
+++ b/packages/flutter_tools/test/general.shard/desktop_device_test.dart
@@ -18,6 +18,7 @@
import 'package:flutter_tools/src/project.dart';
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import 'package:test/fake.dart';
import '../src/common.dart';
diff --git a/packages/flutter_tools/test/general.shard/drive/drive_service_test.dart b/packages/flutter_tools/test/general.shard/drive/drive_service_test.dart
index ac880d6..31cb932 100644
--- a/packages/flutter_tools/test/general.shard/drive/drive_service_test.dart
+++ b/packages/flutter_tools/test/general.shard/drive/drive_service_test.dart
@@ -16,6 +16,7 @@
import 'package:flutter_tools/src/drive/drive_service.dart';
import 'package:flutter_tools/src/vmservice.dart';
import 'package:package_config/package_config_types.dart';
+import 'package:process/process.dart';
import 'package:test/fake.dart';
import 'package:vm_service/vm_service.dart' as vm_service;
diff --git a/packages/flutter_tools/test/general.shard/emulator_test.dart b/packages/flutter_tools/test/general.shard/emulator_test.dart
index 55dc984..77aa8c1 100644
--- a/packages/flutter_tools/test/general.shard/emulator_test.dart
+++ b/packages/flutter_tools/test/general.shard/emulator_test.dart
@@ -13,6 +13,7 @@
import 'package:flutter_tools/src/ios/ios_emulators.dart';
import 'package:flutter_tools/src/macos/xcode.dart';
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import '../src/common.dart';
import '../src/context.dart';
diff --git a/packages/flutter_tools/test/general.shard/flutter_platform_test.dart b/packages/flutter_tools/test/general.shard/flutter_platform_test.dart
index 74c315f..25b9967 100644
--- a/packages/flutter_tools/test/general.shard/flutter_platform_test.dart
+++ b/packages/flutter_tools/test/general.shard/flutter_platform_test.dart
@@ -15,6 +15,7 @@
import 'package:flutter_tools/src/test/flutter_platform.dart';
import 'package:meta/meta.dart';
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import 'package:test_core/backend.dart'; // ignore: deprecated_member_use
import '../src/common.dart';
diff --git a/packages/flutter_tools/test/general.shard/fuchsia/fuchsia_dev_finder_test.dart b/packages/flutter_tools/test/general.shard/fuchsia/fuchsia_dev_finder_test.dart
index cde59a2..f70b019 100644
--- a/packages/flutter_tools/test/general.shard/fuchsia/fuchsia_dev_finder_test.dart
+++ b/packages/flutter_tools/test/general.shard/fuchsia/fuchsia_dev_finder_test.dart
@@ -11,6 +11,7 @@
import 'package:flutter_tools/src/fuchsia/fuchsia_dev_finder.dart';
import 'package:flutter_tools/src/fuchsia/fuchsia_sdk.dart';
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import '../../src/common.dart';
import '../../src/context.dart';
diff --git a/packages/flutter_tools/test/general.shard/fuchsia/fuchsia_device_test.dart b/packages/flutter_tools/test/general.shard/fuchsia/fuchsia_device_test.dart
index 5ab53e8..dff0331 100644
--- a/packages/flutter_tools/test/general.shard/fuchsia/fuchsia_device_test.dart
+++ b/packages/flutter_tools/test/general.shard/fuchsia/fuchsia_device_test.dart
@@ -36,6 +36,7 @@
import 'package:flutter_tools/src/vmservice.dart';
import 'package:meta/meta.dart';
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import 'package:vm_service/vm_service.dart' as vm_service;
import '../../src/common.dart';
diff --git a/packages/flutter_tools/test/general.shard/ios/code_signing_test.dart b/packages/flutter_tools/test/general.shard/ios/code_signing_test.dart
index 465948e..359fb4c 100644
--- a/packages/flutter_tools/test/general.shard/ios/code_signing_test.dart
+++ b/packages/flutter_tools/test/general.shard/ios/code_signing_test.dart
@@ -16,6 +16,7 @@
import 'package:flutter_tools/src/base/terminal.dart';
import 'package:flutter_tools/src/ios/code_signing.dart';
import 'package:flutter_tools/src/globals.dart' as globals;
+import 'package:process/process.dart';
import '../../src/common.dart';
import '../../src/context.dart';
diff --git a/packages/flutter_tools/test/general.shard/ios/ios_deploy_test.dart b/packages/flutter_tools/test/general.shard/ios/ios_deploy_test.dart
index ddcf15c..37ad924 100644
--- a/packages/flutter_tools/test/general.shard/ios/ios_deploy_test.dart
+++ b/packages/flutter_tools/test/general.shard/ios/ios_deploy_test.dart
@@ -15,6 +15,7 @@
import 'package:flutter_tools/src/cache.dart';
import 'package:flutter_tools/src/ios/devices.dart';
import 'package:flutter_tools/src/ios/ios_deploy.dart';
+import 'package:process/process.dart';
import '../../src/common.dart';
import '../../src/context.dart';
diff --git a/packages/flutter_tools/test/general.shard/ios/mac_test.dart b/packages/flutter_tools/test/general.shard/ios/mac_test.dart
index f935eaa..f7a0a4a 100644
--- a/packages/flutter_tools/test/general.shard/ios/mac_test.dart
+++ b/packages/flutter_tools/test/general.shard/ios/mac_test.dart
@@ -18,6 +18,7 @@
import 'package:flutter_tools/src/project.dart';
import 'package:flutter_tools/src/reporting/reporting.dart';
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import '../../src/common.dart';
import '../../src/context.dart';
diff --git a/packages/flutter_tools/test/general.shard/ios/simulators_test.dart b/packages/flutter_tools/test/general.shard/ios/simulators_test.dart
index 66b1262..f0952f6 100644
--- a/packages/flutter_tools/test/general.shard/ios/simulators_test.dart
+++ b/packages/flutter_tools/test/general.shard/ios/simulators_test.dart
@@ -21,6 +21,7 @@
import 'package:flutter_tools/src/macos/xcode.dart';
import 'package:flutter_tools/src/project.dart';
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import '../../src/common.dart';
import '../../src/context.dart';
diff --git a/packages/flutter_tools/test/general.shard/ios/xcodeproj_test.dart b/packages/flutter_tools/test/general.shard/ios/xcodeproj_test.dart
index 8ba98c3..cff5cb8 100644
--- a/packages/flutter_tools/test/general.shard/ios/xcodeproj_test.dart
+++ b/packages/flutter_tools/test/general.shard/ios/xcodeproj_test.dart
@@ -16,6 +16,7 @@
import 'package:flutter_tools/src/project.dart';
import 'package:flutter_tools/src/reporting/reporting.dart';
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import '../../src/common.dart';
import '../../src/context.dart';
diff --git a/packages/flutter_tools/test/general.shard/linux/linux_doctor_test.dart b/packages/flutter_tools/test/general.shard/linux/linux_doctor_test.dart
index 66741b4..cd99342 100644
--- a/packages/flutter_tools/test/general.shard/linux/linux_doctor_test.dart
+++ b/packages/flutter_tools/test/general.shard/linux/linux_doctor_test.dart
@@ -7,6 +7,7 @@
import 'package:flutter_tools/src/base/user_messages.dart';
import 'package:flutter_tools/src/doctor.dart';
import 'package:flutter_tools/src/linux/linux_doctor.dart';
+import 'package:process/process.dart';
import '../../src/common.dart';
import '../../src/context.dart';
diff --git a/packages/flutter_tools/test/general.shard/macos/cocoapods_test.dart b/packages/flutter_tools/test/general.shard/macos/cocoapods_test.dart
index 211e6af..dec5713 100644
--- a/packages/flutter_tools/test/general.shard/macos/cocoapods_test.dart
+++ b/packages/flutter_tools/test/general.shard/macos/cocoapods_test.dart
@@ -18,6 +18,7 @@
import 'package:flutter_tools/src/project.dart';
import 'package:flutter_tools/src/reporting/reporting.dart';
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import '../../src/common.dart';
import '../../src/context.dart';
diff --git a/packages/flutter_tools/test/general.shard/macos/xcode_test.dart b/packages/flutter_tools/test/general.shard/macos/xcode_test.dart
index 39f580c..a36155b 100644
--- a/packages/flutter_tools/test/general.shard/macos/xcode_test.dart
+++ b/packages/flutter_tools/test/general.shard/macos/xcode_test.dart
@@ -17,6 +17,7 @@
import 'package:flutter_tools/src/ios/xcodeproj.dart';
import 'package:flutter_tools/src/macos/xcode.dart';
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import '../../src/common.dart';
import '../../src/context.dart';
diff --git a/packages/flutter_tools/test/general.shard/runner/flutter_command_runner_test.dart b/packages/flutter_tools/test/general.shard/runner/flutter_command_runner_test.dart
index c3a02b9..f6ea741 100644
--- a/packages/flutter_tools/test/general.shard/runner/flutter_command_runner_test.dart
+++ b/packages/flutter_tools/test/general.shard/runner/flutter_command_runner_test.dart
@@ -16,6 +16,7 @@
import 'package:flutter_tools/src/runner/flutter_command_runner.dart';
import 'package:flutter_tools/src/version.dart';
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import '../../src/common.dart';
import '../../src/context.dart';
diff --git a/packages/flutter_tools/test/general.shard/tester/flutter_tester_test.dart b/packages/flutter_tools/test/general.shard/tester/flutter_tester_test.dart
index 7a28344..3259403 100644
--- a/packages/flutter_tools/test/general.shard/tester/flutter_tester_test.dart
+++ b/packages/flutter_tools/test/general.shard/tester/flutter_tester_test.dart
@@ -16,6 +16,7 @@
import 'package:flutter_tools/src/tester/flutter_tester.dart';
import 'package:flutter_tools/src/version.dart';
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import '../../src/common.dart';
import '../../src/context.dart';
diff --git a/packages/flutter_tools/test/general.shard/version_test.dart b/packages/flutter_tools/test/general.shard/version_test.dart
index 6b7a8b8..615fb7f 100644
--- a/packages/flutter_tools/test/general.shard/version_test.dart
+++ b/packages/flutter_tools/test/general.shard/version_test.dart
@@ -18,6 +18,7 @@
import 'package:flutter_tools/src/globals.dart' as globals;
import 'package:flutter_tools/src/version.dart';
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import '../src/common.dart';
import '../src/context.dart';
diff --git a/packages/flutter_tools/test/general.shard/web/golden_comparator_test.dart b/packages/flutter_tools/test/general.shard/web/golden_comparator_test.dart
index 103f39d..8765bd6 100644
--- a/packages/flutter_tools/test/general.shard/web/golden_comparator_test.dart
+++ b/packages/flutter_tools/test/general.shard/web/golden_comparator_test.dart
@@ -7,11 +7,11 @@
import 'dart:convert';
import 'dart:typed_data';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/test/flutter_web_goldens.dart';
import 'package:flutter_tools/src/test/test_compiler.dart';
import 'package:flutter_tools/src/globals.dart' as globals;
import 'package:mockito/mockito.dart';
+import 'package:process/process.dart';
import '../../src/common.dart';
import '../../src/fakes.dart';
diff --git a/packages/flutter_tools/test/integration.shard/daemon_mode_test.dart b/packages/flutter_tools/test/integration.shard/daemon_mode_test.dart
index 06fc453..f955624 100644
--- a/packages/flutter_tools/test/integration.shard/daemon_mode_test.dart
+++ b/packages/flutter_tools/test/integration.shard/daemon_mode_test.dart
@@ -11,6 +11,7 @@
import 'package:file/file.dart';
import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/base/io.dart';
+import 'package:process/process.dart';
import '../src/common.dart';
import 'test_data/basic_project.dart';
@@ -36,6 +37,7 @@
final String flutterBin = fileSystem.path.join(getFlutterRoot(), 'bin', 'flutter');
+ const ProcessManager processManager = LocalProcessManager();
daemonProcess = await processManager.start(
<String>[flutterBin, ...getLocalEngineArguments(), '--show-test-device', 'daemon'],
workingDirectory: tempDir.path,
diff --git a/packages/flutter_tools/test/integration.shard/flutter_run_test.dart b/packages/flutter_tools/test/integration.shard/flutter_run_test.dart
index 217e65d..a6eb91c 100644
--- a/packages/flutter_tools/test/integration.shard/flutter_run_test.dart
+++ b/packages/flutter_tools/test/integration.shard/flutter_run_test.dart
@@ -6,8 +6,10 @@
import 'package:file/file.dart';
import 'package:flutter_tools/src/base/io.dart';
+import 'package:process/process.dart';
import '../src/common.dart';
+import '../src/context.dart';
import 'test_data/basic_project.dart';
import 'test_driver.dart';
import 'test_utils.dart';
@@ -35,7 +37,8 @@
// some of the checks for devices.
final String flutterBin = fileSystem.path.join(getFlutterRoot(), 'bin', 'flutter');
- final ProcessResult _proc = await processManager.run(
+ const ProcessManager _processManager = LocalProcessManager();
+ final ProcessResult _proc = await _processManager.run(
<String>[flutterBin, 'run', '-d', 'invalid-device-id'],
workingDirectory: tempDir.path,
);
diff --git a/packages/flutter_tools/test/integration.shard/forbidden_imports_test.dart b/packages/flutter_tools/test/integration.shard/forbidden_imports_test.dart
index 51bc864..2c14356 100644
--- a/packages/flutter_tools/test/integration.shard/forbidden_imports_test.dart
+++ b/packages/flutter_tools/test/integration.shard/forbidden_imports_test.dart
@@ -139,7 +139,6 @@
final List<String> allowedPath = <String>[
fileSystem.path.join(flutterTools, 'test', 'integration.shard', 'test_utils.dart'),
fileSystem.path.join(flutterTools, 'lib', 'src', 'base', 'file_system.dart'),
- fileSystem.path.join(flutterTools, 'lib', 'src', 'base', 'process.dart'),
];
for (final String dirName in <String>['lib', 'bin', 'test']) {
final Iterable<File> files = fileSystem.directory(fileSystem.path.join(flutterTools, dirName))
diff --git a/packages/flutter_tools/test/integration.shard/test_driver.dart b/packages/flutter_tools/test/integration.shard/test_driver.dart
index cb40a00..1bab241 100644
--- a/packages/flutter_tools/test/integration.shard/test_driver.dart
+++ b/packages/flutter_tools/test/integration.shard/test_driver.dart
@@ -14,6 +14,7 @@
import 'package:flutter_tools/src/base/io.dart';
import 'package:flutter_tools/src/base/utils.dart';
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import 'package:vm_service/vm_service.dart';
import 'package:vm_service/vm_service_io.dart';
@@ -103,7 +104,8 @@
}
_debugPrint('Spawning flutter $arguments in ${_projectFolder.path}');
- _process = await processManager.start(
+ const ProcessManager _processManager = LocalProcessManager();
+ _process = await _processManager.start(
<String>[flutterBin]
.followedBy(arguments)
.toList(),
diff --git a/packages/flutter_tools/test/integration.shard/test_utils.dart b/packages/flutter_tools/test/integration.shard/test_utils.dart
index 6e310f5..45596f1 100644
--- a/packages/flutter_tools/test/integration.shard/test_utils.dart
+++ b/packages/flutter_tools/test/integration.shard/test_utils.dart
@@ -8,8 +8,8 @@
import 'package:file/local.dart';
import 'package:flutter_tools/src/base/io.dart';
import 'package:flutter_tools/src/base/platform.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import 'package:vm_service/vm_service.dart';
import '../src/common.dart';
@@ -22,10 +22,7 @@
const Platform platform = LocalPlatform();
/// The [ProcessManager] for the integration test environment.
-const ProcessManager processManager = LocalProcessManager(
- platform: platform,
- fileSystem: fileSystem,
-);
+const ProcessManager processManager = LocalProcessManager();
/// Creates a temporary directory but resolves any symlinks to return the real
/// underlying path to avoid issues with breakpoints/hot reload.
diff --git a/packages/flutter_tools/test/integration.shard/unit_coverage_test.dart b/packages/flutter_tools/test/integration.shard/unit_coverage_test.dart
index 5e06d3f..56f0d2f 100644
--- a/packages/flutter_tools/test/integration.shard/unit_coverage_test.dart
+++ b/packages/flutter_tools/test/integration.shard/unit_coverage_test.dart
@@ -6,7 +6,7 @@
import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/base/io.dart';
-import 'package:flutter_tools/src/base/process.dart';
+import 'package:process/process.dart';
import '../src/common.dart';
import 'test_utils.dart';
diff --git a/packages/flutter_tools/test/src/context.dart b/packages/flutter_tools/test/src/context.dart
index fc8f134..b8691d4 100644
--- a/packages/flutter_tools/test/src/context.dart
+++ b/packages/flutter_tools/test/src/context.dart
@@ -37,13 +37,13 @@
import 'package:mockito/mockito.dart';
import 'common.dart';
+import 'fake_process_manager.dart';
import 'fakes.dart';
import 'mocks.dart';
import 'throwing_pub.dart';
export 'package:flutter_tools/src/base/context.dart' show Generator;
-export 'package:flutter_tools/src/base/process.dart' show ProcessManager;
-export 'fake_process_manager.dart' show FakeProcessManager, FakeCommand;
+export 'fake_process_manager.dart' show ProcessManager, FakeProcessManager, FakeCommand;
/// Return the test logger. This assumes that the current Logger is a BufferLogger.
BufferLogger get testLogger => context.get<Logger>() as BufferLogger;
diff --git a/packages/flutter_tools/test/src/darwin_common.dart b/packages/flutter_tools/test/src/darwin_common.dart
index 9ca7121..b5bea31 100644
--- a/packages/flutter_tools/test/src/darwin_common.dart
+++ b/packages/flutter_tools/test/src/darwin_common.dart
@@ -6,8 +6,8 @@
import 'dart:convert';
+import 'package:process/process.dart';
import 'package:flutter_tools/src/base/io.dart';
-import 'package:flutter_tools/src/base/process.dart';
bool containsBitcode(String pathToBinary, ProcessManager processManager) {
// See: https://stackoverflow.com/questions/32755775/how-to-check-a-static-library-is-built-contain-bitcode
diff --git a/packages/flutter_tools/test/src/fake_process_manager.dart b/packages/flutter_tools/test/src/fake_process_manager.dart
index ab7a2ee..028b453 100644
--- a/packages/flutter_tools/test/src/fake_process_manager.dart
+++ b/packages/flutter_tools/test/src/fake_process_manager.dart
@@ -9,9 +9,12 @@
import 'dart:io' as io show ProcessSignal;
import 'package:flutter_tools/src/base/io.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import 'common.dart';
+import 'context.dart';
+
+export 'package:process/process.dart' show ProcessManager;
typedef VoidCallback = void Function();
@@ -242,7 +245,7 @@
@override
Future<Process> start(
- List<String> command, {
+ List<dynamic> command, {
String workingDirectory,
Map<String, String> environment,
bool includeParentEnvironment = true, // ignored
@@ -261,7 +264,7 @@
@override
Future<ProcessResult> run(
- List<String> command, {
+ List<dynamic> command, {
String workingDirectory,
Map<String, String> environment,
bool includeParentEnvironment = true, // ignored
@@ -281,7 +284,7 @@
@override
ProcessResult runSync(
- List<String> command, {
+ List<dynamic> command, {
String workingDirectory,
Map<String, String> environment,
bool includeParentEnvironment = true, // ignored
@@ -305,7 +308,7 @@
Set<String> excludedExecutables = <String>{};
@override
- bool killPid(int pid, [ProcessSignal signal = ProcessSignal.SIGTERM]) {
+ bool killPid(int pid, [io.ProcessSignal signal = io.ProcessSignal.sigterm]) {
// Killing a fake process has no effect unless it has an attached completer.
final _FakeProcess fakeProcess = _fakeRunningProcesses[pid];
if (fakeProcess == null) {
diff --git a/packages/flutter_tools/test/src/mocks.dart b/packages/flutter_tools/test/src/mocks.dart
index 3cad33c..46c5444 100644
--- a/packages/flutter_tools/test/src/mocks.dart
+++ b/packages/flutter_tools/test/src/mocks.dart
@@ -15,7 +15,6 @@
import 'package:flutter_tools/src/base/file_system.dart' hide IOSink;
import 'package:flutter_tools/src/base/io.dart';
import 'package:flutter_tools/src/base/platform.dart';
-import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/build_info.dart';
import 'package:flutter_tools/src/compile.dart';
import 'package:flutter_tools/src/globals.dart' as globals;
@@ -23,6 +22,7 @@
import 'package:flutter_tools/src/project.dart';
import 'package:mockito/mockito.dart';
import 'package:package_config/package_config.dart';
+import 'package:process/process.dart';
import 'common.dart';
import 'fakes.dart';
diff --git a/packages/flutter_tools/test/src/testbed.dart b/packages/flutter_tools/test/src/testbed.dart
index 4d92ff7..20abb12 100644
--- a/packages/flutter_tools/test/src/testbed.dart
+++ b/packages/flutter_tools/test/src/testbed.dart
@@ -26,6 +26,7 @@
import 'package:flutter_tools/src/version.dart';
import 'package:flutter_tools/src/globals.dart' as globals;
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import 'common.dart' as tester;
import 'context.dart';