Fix broken 'fasta testing sdk'.

This CL fixes some bugs and regressions in the 'fasta testing sdk' tool:

  * Plugs the excessive memory leak in suite.dart (thanks to jensj
    for helping tracking it down)
  * Fixes the signature of MultitestTransformer.bind such that it no
    longer causes a type error to happen at runtime.
  * Removes the code that disallows test name "none".
  * Updates the exclude list in testing.json

Change-Id: Ie850139c2228550c9847883d4fdaed839a052200
Reviewed-on: https://dart-review.googlesource.com/76840
Reviewed-by: Peter von der Ahé <ahe@google.com>
Commit-Queue: Daniel Hillerström <hillerstrom@google.com>
This commit is contained in:
Daniel Hillerström 2018-09-27 13:08:47 +00:00 committed by commit-bot@chromium.org
parent d79f7493b3
commit 71eaf3209b
3 changed files with 22 additions and 44 deletions

View file

@ -332,6 +332,7 @@ class Outline extends Step<TestDescription, Component, FastaContext> {
}
context.componentToTarget.clear();
context.componentToTarget[p] = sourceTarget;
context.componentToProblems.clear();
context.componentToProblems[p] = errors;
return pass(p);
});

View file

@ -215,41 +215,15 @@
"": "subtest name in multi test.",
"": "Tracked by: https://github.com/dart-lang/sdk/issues/28436",
"exclude": [
"/sdk/tests/language/arg_param_trailing_comma_test\\.dart$",
"/sdk/tests/language/assert_initializer_test\\.dart$",
"/sdk/tests/language/async_switch_test\\.dart$",
"/sdk/tests/language/case_expression_with_assignment_test\\.dart$",
"/sdk/tests/language/deep_nesting1_negative_test\\.dart$",
"/sdk/tests/language/deep_nesting2_negative_test\\.dart$",
"/sdk/tests/language/deferred_type_dependency_test\\.dart$",
"/sdk/tests/language/mixin_of_mixin_test\\.dart$",
"/sdk/tests/language/regress_23996_test\\.dart$",
"/sdk/tests/language/regress_28217_test\\.dart$",
"/sdk/tests/language/round_test\\.dart$",
"/sdk/tests/language_2/arg_param_trailing_comma_test\\.dart$",
"/sdk/tests/language_2/async_switch_test\\.dart$",
"/sdk/tests/language_2/built_in_identifier_type_annotation_test\\.dart$",
"/sdk/tests/language_2/case_expression_with_assignment_test\\.dart$",
"/sdk/tests/language_2/constructor_redirect1_negative_test\\.dart$",
"/sdk/tests/language_2/deferred_type_dependency_test\\.dart$",
"/sdk/tests/language_2/factory_redirection_test\\.dart$",
"/sdk/tests/language_2/factory2_test\\.dart$",
"/sdk/tests/language_2/factory3_test\\.dart$",
"/sdk/tests/language_2/field_initialization_order_test\\.dart$",
"/sdk/tests/language_2/field_override_test\\.dart$",
"/sdk/tests/language_2/field3_test\\.dart$",
"/sdk/tests/language_2/known_identifier_usage_test\\.dart$",
"/sdk/tests/language_2/map_literal11_test\\.dart$",
"/sdk/tests/language_2/abstract_getter2_test\\.dart$",
"/sdk/tests/language_2/round_test\\.dart$",
"/sdk/tests/language_2/regress_23996_test\\.dart$",
"/sdk/tests/language_2/regress_28217_test\\.dart$",
"/sdk/tests/language_2/regress_30669_test\\.dart$",
"/sdk/tests/language_2/regress_30927_test\\.dart$",
"/sdk/tests/language_2/runtime_type_function_test\\.dart$",
"/sdk/tests/language_2/setter_override_test\\.dart$",
"/sdk/tests/language_strong/function_type_alias10_test\\.dart$",
"/sdk/tests/language_strong/regress_30669_test\\.dart$",
"/sdk/tests/language_strong/regress_30927_test\\.dart$"
"/sdk/tests/language_2/setter_override_test\\.dart$"
]
},

View file

@ -10,7 +10,7 @@ import 'dart:io' show Directory, File;
import 'log.dart' show splitLines;
import 'test_description.dart' show FileBasedTestDescription;
import 'test_description.dart' show FileBasedTestDescription, TestDescription;
bool isError(Set<String> expectations) {
if (expectations.contains("compile-time error")) return true;
@ -24,8 +24,8 @@ bool isCheckedModeError(Set<String> expectations) {
return isError(expectations);
}
class MultitestTransformer extends StreamTransformerBase<
FileBasedTestDescription, FileBasedTestDescription> {
class MultitestTransformer
extends StreamTransformerBase<TestDescription, TestDescription> {
static RegExp multitestMarker = new RegExp(r"//[#/]");
static int _multitestMarkerLength = 3;
@ -42,8 +42,7 @@ class MultitestTransformer extends StreamTransformerBase<
static final Set<String> validOutcomes =
new Set<String>.from(validOutcomesList);
Stream<FileBasedTestDescription> bind(
Stream<FileBasedTestDescription> stream) async* {
Stream<TestDescription> bind(Stream<TestDescription> stream) async* {
List<String> errors = <String>[];
reportError(String error) {
errors.add(error);
@ -51,9 +50,17 @@ class MultitestTransformer extends StreamTransformerBase<
}
nextTest:
await for (FileBasedTestDescription test in stream) {
String contents = await test.file.readAsString();
if (!contents.contains(multitestMarker)) {
await for (TestDescription test in stream) {
FileBasedTestDescription multitest;
String contents;
if (test is FileBasedTestDescription) {
contents = await test.file.readAsString();
if (contents.contains(multitestMarker)) {
multitest = test;
}
}
if (multitest == null) {
yield test;
continue nextTest;
}
@ -82,13 +89,8 @@ class MultitestTransformer extends StreamTransformerBase<
.split(",")
.map((s) => s.trim())
.toList();
if (subtestName == "none") {
reportError(test.formatError(
"$lineNumber: $subtestName can't be used as test name."));
continue nextTest;
}
if (subtestOutcomesList.isEmpty) {
reportError(test
reportError(multitest
.formatError("$lineNumber: Expected <testname>:<outcomes>"));
continue nextTest;
}
@ -106,7 +108,7 @@ class MultitestTransformer extends StreamTransformerBase<
if (validOutcomes.contains(outcome)) {
subtestOutcomes.add(outcome);
} else {
reportError(test.formatError(
reportError(multitest.formatError(
"$lineNumber: '$outcome' isn't a recognized outcome."));
continue nextTest;
}
@ -120,7 +122,8 @@ class MultitestTransformer extends StreamTransformerBase<
}
}
Uri root = Uri.base.resolve("generated/");
Directory generated = new Directory.fromUri(root.resolve(test.shortName));
Directory generated =
new Directory.fromUri(root.resolve(multitest.shortName));
generated = await generated.create(recursive: true);
for (String name in testsAsLines.keys) {
List<String> lines = testsAsLines[name];