| // Copyright (c) 2013, 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. |
| |
| // @dart = 2.9 |
| |
| // OtherResources=process_sync_script.dart |
| |
| import "dart:io"; |
| import "package:expect/expect.dart"; |
| import 'package:path/path.dart'; |
| |
| test(int blockCount, int stdoutBlockSize, int stderrBlockSize, int exitCode, |
| [int nonWindowsExitCode]) { |
| // Get the Dart script file that generates output. |
| var scriptFile = new File( |
| Platform.script.resolve("process_sync_script.dart").toFilePath()); |
| var args = <String>[] |
| ..addAll(Platform.executableArguments) |
| ..add('--verbosity=warning') |
| ..addAll([ |
| scriptFile.path, |
| blockCount.toString(), |
| stdoutBlockSize.toString(), |
| stderrBlockSize.toString(), |
| exitCode.toString() |
| ]); |
| ProcessResult syncResult = Process.runSync(Platform.executable, args); |
| Expect.equals(blockCount * stdoutBlockSize, syncResult.stdout.length); |
| Expect.equals(blockCount * stderrBlockSize, syncResult.stderr.length); |
| if (Platform.isWindows) { |
| Expect.equals(exitCode, syncResult.exitCode); |
| } else { |
| if (nonWindowsExitCode == null) { |
| Expect.equals(exitCode, syncResult.exitCode); |
| } else { |
| Expect.equals(nonWindowsExitCode, syncResult.exitCode); |
| } |
| } |
| Process.run(Platform.executable, args).then((asyncResult) { |
| Expect.equals(syncResult.stdout, asyncResult.stdout); |
| Expect.equals(syncResult.stderr, asyncResult.stderr); |
| Expect.equals(syncResult.exitCode, asyncResult.exitCode); |
| }); |
| } |
| |
| main() { |
| test(10, 10, 10, 0); |
| test(10, 100, 10, 0); |
| test(10, 10, 100, 0); |
| test(100, 1, 10, 0); |
| test(100, 10, 1, 0); |
| test(100, 1, 1, 0); |
| test(1, 100000, 100000, 0); |
| |
| // The buffer size used in process.h. |
| var kBufferSize = 16 * 1024; |
| test(1, kBufferSize, kBufferSize, 0); |
| test(1, kBufferSize - 1, kBufferSize - 1, 0); |
| test(1, kBufferSize + 1, kBufferSize + 1, 0); |
| |
| test(10, 10, 10, 1); |
| test(10, 10, 10, 255); |
| test(10, 10, 10, -1, 255); |
| test(10, 10, 10, -255, 1); |
| } |