Reland "[pkg/test_runner] Write experiments to results.json"

This is a reland of 4e34ea06a9

TBR=athom@google.com

Original change's description:
> [pkg/test_runner] Write experiments to results.json
>
> Change-Id: I32423ddf665a24443de1ad60ca8f323f5c6d3aca
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/196489
> Reviewed-by: Alexander Thomas <athom@google.com>
> Commit-Queue: Karl Klose <karlklose@google.com>

Change-Id: I894616f77cb47df25c8da46d2bf6ddb87734db41
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/198404
Reviewed-by: Karl Klose <karlklose@google.com>
Commit-Queue: Karl Klose <karlklose@google.com>
This commit is contained in:
Karl Klose 2021-05-06 07:49:52 +00:00 committed by commit-bot@chromium.org
parent 26fa3e8e6d
commit 323cd5914e
3 changed files with 15 additions and 6 deletions

View file

@ -9,6 +9,7 @@ import 'configuration.dart';
import 'path.dart';
import 'repository.dart';
import 'runtime_configuration.dart';
import 'test_case.dart' show TestCase;
import 'test_file.dart';
import 'utils.dart';
@ -25,10 +26,7 @@ List<String> _replaceDartFiles(List<String> list, String replacement) {
/// list allows the result of calling this to be spread into another list.
List<String> _experimentsArgument(
TestConfiguration configuration, TestFile testFile) {
var experiments = {
...configuration.experiments,
...testFile.experiments,
};
var experiments = TestCase.getExperiments(testFile, configuration);
if (experiments.isEmpty) {
return const [];
}

View file

@ -66,6 +66,16 @@ class TestCase {
assert(commands.isNotEmpty);
}
List<String> get experiments => getExperiments(testFile, configuration);
static List<String> getExperiments(
TestFile testFile, TestConfiguration configuration) {
return [
...testFile.experiments,
...configuration.experiments,
];
}
TestCase indexedCopy(int index) {
var newCommands = commands.map((c) => c.indexedCopy(index)).toList();
return TestCase(displayName, newCommands, configuration, expectedOutcomes,

View file

@ -656,7 +656,7 @@ class ResultWriter extends EventListener {
var testName = name.substring(index + 1);
var time =
test.commandOutputs.values.fold(Duration.zero, (d, o) => d + o.time);
var experiments = test.experiments;
var record = {
"name": name,
"configuration": test.configuration.configuration.name,
@ -665,7 +665,8 @@ class ResultWriter extends EventListener {
"time_ms": time.inMilliseconds,
"result": test.realResult.toString(),
"expected": test.realExpected.toString(),
"matches": test.realResult.canBeOutcomeOf(test.realExpected)
"matches": test.realResult.canBeOutcomeOf(test.realExpected),
if (experiments.isNotEmpty) "experiments": experiments,
};
_results.add(record);
if (test.configuration.writeLogs && record['matches'] != true) {