060e154eed
Change-Id: Ic2598e408c0ca0d0f8cd1e07a0354f9e7fefd321 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/411242 Reviewed-by: Jens Johansen <jensj@google.com> Commit-Queue: Johnni Winther <johnniwinther@google.com>
122 lines
4.0 KiB
Dart
122 lines
4.0 KiB
Dart
// Copyright (c) 2024, 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:async';
|
|
import 'dart:convert';
|
|
import 'dart:io';
|
|
|
|
import '../tool/coverage_merger.dart' as coverageMerger;
|
|
import 'utils/io_utils.dart';
|
|
|
|
final Uri repoDirUri = computeRepoDirUri();
|
|
|
|
Future<void> main() async {
|
|
String dartExtension = "";
|
|
if (Platform.isWindows) {
|
|
dartExtension = ".exe";
|
|
}
|
|
Uri dart =
|
|
repoDirUri.resolve("out/ReleaseX64/dart-sdk/bin/dart$dartExtension");
|
|
if (!File.fromUri(dart).existsSync()) throw "Didn't find dart at $dart";
|
|
Directory coverageTmpDir =
|
|
Directory.systemTemp.createTempSync("cfe_coverage");
|
|
print("Using $coverageTmpDir for coverage.");
|
|
List<List<String>> runThese = [];
|
|
void addSuiteSkipVm(String suitePath) {
|
|
runThese.add([
|
|
dart.toFilePath(),
|
|
"--enable-asserts",
|
|
suitePath,
|
|
"-DskipVm=true",
|
|
"--coverage=${coverageTmpDir.path}/",
|
|
]);
|
|
}
|
|
|
|
void addWithCoverageArgument(String script) {
|
|
runThese.add([
|
|
dart.toFilePath(),
|
|
"--enable-asserts",
|
|
script,
|
|
"--coverage=${coverageTmpDir.path}/",
|
|
]);
|
|
}
|
|
|
|
addSuiteSkipVm("pkg/front_end/test/strong_suite.dart");
|
|
addSuiteSkipVm("pkg/front_end/test/modular_suite.dart");
|
|
|
|
addWithCoverageArgument("pkg/front_end/test/messages_suite.dart");
|
|
addWithCoverageArgument("pkg/front_end/test/outline_suite.dart");
|
|
addWithCoverageArgument(
|
|
"pkg/front_end/test/textual_outline_suite.dart");
|
|
addWithCoverageArgument("pkg/front_end/test/expression_suite.dart");
|
|
addWithCoverageArgument(
|
|
"pkg/front_end/test/incremental_dartino_suite.dart");
|
|
addWithCoverageArgument("pkg/front_end/test/dartdoctest_suite.dart");
|
|
addWithCoverageArgument(
|
|
"pkg/front_end/test/incremental_bulk_compiler_smoke_suite.dart");
|
|
addWithCoverageArgument("pkg/front_end/test/incremental_suite.dart");
|
|
addWithCoverageArgument("pkg/front_end/test/lint_suite.dart");
|
|
addWithCoverageArgument("pkg/front_end/test/outline_extractor_suite.dart");
|
|
addWithCoverageArgument("pkg/front_end/test/parser_all_suite.dart");
|
|
addWithCoverageArgument("pkg/front_end/test/parser_equivalence_suite.dart");
|
|
addWithCoverageArgument("pkg/front_end/test/parser_suite.dart");
|
|
addWithCoverageArgument(
|
|
"pkg/front_end/test/spelling_test_not_src_suite.dart");
|
|
addWithCoverageArgument("pkg/front_end/test/spelling_test_src_suite.dart");
|
|
addWithCoverageArgument("pkg/front_end/test/compile_platform_coverage.dart");
|
|
|
|
runThese.add([
|
|
"python3",
|
|
"tools/test.py",
|
|
"-cfasta",
|
|
"-mrelease",
|
|
"-rnone",
|
|
"language"
|
|
]);
|
|
runThese.add([
|
|
dart.toFilePath(),
|
|
repoDirUri
|
|
.resolve("pkg/front_end/test/run_our_tests_with_coverage.dart")
|
|
.toFilePath()
|
|
]);
|
|
|
|
Map<String, String> environment =
|
|
new Map<String, String>.of(Platform.environment);
|
|
environment["CFE_COVERAGE"] = "${coverageTmpDir.path}/";
|
|
|
|
for (List<String> runThis in runThese) {
|
|
print("Starting $runThis");
|
|
Process p = await Process.start(
|
|
runThis.first,
|
|
runThis.skip(1).toList(),
|
|
environment: environment,
|
|
);
|
|
p.stdout
|
|
.transform(utf8.decoder)
|
|
.transform(const LineSplitter())
|
|
.listen((String line) {
|
|
print("stdout> $line");
|
|
});
|
|
p.stderr
|
|
.transform(utf8.decoder)
|
|
.transform(const LineSplitter())
|
|
.listen((String line) {
|
|
print("stderr> $line");
|
|
});
|
|
print("Exit code = ${await p.exitCode}");
|
|
}
|
|
|
|
// Don't include the not-compiled stuff as we've (mostly) asked the VM to
|
|
// force compile everything and that the remaining stuff is (mostly) mixins
|
|
// and const classes etc that shouldn't (necessarily) be compiled but is
|
|
// potentially covered in other ways.
|
|
await coverageMerger.mergeFromDirUri(
|
|
repoDirUri.resolve(".dart_tool/package_config.json"),
|
|
coverageTmpDir.uri,
|
|
silent: false,
|
|
extraCoverageIgnores: const [],
|
|
extraCoverageBlockIgnores: const [],
|
|
);
|
|
}
|