blob: e942ef164a5828547b3724b5c6b98dde02de387d [file] [log] [blame]
// 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<String> args) async {
Stopwatch stopwatch = new Stopwatch()..start();
List<Future> futures = <Future>[];
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<void> run(String script, List<String> scriptArguments,
{bool filter: true}) async {
List<String> 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<String> 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.");
}
}