// Copyright (c) 2019, 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 import 'dart:io' show Platform, Process, ProcessResult, exitCode; import '../test/utils/io_utils.dart' show computeRepoDir; final String repoDir = computeRepoDir(); String get dartVm => Platform.executable; main(List args) async { Stopwatch stopwatch = new Stopwatch()..start(); List futures = []; futures.add(run("pkg/front_end/test/explicit_creation_git_test.dart", ["--front-end-only"], filter: false)); futures.add(run( "pkg/front_end/test/fasta/messages_suite.dart", ["-DfastOnly=true"], )); futures.add(run("pkg/front_end/test/spelling_test_not_src_suite.dart", [])); futures.add(run("pkg/front_end/test/spelling_test_src_suite.dart", ["--", "spelling_test_src/front_end/..."])); futures.add( run("pkg/front_end/test/lint_suite.dart", ["--", "lint/front_end/..."])); futures.add(run("pkg/front_end/test/deps_git_test.dart", [], filter: false)); futures.add(run( "pkg/front_end/tool/_fasta/generate_experimental_flags_test.dart", [], filter: false)); await Future.wait(futures); print("\n-----------------------\n"); print("Done with exitcode $exitCode in ${stopwatch.elapsedMilliseconds} ms"); } Future run(String script, List scriptArguments, {bool filter: true}) async { List arguments = []; arguments.add("$script"); arguments.addAll(scriptArguments); Stopwatch stopwatch = new Stopwatch()..start(); ProcessResult result = await Process.run(dartVm, arguments, workingDirectory: repoDir); String runWhat = "${dartVm} ${arguments.join(' ')}"; if (result.exitCode != 0) { exitCode = result.exitCode; print("-----"); print("Running: $runWhat: " "Failed with exit code ${result.exitCode} " "in ${stopwatch.elapsedMilliseconds} ms."); String stdout = result.stdout.toString(); if (filter) { List lines = stdout.split("\n"); int lastIgnored = -1; for (int i = 0; i < lines.length; i++) { if (lines[i].startsWith("[ ")) lastIgnored = i; } lines.removeRange(0, lastIgnored + 1); stdout = lines.join("\n"); } stdout = stdout.trim(); if (stdout.isNotEmpty) { print("--- stdout start ---"); print(stdout); print("--- stdout end ---"); } String stderr = result.stderr.toString().trim(); if (stderr.isNotEmpty) { print("--- stderr start ---"); print(stderr); print("--- stderr end ---"); } } else { print("Running: $runWhat: Done in ${stopwatch.elapsedMilliseconds} ms."); } }