Index: tools/testing/dart/multitest.dart |
diff --git a/tools/testing/dart/multitest.dart b/tools/testing/dart/multitest.dart |
index b714e718e84412fefbadc5c2110b410677346906..d0402da14d4ea34fea663bbb79becbfd63297755 100644 |
--- a/tools/testing/dart/multitest.dart |
+++ b/tools/testing/dart/multitest.dart |
@@ -12,6 +12,9 @@ import "test_suite.dart"; |
import "utils.dart"; |
// Multitests are Dart test scripts containing lines of the form |
+// " [some dart code] //# [key]: [error type]" |
+// |
+// To support legacy multi tests we also handle lines of the form |
// " [some dart code] /// [key]: [error type]" |
// |
// For each key in the file, a new test file is made containing all |
@@ -28,10 +31,10 @@ import "utils.dart"; |
// |
// For example: file I_am_a_multitest.dart |
// aaa |
-// bbb /// 02: runtime error |
-// ccc /// 02: continued |
-// ddd /// 07: static type warning |
-// eee /// 10: ok |
+// bbb //# 02: runtime error |
+// ccc //# 02: continued |
+// ddd //# 07: static type warning |
+// eee //# 10: ok |
// fff |
// |
// should create four tests: |
@@ -41,26 +44,29 @@ import "utils.dart"; |
// |
// I_am_a_multitest_02.dart |
// aaa |
-// bbb /// 02: runtime error |
-// ccc /// 02: continued |
+// bbb //# 02: runtime error |
+// ccc //# 02: continued |
// fff |
// |
// I_am_a_multitest_07.dart |
// aaa |
-// ddd /// 07: static type warning |
+// ddd //# 07: static type warning |
// fff |
// |
// and I_am_a_multitest_10.dart |
// aaa |
-// eee /// 10: ok |
+// eee //# 10: ok |
// fff |
// |
// Note that it is possible to indicate more than one acceptable outcome |
// in the case of dynamic and static type warnings |
// aaa |
-// ddd /// 07: static type warning, dynamic type error |
+// ddd //# 07: static type warning, dynamic type error |
// fff |
+/// Until legacy multitests are ported we need to support both /// and //# |
+final _multitestMarker = new RegExp(r"//[/#]"); |
+ |
void ExtractTestsFromMultitest(Path filePath, Map<String, String> tests, |
Map<String, Set<String>> outcomes) { |
// Read the entire file into a byte buffer and transform it to a |
@@ -69,8 +75,10 @@ void ExtractTestsFromMultitest(Path filePath, Map<String, String> tests, |
List bytes = new File(filePath.toNativePath()).readAsBytesSync(); |
String contents = decodeUtf8(bytes); |
int first_newline = contents.indexOf('\n'); |
- final String line_separator = (first_newline == 0 || |
- contents[first_newline - 1] != '\r') ? '\n' : '\r\n'; |
+ final String line_separator = |
+ (first_newline == 0 || contents[first_newline - 1] != '\r') |
+ ? '\n' |
+ : '\r\n'; |
List<String> lines = contents.split(line_separator); |
if (lines.last == '') lines.removeLast(); |
bytes = null; |
@@ -148,7 +156,7 @@ void ExtractTestsFromMultitest(Path filePath, Map<String, String> tests, |
} |
} |
-// Represents a mutlitest annotation in the special /// comment. |
+// Represents a mutlitest annotation in the special //# comment. |
class _Annotation { |
String key; |
String rest; |
@@ -157,11 +165,11 @@ class _Annotation { |
factory _Annotation.from(String line) { |
// Do an early return with "null" if this is not a valid multitest |
// annotation. |
- if (!line.contains('///')) { |
+ if (!line.contains(_multitestMarker)) { |
return null; |
} |
var parts = line |
- .split('///')[1] |
+ .split(_multitestMarker)[1] |
.split(':') |
.map((s) => s.trim()) |
.where((s) => s.length > 0) |
@@ -220,12 +228,8 @@ Set<String> _findAllRelativeImports(Path topLibrary) { |
return foundImports; |
} |
-Future doMultitest( |
- Path filePath, |
- String outputDir, |
- Path suiteDir, |
- CreateTest doTest, |
- bool hotReload) { |
+Future doMultitest(Path filePath, String outputDir, Path suiteDir, |
+ CreateTest doTest, bool hotReload) { |
void writeFile(String filepath, String content) { |
final File file = new File(filepath); |
@@ -306,8 +310,10 @@ String suiteNameFromPath(Path suiteDir) { |
Path createMultitestDirectory(String outputDir, Path suiteDir, Path sourceDir) { |
Path relative = sourceDir.relativeTo(suiteDir); |
- Path path = new Path(outputDir).append('generated_tests') |
- .append(suiteNameFromPath(suiteDir)).join(relative); |
+ Path path = new Path(outputDir) |
+ .append('generated_tests') |
+ .append(suiteNameFromPath(suiteDir)) |
+ .join(relative); |
TestUtils.mkdirRecursive(TestUtils.currentWorkingDirectory, path); |
return new Path(new File(path.toNativePath()).absolute.path); |
} |