mirror of
https://github.com/dart-lang/sdk
synced 2024-10-06 14:49:43 +00:00
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:
parent
d79f7493b3
commit
71eaf3209b
|
@ -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);
|
||||
});
|
||||
|
|
|
@ -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$"
|
||||
]
|
||||
},
|
||||
|
||||
|
|
|
@ -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];
|
||||
|
|
Loading…
Reference in a new issue