Index: tests/standalone/io/process_shell_test.dart |
diff --git a/tests/standalone/io/process_shell_test.dart b/tests/standalone/io/process_shell_test.dart |
index add0c9fca7ca8cee3b536b465617dcd63f432ca2..3980eac9190ac0bc306ecad0dc3320cfbf029395 100644 |
--- a/tests/standalone/io/process_shell_test.dart |
+++ b/tests/standalone/io/process_shell_test.dart |
@@ -3,13 +3,16 @@ |
// BSD-style license that can be found in the LICENSE file. |
import "dart:io"; |
+import "dart:isolate"; |
void testRunShell() { |
test(args) { |
var options = new Options(); |
var path = new Path(options.script); |
path = path.directoryPath.join(new Path("process_echo_util.dart")); |
- Process.runShell(options.executable, [path.toString()]..addAll(args)) |
+ Process.run(options.executable, |
+ [path.toString()]..addAll(args), |
+ runInShell: true) |
.then((result) { |
if (Platform.operatingSystem == "windows") { |
result = result.stdout.split("\r\n"); |
@@ -29,44 +32,35 @@ void testRunShell() { |
test(["\""]); |
test(["a b"]); |
test(["'"]); |
+ test(["'", "'"]); |
test(["'\"\"'\"'\"'"]); |
test(["'\"\"'", "\"'\"'"]); |
+ test(["'\\\"\\\"'\\", "\"\\'\"'"]); |
test(["'\$HOME'"]); |
test(["'\$tmp'"]); |
+ test(["arg'"]); |
+ test(["arg\\'", "'\\arg"]); |
} |
-void testShell() { |
- test(args, expected) { |
+void testBadRunShell() { |
+ test(exe, [args = const []]) { |
var options = new Options(); |
var path = new Path(options.script); |
path = path.directoryPath.join(new Path("process_echo_util.dart")); |
- var command = "${options.executable} $path $args"; |
- Process.runShell(command, []) |
+ Process.run(exe, args, runInShell: true) |
.then((result) { |
- if (Platform.operatingSystem == "windows") { |
- result = result.stdout.split("\r\n"); |
- } else { |
- result = result.stdout.split("\n"); |
- } |
- if (result.length - 1 != expected.length) { |
- throw "wrong number of args: $expected vs $result"; |
- } |
- for (int i = 0; i < expected.length; i++) { |
- if (expected[i] != result[i]) { |
- throw "bad result at $i: ${expected[i]} vs ${result[i]}"; |
- } |
+ port.close(); |
+ if (result.exitCode == 0) { |
+ throw "error expected"; |
} |
}); |
} |
- test("arg", ["arg"]); |
- test("arg1 arg2", ["arg1", "arg2"]); |
- if (Platform.operatingSystem != 'windows') { |
- test("arg1 arg2 > /dev/null", []); |
- } |
+ test("\""); |
+ test("'\$HOME'"); |
} |
void main() { |
testRunShell(); |
- testShell(); |
+ testBadRunShell(); |
} |