Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3194)

Unified Diff: dart/tools/testing/dart/test_suite.dart

Issue 11881053: Correctly implement co19 test suite. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Rebased and fixed bugs Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « dart/tests/co19/co19-compiler.status ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: dart/tools/testing/dart/test_suite.dart
diff --git a/dart/tools/testing/dart/test_suite.dart b/dart/tools/testing/dart/test_suite.dart
index e5f33ea2685468acf4e28cf95c369b510fb244b9..62da33d43a59bdadf6f5bba6e1ab9a4c627dd930 100644
--- a/dart/tools/testing/dart/test_suite.dart
+++ b/dart/tools/testing/dart/test_suite.dart
@@ -418,6 +418,8 @@ class StandardTestSuite extends TestSuite {
*/
List serverList;
+ static final RegExp multiTestRegExp = new RegExp(r"/// [0-9][0-9]:(.*)");
+
StandardTestSuite(Map configuration,
String suiteName,
Path suiteDirectory,
@@ -1290,11 +1292,13 @@ class StandardTestSuite extends TestSuite {
* configurations, so it may not use [configuration].
*/
static Map readOptionsFromFile(Path filePath) {
+ if (filePath.segments().contains('co19')) {
+ return readOptionsFromCo19File(filePath);
+ }
RegExp testOptionsRegExp = new RegExp(r"// VMOptions=(.*)");
RegExp dartOptionsRegExp = new RegExp(r"// DartOptions=(.*)");
RegExp otherScriptsRegExp = new RegExp(r"// OtherScripts=(.*)");
RegExp packageRootRegExp = new RegExp(r"// PackageRoot=(.*)");
- RegExp multiTestRegExp = new RegExp(r"/// [0-9][0-9]:(.*)");
RegExp multiHtmlTestRegExp =
new RegExp(r"useHtmlIndividualConfiguration()");
RegExp staticTypeRegExp =
@@ -1320,8 +1324,6 @@ class StandardTestSuite extends TestSuite {
List<List> result = new List<List>();
List<String> dartOptions;
String packageRoot;
- bool hasCompileError = contents.contains("@compile-error");
- bool hasRuntimeError = contents.contains("@runtime-error");
bool isStaticClean = false;
Iterable<Match> matches = testOptionsRegExp.allMatches(contents);
@@ -1401,8 +1403,8 @@ class StandardTestSuite extends TestSuite {
return { "vmOptions": result,
"dartOptions": dartOptions,
"packageRoot": packageRoot,
- "hasCompileError": hasCompileError,
- "hasRuntimeError": hasRuntimeError,
+ "hasCompileError": false,
+ "hasRuntimeError": false,
"isStaticClean" : isStaticClean,
"otherScripts": otherScripts,
"isMultitest": isMultitest,
@@ -1430,6 +1432,64 @@ class StandardTestSuite extends TestSuite {
// may lead to reads from empty files.
return [vmOptions[0]];
}
+
+ /**
+ * Read options from a co19 test file.
+ *
+ * The reason this is different from [readOptionsFromFile] is that
+ * co19 is developed based on a contract which defines certain test
+ * tags. These tags may appear unused, but should not be removed
+ * without consulting with the co19 team.
+ *
+ * Also, [readOptionsFromFile] recognizes a number of additional
+ * tags that are not appropriate for use in general tests of
+ * conformance to the Dart language. Any Dart implementation must
+ * pass the co19 test suite as is, and not require extra flags,
+ * environment variables, configuration files, etc.
+ */
+ static Map readOptionsFromCo19File(Path filePath) {
+ String contents = decodeUtf8(new File.fromPath(filePath).readAsBytesSync());
+
+ bool hasCompileError = contents.contains("@compile-error");
+ bool hasRuntimeError = contents.contains("@runtime-error");
+ bool hasDynamicTypeError = contents.contains("@dynamic-type-error");
+ bool hasStaticWarning = contents.contains("@static-warning");
+ bool isMultitest = multiTestRegExp.hasMatch(contents);
+
+ if (hasDynamicTypeError) {
+ // TODO(ahe): Remove this warning when co19 no longer uses this tag.
+
+ // @dynamic-type-error has been replaced by tests that use
+ // tests/co19/src/Utils/dynamic_check.dart to dynamically detect
+ // if a test is running in checked mode or not and change its
+ // expectations accordingly.
+
+ // Using stderr.writeString to avoid breaking dartc/junit_tests
+ // which parses the output of the --list option.
+ stderr.writeString(
+ "\nWarning: deprecated @dynamic-type-error tag used in $filePath");
+ }
+
+ return {
+ "vmOptions": <List>[[]],
+ "dartOptions": null,
+ "packageRoot": null,
+ "hasCompileError": hasCompileError,
+ "hasRuntimeError": hasRuntimeError,
+ "isStaticClean" : !hasStaticWarning,
+ "otherScripts": <String>[],
+ "isMultitest": isMultitest,
+ "isMultiHtmlTest": false,
+ "subtestNames": <String>[],
+ "containsLeadingHash": false,
+ "isolateStubs": '',
+ "containsDomImport": false,
+ "isLibraryDefinition": false,
+ "containsSourceOrImport": false,
+ "numStaticTypeAnnotations": 0,
+ "numCompileTimeAnnotations": 0,
+ };
+ }
}
« no previous file with comments | « dart/tests/co19/co19-compiler.status ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698