// 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.

// @dart = 2.9

// OtherResources=process_set_exit_code_script.dart

// Process test program to test process communication.

library ProcessSetExitCodeTest;

import "dart:io";
import "package:expect/expect.dart";
import "package:path/path.dart";

main() {
  var executable = Platform.executable;
  var exitCodeScript =
      Platform.script.resolve('process_set_exit_code_script.dart').toFilePath();
  Process.run(
          executable,
          []
            ..addAll(Platform.executableArguments)
            ..add('--verbosity=warning')
            ..add(exitCodeScript))
      .then((result) {
    Expect.equals("standard out", result.stdout);
    Expect.equals("standard error", result.stderr);
    Expect.equals(25, result.exitCode);
  });
}
