@@ -14,16 +14,16 @@ import 'package:test_core/src/runner/parse_metadata.dart';
1414final _path = 'test.dart' ;
1515
1616void main () {
17- test ('returns empty metadata for an empty file' , () {
18- var metadata = parseMetadata (_path, '' , {});
17+ test ('returns empty metadata for a file without annotations ' , () {
18+ var metadata = parseMetadata (_path, 'main(){} ' , {});
1919 expect (metadata.testOn, equals (PlatformSelector .all));
2020 expect (metadata.timeout.scaleFactor, equals (1 ));
2121 });
2222
2323 test ('ignores irrelevant annotations' , () {
2424 var metadata = parseMetadata (
2525 _path,
26- '@Fblthp\n @Fblthp.foo\n library foo;' ,
26+ '@Fblthp\n @Fblthp.foo\n library foo;main(){} ' ,
2727 {},
2828 );
2929 expect (metadata.testOn, equals (PlatformSelector .all));
@@ -33,7 +33,8 @@ void main() {
3333 var metadata = parseMetadata (
3434 _path,
3535 "@foo.TestOn('vm')\n "
36- "import 'package:test/test.dart' as foo;" ,
36+ "import 'package:test/test.dart' as foo;\n "
37+ 'main(){}' ,
3738 {},
3839 );
3940 expect (
@@ -46,9 +47,20 @@ void main() {
4647 );
4748 });
4849
50+ test ('throws for missing definition of `main`' , () {
51+ expect (
52+ () => parseMetadata (_path, 'void notMain() {}' , {}),
53+ throwsFormatException,
54+ );
55+ });
56+
4957 group ('@TestOn:' , () {
5058 test ('parses a valid annotation' , () {
51- var metadata = parseMetadata (_path, "@TestOn('vm')\n library foo;" , {});
59+ var metadata = parseMetadata (
60+ _path,
61+ "@TestOn('vm')\n library foo;\n main(){}" ,
62+ {},
63+ );
5264 expect (
5365 metadata.testOn.evaluate (SuitePlatform (Runtime .vm, compiler: null )),
5466 isTrue,
@@ -62,7 +74,7 @@ void main() {
6274 test ('ignores a constructor named TestOn' , () {
6375 var metadata = parseMetadata (
6476 _path,
65- "@foo.TestOn('foo')\n library foo;" ,
77+ "@foo.TestOn('foo')\n library foo;\n main(){} " ,
6678 {},
6779 );
6880 expect (metadata.testOn, equals (PlatformSelector .all));
@@ -93,6 +105,7 @@ void main() {
93105 microseconds: 5))
94106
95107library foo;
108+ main(){}
96109''' , {});
97110 expect (
98111 metadata.timeout.duration,
@@ -118,6 +131,7 @@ library foo;
118131 microseconds: 5))
119132
120133library foo;
134+ main(){}
121135''' , {});
122136 expect (
123137 metadata.timeout.duration,
@@ -142,6 +156,7 @@ library foo;
142156 milliseconds: 4,
143157 microseconds: 5))
144158import 'dart:core' as core;
159+ main(){}
145160''' , {});
146161 expect (
147162 metadata.timeout.duration,
@@ -162,6 +177,7 @@ import 'dart:core' as core;
162177@Timeout.factor(1)
163178
164179library foo;
180+ main(){}
165181''' , {});
166182 expect (metadata.timeout.scaleFactor, equals (1 ));
167183 });
@@ -170,6 +186,7 @@ library foo;
170186 var metadata = parseMetadata (_path, '''
171187@test.Timeout.factor(1)
172188import 'package:test/test.dart' as test;
189+ main(){}
173190''' , {});
174191 expect (metadata.timeout.scaleFactor, equals (1 ));
175192 });
@@ -179,6 +196,7 @@ import 'package:test/test.dart' as test;
179196@Timeout.factor(0.5)
180197
181198library foo;
199+ main(){}
182200''' , {});
183201 expect (metadata.timeout.scaleFactor, equals (0.5 ));
184202 });
@@ -188,14 +206,15 @@ library foo;
188206@Timeout.none
189207
190208library foo;
209+ main(){}
191210''' , {});
192211 expect (metadata.timeout, same (Timeout .none));
193212 });
194213
195214 test ('ignores a constructor named Timeout' , () {
196215 var metadata = parseMetadata (
197216 _path,
198- "@foo.Timeout('foo')\n library foo;" ,
217+ "@foo.Timeout('foo')\n library foo;\n main(){} " ,
199218 {},
200219 );
201220 expect (metadata.timeout.scaleFactor, equals (1 ));
@@ -217,19 +236,31 @@ library foo;
217236
218237 group ('@Skip:' , () {
219238 test ('parses a valid annotation' , () {
220- var metadata = parseMetadata (_path, '@Skip()\n library foo;' , {});
239+ var metadata = parseMetadata (
240+ _path,
241+ '@Skip()\n library foo;\n main(){}' ,
242+ {},
243+ );
221244 expect (metadata.skip, isTrue);
222245 expect (metadata.skipReason, isNull);
223246 });
224247
225248 test ('parses a valid annotation with a reason' , () {
226- var metadata = parseMetadata (_path, "@Skip('reason')\n library foo;" , {});
249+ var metadata = parseMetadata (
250+ _path,
251+ "@Skip('reason')\n library foo;\n main(){}" ,
252+ {},
253+ );
227254 expect (metadata.skip, isTrue);
228255 expect (metadata.skipReason, equals ('reason' ));
229256 });
230257
231258 test ('ignores a constructor named Skip' , () {
232- var metadata = parseMetadata (_path, "@foo.Skip('foo')\n library foo;" , {});
259+ var metadata = parseMetadata (
260+ _path,
261+ "@foo.Skip('foo')\n library foo;\n main(){}" ,
262+ {},
263+ );
233264 expect (metadata.skip, isFalse);
234265 });
235266
@@ -249,12 +280,20 @@ library foo;
249280
250281 group ('@Tags:' , () {
251282 test ('parses a valid annotation' , () {
252- var metadata = parseMetadata (_path, "@Tags(['a'])\n library foo;" , {});
283+ var metadata = parseMetadata (
284+ _path,
285+ "@Tags(['a'])\n library foo;\n main(){}" ,
286+ {},
287+ );
253288 expect (metadata.tags, equals (['a' ]));
254289 });
255290
256291 test ('ignores a constructor named Tags' , () {
257- var metadata = parseMetadata (_path, "@foo.Tags(['a'])\n library foo;" , {});
292+ var metadata = parseMetadata (
293+ _path,
294+ "@foo.Tags(['a'])\n library foo;\n main(){}" ,
295+ {},
296+ );
258297 expect (metadata.tags, isEmpty);
259298 });
260299
@@ -290,7 +329,8 @@ library foo;
290329 'chrome': Timeout.factor(2),
291330 'vm': [Skip(), Timeout.factor(3)]
292331})
293- library foo;''' , {});
332+ library foo;
333+ main(){}''' , {});
294334
295335 var key = metadata.onPlatform.keys.first;
296336 expect (
@@ -319,6 +359,7 @@ library foo;''', {});
319359 'vm': [test.Skip(), test.Timeout.factor(3)]
320360})
321361import 'package:test/test.dart' as test;
362+ main(){}
322363''' , {});
323364
324365 var key = metadata.onPlatform.keys.first;
@@ -344,7 +385,7 @@ import 'package:test/test.dart' as test;
344385 test ('ignores a constructor named OnPlatform' , () {
345386 var metadata = parseMetadata (
346387 _path,
347- "@foo.OnPlatform('foo')\n library foo;" ,
388+ "@foo.OnPlatform('foo')\n library foo;main(){} " ,
348389 {},
349390 );
350391 expect (metadata.testOn, equals (PlatformSelector .all));
0 commit comments