// 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. import 'dart:io'; 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/spelling_test_src_suite.dart", ["--", "spelling_test_src/_fe_analyzer_shared/..."])); futures.add(run( "pkg/front_end/test/explicit_creation_git_test.dart", ["--shared-only"], filter: false)); futures.add(run("pkg/front_end/test/lint_suite.dart", ["--", "lint/_fe_analyzer_shared/..."])); 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); print("-----"); } } else { print("Running: $runWhat: Done in ${stopwatch.elapsedMilliseconds} ms."); } } String _computeRepoDir() { ProcessResult result = Process.runSync( 'git', ['rev-parse', '--show-toplevel'], runInShell: true, workingDirectory: new File.fromUri(Platform.script).parent.path); return (result.stdout as String).trim(); }