blob: 3fc57282d577a38fb22aa9155c3d2da1e9b43350 [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
* bool killPid(
* int pid, [
* ProcessSignal signal = ProcessSignal.sigterm
* ])
*
* Kills the process with id pid.
* ...
* 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.
*
* @description Checks that static method [killPid] return false, if the process
* is already dead.
* @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 = 'ping';
args = ['127.0.0.1 -n 6 > nul'];
} else {
command = 'sleep';
args = ['5'];
}
}
main() {
setCommand();
asyncStart();
Process.start(command, args).then((Process process) {
int pid = process.pid;
bool res = Process.killPid(pid);
if (Platform.isWindows) {
Expect.isFalse(res);
asyncEnd();
} else {
Expect.isTrue(res);
process.exitCode.then((value) {
if (value == -15) {
res = Process.killPid(pid);
Expect.isFalse(res);
asyncEnd();
}
});
}
});
}