// Copyright (c) 2012, 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. // // Test script for testing that output is handled correctly for // non-interactive processes started with Process.run. import "package:expect/expect.dart"; import "dart:convert"; import "dart:io"; import "process_test_util.dart"; checkOutput(String encoding, output) { if (encoding == 'ascii') { Expect.equals(output, 'abc'); } else if (encoding == 'latin1') { Expect.equals(output, 'æøå'); } else if (encoding == 'utf8') { Expect.listEquals(output.codeUnits, [955]); } else if (encoding == 'binary') { print(output); Expect.listEquals(output, [0, 1, 2]); } } test(scriptFile, String encoding, stream) { var enc; if (encoding == 'ascii') { enc = ascii; } else if (encoding == 'latin1') { enc = latin1; } else if (encoding == 'utf8') { enc = utf8; } else if (encoding == 'binary') { enc = null; } var args = [] ..addAll(Platform.executableArguments) ..add('--verbosity=warning') ..addAll([scriptFile, encoding, stream]); if (stream == 'stdout') { Process.run(Platform.executable, args, stdoutEncoding: enc).then((result) { Expect.equals(result.exitCode, 0); Expect.equals(result.stderr, ''); checkOutput(encoding, result.stdout); }); } else { Process.run(Platform.executable, args, stderrEncoding: enc).then((result) { Expect.equals(result.exitCode, 0); Expect.equals(result.stdout, ''); checkOutput(encoding, result.stderr); }); } } main() { var scriptFile = new File("tests/standalone/io/process_std_io_script2.dart"); if (!scriptFile.existsSync()) { scriptFile = new File("../tests/standalone/io/process_std_io_script2.dart"); } Expect.isTrue(scriptFile.existsSync()); test(scriptFile.path, 'ascii', 'stdout'); test(scriptFile.path, 'ascii', 'stderr'); test(scriptFile.path, 'latin1', 'stdout'); test(scriptFile.path, 'latin1', 'stderr'); test(scriptFile.path, 'utf8', 'stdout'); test(scriptFile.path, 'utf8', 'stderr'); test(scriptFile.path, 'binary', 'stdout'); test(scriptFile.path, 'binary', 'stderr'); }