@@ -6,55 +6,87 @@ import 'dart:io';
66import 'package:path/path.dart' as p;
77import 'package:test_runner/src/utils.dart' ;
88
9- const commonArguments = [
10- 'run' ,
11- 'pkg/test_runner/tool/update_static_error_tests.dart' ,
12- '--update=cfe' ,
13- ];
9+ void main () async {
10+ const testNamePartsCfe = [
11+ 'language' ,
12+ 'compile_time_constant' ,
13+ 'compile_time_constant_test'
14+ ];
15+ const testNamePartsWeb = ['web' , 'extension_type_assert_error_test' ];
16+ const expectedLineCfe = 'Running CFE on 1 file...' ;
17+ final expectedUpdateTextCfe = '${testNamePartsCfe .last }.dart (3 errors)' ;
18+ final expectedLineCfeWeb =
19+ 'Running dart2js on ${toFileName (toFileNameParts (testNamePartsCfe ))}...' ;
20+
21+ final expectedLineWeb =
22+ 'Running dart2js on ${toFileName (toFileNameParts (testNamePartsWeb ))}...' ;
23+ final expectedUpdateTextWeb = '${testNamePartsWeb .last }.dart (1 error)' ;
1424
15- const testNameParts = [
16- 'language' ,
17- 'compile_time_constant' ,
18- 'compile_time_constant_test'
19- ];
25+ await doTest (toFileNameParts (testNamePartsCfe), testNamePartsCfe,
26+ '--update=cfe' , [expectedLineCfe], expectedUpdateTextCfe);
27+ await doTest (
28+ toFileNameParts (testNamePartsCfe),
29+ testNamePartsCfe,
30+ '--update=cfe,web' ,
31+ [expectedLineCfe, expectedLineCfeWeb],
32+ expectedUpdateTextCfe,
33+ runAll: false );
34+ await doTest (toFileNameParts (testNamePartsWeb), testNamePartsWeb,
35+ '--update=web' , [expectedLineWeb], expectedUpdateTextWeb,
36+ runAll: false );
37+ await doTest (
38+ toFileNameParts (testNamePartsWeb),
39+ testNamePartsWeb,
40+ '--update=web,cfe' ,
41+ [expectedLineCfe, expectedLineWeb],
42+ expectedUpdateTextWeb,
43+ runAll: false );
44+ }
2045
21- final fileNameParts = [
22- 'tests' ,
23- ...testNameParts.take (testNameParts.length - 1 ),
24- '${testNameParts .last }.dart' ,
25- ];
46+ List < String > toFileNameParts ( List < String > testNameParts) => [
47+ 'tests' ,
48+ ...testNameParts.take (testNameParts.length - 1 ),
49+ '${testNameParts .last }.dart' ,
50+ ];
2651
27- const expectedLine = 'Running CFE on 1 file...' ;
28- final expectedUpdateText = '${testNameParts .last }.dart (3 errors)' ;
52+ String toFileName (List <String > fileNameParts) => p.joinAll (fileNameParts);
2953
30- void main () async {
31- var testFile = File (p.joinAll (fileNameParts));
54+ Future <void > doTest (List <String > fileNameParts, List <String > testNameParts,
55+ String target, List <String > expectedLines, String expectedUpdateText,
56+ {bool runAll = true }) async {
57+ var testFile = File (toFileName (fileNameParts));
3258 var testContent = testFile.readAsStringSync ();
3359 try {
3460 var errorFound = false ;
3561
3662 var testName = testNameParts.join ('/' );
37- errorFound | = await run (testName);
63+ errorFound | =
64+ await run (testName, target, expectedLines, expectedUpdateText);
3865
39- var relativeNativePath = p.joinAll (fileNameParts);
40- errorFound | = await run (relativeNativePath);
66+ if (runAll) {
67+ var relativeNativePath = p.joinAll (fileNameParts);
68+ errorFound | = await run (
69+ relativeNativePath, target, expectedLines, expectedUpdateText);
4170
42- var relativeUriPath = fileNameParts.join ('/' );
43- errorFound | = await run (relativeUriPath);
71+ var relativeUriPath = fileNameParts.join ('/' );
72+ errorFound | =
73+ await run (relativeUriPath, target, expectedLines, expectedUpdateText);
4474
45- var absoluteNativePath = File (relativeNativePath).absolute.path;
46- var result = await run (absoluteNativePath);
47- if (Platform .isWindows) {
48- // TODO(johnniwinther,rnystrom): Support absolute paths on Windows.
49- if (! result) {
50- print ('Error: Expected failure on Windows. '
51- 'Update test to expect success on all platforms.' );
52- errorFound = true ;
75+ var absoluteNativePath = File (relativeNativePath).absolute.path;
76+ var result = await run (
77+ absoluteNativePath, target, expectedLines, expectedUpdateText);
78+ if (Platform .isWindows) {
79+ // TODO(johnniwinther,rnystrom): Support absolute paths on Windows.
80+ if (! result) {
81+ print ('Error: Expected failure on Windows. '
82+ 'Update test to expect success on all platforms.' );
83+ errorFound = true ;
84+ } else {
85+ print ('Error on Windows is expected.' );
86+ }
5387 } else {
54- print ( 'Error on Windows is expected.' ) ;
88+ errorFound | = result ;
5589 }
56- } else {
57- errorFound | = result;
5890 }
5991
6092 if (errorFound) {
@@ -67,9 +99,15 @@ void main() async {
6799 }
68100}
69101
70- Future <bool > run (String input) async {
102+ Future <bool > run (String input, String target, List <String > expectedLines,
103+ String expectedUpdateText) async {
104+ const commonArguments = [
105+ 'run' ,
106+ 'pkg/test_runner/tool/update_static_error_tests.dart' ,
107+ ];
108+
71109 var executable = Platform .resolvedExecutable;
72- var arguments = [...commonArguments, input];
110+ var arguments = [...commonArguments, target, input];
73111 print ('--------------------------------------------------------------------' );
74112 print ('Running: $executable ${arguments .join (' ' )}' );
75113 var process = await Process .start (executable, runInShell: true , arguments);
@@ -82,9 +120,11 @@ Future<bool> run(String input) async {
82120 print ('Exit code: $exitCode ' );
83121
84122 var hasError = false ;
85- if (! output.contains (expectedLine)) {
86- print ('Error: Expected output: $expectedLine ' );
87- hasError = true ;
123+ for (var expectedLine in expectedLines) {
124+ if (! output.contains (expectedLine)) {
125+ print ('Error: Expected output: $expectedLine ' );
126+ hasError = true ;
127+ }
88128 }
89129 if (! output.contains (expectedUpdateText)) {
90130 print ('Error: Expected update: $expectedUpdateText ' );
0 commit comments