blob: 2d2b6942fa6d803eeae3a815a00689e83ced041d [file] [log] [blame]
// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
/// @assertion
/// Future<Process> start(
/// String executable,
/// List<String> arguments, {
/// String workingDirectory,
/// Map<String, String> environment,
/// bool includeParentEnvironment: true,
/// bool runInShell: false,
/// ProcessStartMode mode: ProcessStartMode.normal
/// })
///
/// 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.
///
/// @description Checks that if mode is ProcessStartMode.DETACHED a detached
/// process will be created. 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.
/// @author ngl@unipro.ru
import "dart:io";
import "../../../Utils/expect.dart";
String command = "";
List<String> args = new List<String>.empty(growable: true);
void setCommand() {
if (Platform.isWindows) {
command = Platform.resolvedExecutable;
args = ['--version'];
} else {
command = 'pwd';
args = [];
}
}
main() {
setCommand();
Process
.start(command, args, mode: ProcessStartMode.detached)
.then((Process process) {
Expect.isTrue(process.pid is int);
Expect.runtimeIsType<int>(process.pid);
Expect.throws(() {process.stdout;}, (e) => e is StateError);
Expect.throws(() {process.stderr;}, (e) => e is StateError);
Expect.throws(() {process.stdin;}, (e) => e is StateError);
Expect.throws(() {process.exitCode;}, (e) => e is StateError);
});
}