diff --git a/LibTest/async/Completer/completeError_A01_t03.dart b/LibTest/async/Completer/completeError_A01_t03.dart index f094aba929..31add756d9 100644 --- a/LibTest/async/Completer/completeError_A01_t03.dart +++ b/LibTest/async/Completer/completeError_A01_t03.dart @@ -19,7 +19,7 @@ main() { var v = [1,2,3]; - asyncMultiStart(2); + asyncStart(2); var f = new Future.value(v).then((x) { asyncEnd(); @@ -34,4 +34,3 @@ main() { completer.completeError(f); } - diff --git a/LibTest/async/Completer/completeError_A01_t04.dart b/LibTest/async/Completer/completeError_A01_t04.dart index c4deaeb9ed..5e4bd305ce 100644 --- a/LibTest/async/Completer/completeError_A01_t04.dart +++ b/LibTest/async/Completer/completeError_A01_t04.dart @@ -19,7 +19,7 @@ main() { var e = new Error(); - asyncMultiStart(2); + asyncStart(2); var f = new Future.error(e).catchError((x) { asyncEnd(); diff --git a/LibTest/async/Future/Future.microtask_A01_t03.dart b/LibTest/async/Future/Future.microtask_A01_t03.dart index f05085423e..9b1ea30a5e 100644 --- a/LibTest/async/Future/Future.microtask_A01_t03.dart +++ b/LibTest/async/Future/Future.microtask_A01_t03.dart @@ -22,7 +22,7 @@ main() { var completer2 = new Completer(); Future future2 = new Future.microtask(() => completer2.future); - asyncMultiStart(2); + asyncStart(2); future .then((x) { diff --git a/LibTest/async/Future/Future.sync_A01_t04.dart b/LibTest/async/Future/Future.sync_A01_t04.dart index a19c62da21..71dd52a382 100644 --- a/LibTest/async/Future/Future.sync_A01_t04.dart +++ b/LibTest/async/Future/Future.sync_A01_t04.dart @@ -27,7 +27,7 @@ main() { var completer2 = new Completer(); Future future2 = new Future.sync(() => completer2.future); - asyncMultiStart(2); + asyncStart(2); future .then((x) { diff --git a/LibTest/async/Future/Future_A01_t03.dart b/LibTest/async/Future/Future_A01_t03.dart index 3c7f0aafa9..f618e1173b 100644 --- a/LibTest/async/Future/Future_A01_t03.dart +++ b/LibTest/async/Future/Future_A01_t03.dart @@ -22,7 +22,7 @@ import "../../../Utils/expect.dart"; main() { var value = [1, 2, 3]; - asyncMultiStart(2); + asyncStart(2); Future future = new Future(() => new Future.value(value)); Future future2 = new Future(() => new Future.error(value)); diff --git a/LibTest/async/Future/catchError_A01_t02.dart b/LibTest/async/Future/catchError_A01_t02.dart index 6871c06302..9093dbd468 100644 --- a/LibTest/async/Future/catchError_A01_t02.dart +++ b/LibTest/async/Future/catchError_A01_t02.dart @@ -28,6 +28,6 @@ main() { f.catchError(onError1); f.catchError(onError2); - asyncMultiStart(2); + asyncStart(2); completer.completeError('!!!'); } diff --git a/LibTest/async/Future/catchError_A06_t01.dart b/LibTest/async/Future/catchError_A06_t01.dart index 50cdc5a91b..818f5a6b32 100644 --- a/LibTest/async/Future/catchError_A06_t01.dart +++ b/LibTest/async/Future/catchError_A06_t01.dart @@ -25,7 +25,7 @@ check(value) { Completer completer = new Completer(); Future f = completer.future; - asyncMultiStart(2); + asyncStart(2); f.catchError( (exception) { diff --git a/LibTest/async/Stream/asBroadcastStream_A01_t05.dart b/LibTest/async/Stream/asBroadcastStream_A01_t05.dart index 3051845b61..09220b1e0f 100644 --- a/LibTest/async/Stream/asBroadcastStream_A01_t05.dart +++ b/LibTest/async/Stream/asBroadcastStream_A01_t05.dart @@ -25,7 +25,7 @@ main() { ); Stream b = controller.stream.asBroadcastStream(); Expect.isFalse(hasListener); - asyncMultiStart(2); + asyncStart(2); b.listen( (_) { Expect.isTrue(hasListener); diff --git a/LibTest/async/Stream/handleError_A04_t01.dart b/LibTest/async/Stream/handleError_A04_t01.dart index f737538848..d5540eaff7 100644 --- a/LibTest/async/Stream/handleError_A04_t01.dart +++ b/LibTest/async/Stream/handleError_A04_t01.dart @@ -38,7 +38,7 @@ main() { asyncEnd(); }); - asyncMultiStart(N); + asyncStart(N); s3.listen((_) { Expect.fail('unexpected onData event'); diff --git a/LibTest/async/Stream/listen_A05_t01.dart b/LibTest/async/Stream/listen_A05_t01.dart index a08418e243..933a707abd 100644 --- a/LibTest/async/Stream/listen_A05_t01.dart +++ b/LibTest/async/Stream/listen_A05_t01.dart @@ -33,7 +33,7 @@ main() { } }); - asyncMultiStart(N); + asyncStart(N); s2.listen((_) { Expect.fail('unexpected call to onData'); diff --git a/LibTest/async/Stream/pipe_A04_t02.test.dart b/LibTest/async/Stream/pipe_A04_t02.test.dart index d8421408ec..dc37140e1e 100644 --- a/LibTest/async/Stream/pipe_A04_t02.test.dart +++ b/LibTest/async/Stream/pipe_A04_t02.test.dart @@ -52,7 +52,7 @@ void test(CreateStreamFunction create) { } ); - asyncMultiStart(2); + asyncStart(2); s.pipe(c).then( (_) { Expect.fail("Returned future should complete with error"); diff --git a/LibTest/async/StreamController/StreamController.broadcast_A01_t03.dart b/LibTest/async/StreamController/StreamController.broadcast_A01_t03.dart index f1f1569383..3e351714e2 100644 --- a/LibTest/async/StreamController/StreamController.broadcast_A01_t03.dart +++ b/LibTest/async/StreamController/StreamController.broadcast_A01_t03.dart @@ -25,7 +25,7 @@ check(List events) { List expectedData = events.where((e) => !(e is num) || e >= 0).toList(); List expectedErrors = events.where((e) => e is num && e < 0).toList(); - asyncMultiStart(2); + asyncStart(2); List events1 = [], errors1 = []; s.listen( diff --git a/LibTest/async/StreamController/StreamController.broadcast_A04_t02.dart b/LibTest/async/StreamController/StreamController.broadcast_A04_t02.dart index 0125fe89d3..9526bde78a 100644 --- a/LibTest/async/StreamController/StreamController.broadcast_A04_t02.dart +++ b/LibTest/async/StreamController/StreamController.broadcast_A04_t02.dart @@ -18,7 +18,7 @@ import "../../../Utils/expect.dart"; main() { StreamController controller = new StreamController.broadcast(); Stream stream = controller.stream; - asyncMultiStart(2); + asyncStart(2); List log1 = []; StreamSubscription sub1 = stream.listen((event) => log1.add(event), onDone: () { @@ -27,8 +27,7 @@ main() { }); List log2 = []; - StreamSubscription sub2 = - stream.listen((event) => log2.add(event), onDone: () { + stream.listen((event) => log2.add(event), onDone: () { Expect.listEquals([1, 2, 3, 4, 5], log2); asyncEnd(); }); diff --git a/LibTest/async/StreamController/StreamController.broadcast_A07_t03.dart b/LibTest/async/StreamController/StreamController.broadcast_A07_t03.dart index dafd54b41e..6afc388b2f 100644 --- a/LibTest/async/StreamController/StreamController.broadcast_A07_t03.dart +++ b/LibTest/async/StreamController/StreamController.broadcast_A07_t03.dart @@ -16,7 +16,7 @@ import "../../../Utils/expect.dart"; main() { int onCancelCallCount = 0; - asyncMultiStart(6); + asyncStart(6); StreamController? controller; controller = new StreamController.broadcast( onCancel: () { diff --git a/LibTest/async/StreamController/StreamController.broadcast_A08_t01.dart b/LibTest/async/StreamController/StreamController.broadcast_A08_t01.dart index f351a20399..86dd8b27dc 100644 --- a/LibTest/async/StreamController/StreamController.broadcast_A08_t01.dart +++ b/LibTest/async/StreamController/StreamController.broadcast_A08_t01.dart @@ -17,7 +17,7 @@ import "../../../Utils/expect.dart"; main() { bool onListenCalled = false; bool onCancelCalled = false; - asyncMultiStart(4); + asyncStart(4); StreamController controller = new StreamController.broadcast( onListen: () { @@ -44,4 +44,3 @@ main() { controller.close(); } - diff --git a/LibTest/async/StreamTransformer/StreamTransformer_A03_t01.dart b/LibTest/async/StreamTransformer/StreamTransformer_A03_t01.dart index fb6aa06209..36d57ffa1e 100644 --- a/LibTest/async/StreamTransformer/StreamTransformer_A03_t01.dart +++ b/LibTest/async/StreamTransformer/StreamTransformer_A03_t01.dart @@ -38,7 +38,7 @@ main() { } ); - asyncMultiStart(3); + asyncStart(3); c.stream.transform(tr).listen( (x) { diff --git a/LibTest/async/Zone/handleUncaughtError_A01_t04.dart b/LibTest/async/Zone/handleUncaughtError_A01_t04.dart index 98016113ec..a37a55f67d 100644 --- a/LibTest/async/Zone/handleUncaughtError_A01_t04.dart +++ b/LibTest/async/Zone/handleUncaughtError_A01_t04.dart @@ -32,7 +32,7 @@ void test() { } catch (e, st) { stackTraces[count] = st; - asyncMultiStart(2); + asyncStart(2); new Future.error(e,st); diff --git a/LibTest/html/Element/addEventListener_A01_t03.dart b/LibTest/html/Element/addEventListener_A01_t03.dart index 7daa868623..f7e4577e2a 100644 --- a/LibTest/html/Element/addEventListener_A01_t03.dart +++ b/LibTest/html/Element/addEventListener_A01_t03.dart @@ -15,7 +15,7 @@ main() { var x = new ButtonElement(); document.body?.append(x); - asyncMultiStart(3); + asyncStart(3); x.addEventListener(type, (e) { Expect.equals(type, e.type); diff --git a/LibTest/html/Element/addEventListener_A01_t04.dart b/LibTest/html/Element/addEventListener_A01_t04.dart index 69f722dc85..f9d8b6154d 100644 --- a/LibTest/html/Element/addEventListener_A01_t04.dart +++ b/LibTest/html/Element/addEventListener_A01_t04.dart @@ -16,7 +16,7 @@ main() { var x = new ButtonElement(); document.body?.append(x); - asyncMultiStart(2); + asyncStart(2); // intercept on capture document.body?.addEventListener(type, (e) { diff --git a/LibTest/html/Element/addEventListener_A01_t05.dart b/LibTest/html/Element/addEventListener_A01_t05.dart index 07afc977c4..8363b1c347 100644 --- a/LibTest/html/Element/addEventListener_A01_t05.dart +++ b/LibTest/html/Element/addEventListener_A01_t05.dart @@ -17,7 +17,7 @@ main() { var n = 10; - asyncMultiStart(n); + asyncStart(n); EventListener genHandler() => (e) { Expect.equals(type, e.type); diff --git a/LibTest/html/Element/addEventListener_A01_t06.dart b/LibTest/html/Element/addEventListener_A01_t06.dart index 228b7d1d12..95c70c547a 100644 --- a/LibTest/html/Element/addEventListener_A01_t06.dart +++ b/LibTest/html/Element/addEventListener_A01_t06.dart @@ -17,7 +17,7 @@ main() { var n = 10; - asyncMultiStart(n); + asyncStart(n); EventListener genHandler() => (e) { Expect.equals(type, e.type); diff --git a/LibTest/html/Element/removeEventListener_A01_t01.dart b/LibTest/html/Element/removeEventListener_A01_t01.dart index 286a937019..b3a2692f85 100644 --- a/LibTest/html/Element/removeEventListener_A01_t01.dart +++ b/LibTest/html/Element/removeEventListener_A01_t01.dart @@ -33,7 +33,7 @@ main() { x.addEventListener(type, handler1); x.addEventListener(type, handler2); - asyncMultiStart(3); // first time two handlers, second time one handler + asyncStart(3); // first time two handlers, second time one handler var event = new Event(type); x.dispatchEvent(event); event = new Event(type); diff --git a/LibTest/html/Element/removeEventListener_A01_t02.dart b/LibTest/html/Element/removeEventListener_A01_t02.dart index 8cf3a0f354..22ed05a621 100644 --- a/LibTest/html/Element/removeEventListener_A01_t02.dart +++ b/LibTest/html/Element/removeEventListener_A01_t02.dart @@ -35,7 +35,7 @@ main() { body?.addEventListener(type, handler1, true); body?.addEventListener(type, handler2, true); - asyncMultiStart(3); // first time two handlers, second time one handler + asyncStart(3); // first time two handlers, second time one handler var event = new Event(type); x.dispatchEvent(event); event = new Event(type); diff --git a/LibTest/html/Event/currentTarget_A01_t01.dart b/LibTest/html/Event/currentTarget_A01_t01.dart index ac6ec07317..d9316cb3ac 100644 --- a/LibTest/html/Event/currentTarget_A01_t01.dart +++ b/LibTest/html/Event/currentTarget_A01_t01.dart @@ -24,6 +24,6 @@ main() { asyncEnd(); }); - asyncMultiStart(2); + asyncStart(2); div.dispatchEvent(new MouseEvent('click')); } diff --git a/LibTest/html/Event/defaultPrevented_A01_t01.dart b/LibTest/html/Event/defaultPrevented_A01_t01.dart index 1b657ff373..9a65b69aae 100644 --- a/LibTest/html/Event/defaultPrevented_A01_t01.dart +++ b/LibTest/html/Event/defaultPrevented_A01_t01.dart @@ -25,6 +25,6 @@ main() { asyncEnd(); }); - asyncMultiStart(2); + asyncStart(2); div.dispatchEvent(new MouseEvent('click')); } diff --git a/LibTest/html/Event/eventPhase_A01_t01.dart b/LibTest/html/Event/eventPhase_A01_t01.dart index 88fbc55d6a..22c1d43ddc 100644 --- a/LibTest/html/Event/eventPhase_A01_t01.dart +++ b/LibTest/html/Event/eventPhase_A01_t01.dart @@ -30,7 +30,7 @@ main() { asyncEnd(); }); - asyncMultiStart(3); + asyncStart(3); div.dispatchEvent(new MouseEvent('click')); } else { Expect.fail("Body is null"); diff --git a/LibTest/html/Event/matchingTarget_A01_t01.dart b/LibTest/html/Event/matchingTarget_A01_t01.dart index ab454cbc50..7763be1d7c 100644 --- a/LibTest/html/Event/matchingTarget_A01_t01.dart +++ b/LibTest/html/Event/matchingTarget_A01_t01.dart @@ -38,7 +38,7 @@ main() { asyncEnd(); }); - asyncMultiStart(2); + asyncStart(2); id1.click(); class1.click(); } else { diff --git a/LibTest/html/Event/target_A01_t01.dart b/LibTest/html/Event/target_A01_t01.dart index 5ab9712980..876cfbe4bd 100644 --- a/LibTest/html/Event/target_A01_t01.dart +++ b/LibTest/html/Event/target_A01_t01.dart @@ -30,7 +30,7 @@ main() { asyncEnd(); }); - asyncMultiStart(3); + asyncStart(3); div.dispatchEvent(new MouseEvent('click')); } else { Expect.fail("Body is null"); diff --git a/LibTest/html/IFrameElement/addEventListener_A01_t03.dart b/LibTest/html/IFrameElement/addEventListener_A01_t03.dart index 09da10fb47..9c2fde949f 100644 --- a/LibTest/html/IFrameElement/addEventListener_A01_t03.dart +++ b/LibTest/html/IFrameElement/addEventListener_A01_t03.dart @@ -15,7 +15,7 @@ main() { IFrameElement x = new IFrameElement(); document.body?.append(x); - asyncMultiStart(3); + asyncStart(3); x.addEventListener(type, (e) { Expect.equals(type, e.type); diff --git a/LibTest/html/IFrameElement/addEventListener_A01_t04.dart b/LibTest/html/IFrameElement/addEventListener_A01_t04.dart index 09cf525d3b..2d2f7e6764 100644 --- a/LibTest/html/IFrameElement/addEventListener_A01_t04.dart +++ b/LibTest/html/IFrameElement/addEventListener_A01_t04.dart @@ -16,7 +16,7 @@ main() { IFrameElement x = new IFrameElement(); document.body?.append(x); - asyncMultiStart(2); + asyncStart(2); // intercept on capture document.body?.addEventListener(type, (e) { diff --git a/LibTest/html/IFrameElement/addEventListener_A01_t05.dart b/LibTest/html/IFrameElement/addEventListener_A01_t05.dart index 4d8d9ab87c..ed1b945112 100644 --- a/LibTest/html/IFrameElement/addEventListener_A01_t05.dart +++ b/LibTest/html/IFrameElement/addEventListener_A01_t05.dart @@ -17,7 +17,7 @@ main() { var n = 10; - asyncMultiStart(n); + asyncStart(n); EventListener genHandler() => (e) { Expect.equals(type, e.type); diff --git a/LibTest/html/IFrameElement/addEventListener_A01_t06.dart b/LibTest/html/IFrameElement/addEventListener_A01_t06.dart index 33a5d20b96..78f14bf9e7 100644 --- a/LibTest/html/IFrameElement/addEventListener_A01_t06.dart +++ b/LibTest/html/IFrameElement/addEventListener_A01_t06.dart @@ -17,7 +17,7 @@ main() { var n = 10; - asyncMultiStart(n); + asyncStart(n); EventListener genHandler() => (e) { Expect.equals(type, e.type); diff --git a/LibTest/html/IFrameElement/removeEventListener_A01_t01.dart b/LibTest/html/IFrameElement/removeEventListener_A01_t01.dart index 6750dcf81b..db39b84274 100644 --- a/LibTest/html/IFrameElement/removeEventListener_A01_t01.dart +++ b/LibTest/html/IFrameElement/removeEventListener_A01_t01.dart @@ -33,7 +33,7 @@ main() { x.addEventListener(type, handler1); x.addEventListener(type, handler2); - asyncMultiStart(3); // first time two handlers, second time one handler + asyncStart(3); // first time two handlers, second time one handler var event = new Event(type); x.dispatchEvent(event); event = new Event(type); diff --git a/LibTest/html/IFrameElement/removeEventListener_A01_t02.dart b/LibTest/html/IFrameElement/removeEventListener_A01_t02.dart index 69c28d431f..2db18697b8 100644 --- a/LibTest/html/IFrameElement/removeEventListener_A01_t02.dart +++ b/LibTest/html/IFrameElement/removeEventListener_A01_t02.dart @@ -35,7 +35,7 @@ main() { body?.addEventListener(type, handler1, true); body?.addEventListener(type, handler2, true); - asyncMultiStart(3); // first time two handlers, second time one handler + asyncStart(3); // first time two handlers, second time one handler var event = new Event(type); x.dispatchEvent(event); event = new Event(type); diff --git a/LibTest/html/Node/addEventListener_A01_t01.dart b/LibTest/html/Node/addEventListener_A01_t01.dart index 986da05643..4028c7d6bb 100644 --- a/LibTest/html/Node/addEventListener_A01_t01.dart +++ b/LibTest/html/Node/addEventListener_A01_t01.dart @@ -31,7 +31,7 @@ main() { document, new DocumentFragment(), ]; - asyncMultiStart(targets.length); + asyncStart(targets.length); for (Node x in targets) { check(x); } diff --git a/LibTest/html/Node/addEventListener_A01_t02.dart b/LibTest/html/Node/addEventListener_A01_t02.dart index 107f5a57b0..8fde6c8084 100644 --- a/LibTest/html/Node/addEventListener_A01_t02.dart +++ b/LibTest/html/Node/addEventListener_A01_t02.dart @@ -29,7 +29,7 @@ main() { document, new DocumentFragment(), ]; - asyncMultiStart(targets.length); + asyncStart(targets.length); for (Node x in targets) { check(x); } diff --git a/LibTest/html/Node/addEventListener_A01_t03.dart b/LibTest/html/Node/addEventListener_A01_t03.dart index a07710e123..789014b6a4 100644 --- a/LibTest/html/Node/addEventListener_A01_t03.dart +++ b/LibTest/html/Node/addEventListener_A01_t03.dart @@ -31,7 +31,7 @@ main() { document, new DocumentFragment(), ]; - asyncMultiStart(targets.length); + asyncStart(targets.length); for (Node x in targets) { check(x); } diff --git a/LibTest/html/Node/addEventListener_A01_t04.dart b/LibTest/html/Node/addEventListener_A01_t04.dart index 0eb6530534..7f18dcdafa 100644 --- a/LibTest/html/Node/addEventListener_A01_t04.dart +++ b/LibTest/html/Node/addEventListener_A01_t04.dart @@ -32,7 +32,7 @@ main() { document, new DocumentFragment(), ]; - asyncMultiStart(targets.length); + asyncStart(targets.length); for (Node x in targets) { check(x); } diff --git a/LibTest/html/Node/addEventListener_A01_t05.dart b/LibTest/html/Node/addEventListener_A01_t05.dart index bac42c2357..447e33bfcf 100644 --- a/LibTest/html/Node/addEventListener_A01_t05.dart +++ b/LibTest/html/Node/addEventListener_A01_t05.dart @@ -34,7 +34,7 @@ main() { document, new DocumentFragment(), ]; - asyncMultiStart(targets.length * n); + asyncStart(targets.length * n); for (Node x in targets) { check(x); } diff --git a/LibTest/html/Node/dispatchEvent_A01_t01.dart b/LibTest/html/Node/dispatchEvent_A01_t01.dart index 2241b2da51..189fa85962 100644 --- a/LibTest/html/Node/dispatchEvent_A01_t01.dart +++ b/LibTest/html/Node/dispatchEvent_A01_t01.dart @@ -24,7 +24,7 @@ main() { new IFrameElement(), document, ]; - asyncMultiStart(targets.length); + asyncStart(targets.length); for (Node x in targets) { check(x); } diff --git a/LibTest/html/Node/on_A01_t01.dart b/LibTest/html/Node/on_A01_t01.dart index af26e1abe3..e6704b2baf 100644 --- a/LibTest/html/Node/on_A01_t01.dart +++ b/LibTest/html/Node/on_A01_t01.dart @@ -25,7 +25,7 @@ main() { new IFrameElement(), new DocumentFragment(), ]; - asyncMultiStart(targets.length); + asyncStart(targets.length); for (Node x in targets) { check(x); } diff --git a/LibTest/html/Node/removeEventListener_A01_t01.dart b/LibTest/html/Node/removeEventListener_A01_t01.dart index 36757aac2a..db1565b39d 100644 --- a/LibTest/html/Node/removeEventListener_A01_t01.dart +++ b/LibTest/html/Node/removeEventListener_A01_t01.dart @@ -43,7 +43,7 @@ main() { new Comment("Comment"), new DocumentFragment(), ]; - asyncMultiStart( + asyncStart( targets.length * 3); // first time two handlers, second time one handler for (Node x in targets) { check(x); diff --git a/LibTest/html/Node/removeEventListener_A01_t02.dart b/LibTest/html/Node/removeEventListener_A01_t02.dart index 715eaa04a6..bacd9632dd 100644 --- a/LibTest/html/Node/removeEventListener_A01_t02.dart +++ b/LibTest/html/Node/removeEventListener_A01_t02.dart @@ -43,7 +43,7 @@ main() { new Comment("Comment"), new DocumentFragment(), ]; - asyncMultiStart( + asyncStart( targets.length * 3); // first time two handlers, second time one handler for (Node x in targets) { check(x); diff --git a/LibTest/io/File/create_A02_t01.dart b/LibTest/io/File/create_A02_t01.dart index f828b56c23..6936fd46a7 100644 --- a/LibTest/io/File/create_A02_t01.dart +++ b/LibTest/io/File/create_A02_t01.dart @@ -49,7 +49,7 @@ _test(Directory sandbox, {bool exclusive = false}) async { } void _main(Directory sandbox) async { - asyncMultiStart(2); + asyncStart(2); await _test(sandbox, exclusive: false); await _test(sandbox, exclusive: true); } diff --git a/LibTest/io/File/create_A02_t02.dart b/LibTest/io/File/create_A02_t02.dart index 7bdf0254e4..af2097053f 100644 --- a/LibTest/io/File/create_A02_t02.dart +++ b/LibTest/io/File/create_A02_t02.dart @@ -47,7 +47,7 @@ _test(Directory sandbox, {bool exclusive = false}) async { } void _main(Directory sandbox) async { - asyncMultiStart(2); + asyncStart(2); await _test(sandbox, exclusive: false); await _test(sandbox, exclusive: true); } diff --git a/LibTest/io/File/create_A03_t01.dart b/LibTest/io/File/create_A03_t01.dart index 3a2b5002fc..4d9abf1428 100644 --- a/LibTest/io/File/create_A03_t01.dart +++ b/LibTest/io/File/create_A03_t01.dart @@ -48,7 +48,7 @@ _test(Directory sandbox, {bool recursive = false}) async { } void _main(Directory sandbox) async { - asyncMultiStart(2); + asyncStart(2); await _test(sandbox, recursive: false); await _test(sandbox, recursive: true); } diff --git a/LibTest/io/File/create_A03_t02.dart b/LibTest/io/File/create_A03_t02.dart index a81c9a459c..8876361411 100644 --- a/LibTest/io/File/create_A03_t02.dart +++ b/LibTest/io/File/create_A03_t02.dart @@ -48,7 +48,7 @@ _test(Directory sandbox, {bool recursive = false}) async { } void _main(Directory sandbox) async { - asyncMultiStart(2); + asyncStart(2); await _test(sandbox, recursive: true); await _test(sandbox, recursive: false); } diff --git a/LibTest/io/File/create_A03_t03.dart b/LibTest/io/File/create_A03_t03.dart index 6e7b895f62..724c2100a2 100644 --- a/LibTest/io/File/create_A03_t03.dart +++ b/LibTest/io/File/create_A03_t03.dart @@ -57,7 +57,7 @@ _test(Directory sandbox, {bool recursive = false}) async { } void _main(Directory sandbox) async { - asyncMultiStart(2); + asyncStart(2); await _test(sandbox, recursive: false); await _test(sandbox, recursive: true); } diff --git a/LibTest/io/File/create_A03_t04.dart b/LibTest/io/File/create_A03_t04.dart index c20e14cfc5..70770ae305 100644 --- a/LibTest/io/File/create_A03_t04.dart +++ b/LibTest/io/File/create_A03_t04.dart @@ -57,7 +57,7 @@ _test(Directory sandbox, {bool recursive = false}) async { } void _main(Directory sandbox) async { - asyncMultiStart(2); + asyncStart(2); await _test(sandbox, recursive: false); await _test(sandbox, recursive: true); } diff --git a/LibTest/io/File/create_A04_t01.dart b/LibTest/io/File/create_A04_t01.dart index c245b60777..b1ca6bc112 100644 --- a/LibTest/io/File/create_A04_t01.dart +++ b/LibTest/io/File/create_A04_t01.dart @@ -51,7 +51,7 @@ _test(Directory sandbox, } void _main(Directory sandbox) async { - asyncMultiStart(4); + asyncStart(4); await _test(sandbox, recursive: false, exclusive: false); await _test(sandbox, recursive: false, exclusive: true); await _test(sandbox, recursive: true, exclusive: false); diff --git a/LibTest/io/File/create_A04_t02.dart b/LibTest/io/File/create_A04_t02.dart index 17dfb09be1..485de8ea3f 100644 --- a/LibTest/io/File/create_A04_t02.dart +++ b/LibTest/io/File/create_A04_t02.dart @@ -52,7 +52,7 @@ _test(Directory sandbox, } void _main(Directory sandbox) async { - asyncMultiStart(4); + asyncStart(4); await _test(sandbox, recursive: false, exclusive: false); await _test(sandbox, recursive: false, exclusive: true); await _test(sandbox, recursive: true, exclusive: false); diff --git a/LibTest/io/file_utils.dart b/LibTest/io/file_utils.dart index 1e5c27e2f0..84cb1ddf3b 100644 --- a/LibTest/io/file_utils.dart +++ b/LibTest/io/file_utils.dart @@ -20,9 +20,11 @@ Future inSandbox(Object? test(Directory sandbox), sandbox = getTempDirectorySync(); } try { + asyncStart(); return await test(sandbox); } finally { sandbox.deleteSync(recursive: true); + asyncEnd(); } } @@ -52,6 +54,7 @@ Future testFileSystemEvent(Directory root, if (failIfNoEvent) { Expect.fail("No event was fired for $eventsTimeout seconds"); } + return null; }); test(event); } diff --git a/Utils/async_utils.dart b/Utils/async_utils.dart index ad2c35e310..1c011d356b 100644 --- a/Utils/async_utils.dart +++ b/Utils/async_utils.dart @@ -31,34 +31,49 @@ Future runAfter(Future f, void action()) { }); } -/// Let the test driver know the test is asynchronous and continues after the -/// method main() exits. -/// See http://code.google.com/p/co19/issues/detail?id=423 +bool _initialized = false; +int _asyncLevel = 0; -Completer _completer = new Completer(); -Future asyncCompleted = _completer.future; - -int _asyncTestStart() { - print("unittest-suite-wait-for-done"); - return 0; -} - -int _asyncCounter=_asyncTestStart(); - -void asyncStart() { - _asyncCounter++; +Exception _buildException(String msg) { + return Exception('Fatal: $msg. This is most likely a bug in your test.'); } -void asyncMultiStart(int delta) { - _asyncCounter += delta; +/// Call this method before an asynchronous test is created. +/// +/// If [count] is provided, expect [count] [asyncEnd] calls instead of just one. +void asyncStart([int count = 1]) { + if (count <= 0) { + return; + } + if (_initialized && _asyncLevel == 0) { + throw _buildException('asyncStart() was called even though we are done ' + 'with testing.'); + } + if (!_initialized) { + print('unittest-suite-wait-for-done'); + _initialized = true; + } + _asyncLevel += count; } -void asyncEnd() { - Expect.isFalse(_asyncCounter == 0, "asyncEnd: _asyncCounter==0"); - _asyncCounter--; - if (_asyncCounter == 0) { - print("unittest-suite-success"); - _completer.complete(null); +/// Call this after an asynchronous test has ended successfully. +/// +/// Note, that when all async tests are finished and `unittest-suite-success` is +/// printed browser tests are successfully finished. So, there should be no any +/// assertions after `asyncEnd()`. Otherwise the test may produce false-positive +/// result +void asyncEnd() { + if (_asyncLevel <= 0) { + if (!_initialized) { + throw _buildException('asyncEnd() was called before asyncStart().'); + } else { + throw _buildException('asyncEnd() was called more often than ' + 'asyncStart().'); + } + } + _asyncLevel--; + if (_asyncLevel == 0) { + print('unittest-suite-success'); } }