Index: test/backend/invoker_test.dart |
diff --git a/test/backend/invoker_test.dart b/test/backend/invoker_test.dart |
index 59d9c509d128b95480b399112afa8fc72ad3e0de..be27391e8fad341e5fdd39fb0c5a0a0dad74e93c 100644 |
--- a/test/backend/invoker_test.dart |
+++ b/test/backend/invoker_test.dart |
@@ -473,27 +473,6 @@ void main() { |
}); |
}); |
- test("a test times out after 30 seconds", () { |
- new FakeAsync().run((async) { |
- var liveTest = _localTest(() { |
- Invoker.current.addOutstandingCallback(); |
- }).load(suite); |
- |
- expectStates(liveTest, [ |
- const State(Status.running, Result.success), |
- const State(Status.complete, Result.error) |
- ]); |
- |
- expectErrors(liveTest, [(error) { |
- expect(lastState.status, equals(Status.complete)); |
- expect(error, new isInstanceOf<TimeoutException>()); |
- }]); |
- |
- liveTest.run(); |
- async.elapse(new Duration(seconds: 30)); |
- }); |
- }); |
- |
test("a test's prints are captured and reported", () { |
expect(() { |
var liveTest = _localTest(() { |
@@ -507,7 +486,76 @@ void main() { |
return liveTest.run(); |
}, prints(isEmpty)); |
}); |
+ |
+ group("timeout:", () { |
+ test("a test times out after 30 seconds by default", () { |
+ new FakeAsync().run((async) { |
+ var liveTest = _localTest(() { |
+ Invoker.current.addOutstandingCallback(); |
+ }).load(suite); |
+ |
+ expectStates(liveTest, [ |
+ const State(Status.running, Result.success), |
+ const State(Status.complete, Result.error) |
+ ]); |
+ |
+ expectErrors(liveTest, [(error) { |
+ expect(lastState.status, equals(Status.complete)); |
+ expect(error, new isInstanceOf<TimeoutException>()); |
+ }]); |
+ |
+ liveTest.run(); |
+ async.elapse(new Duration(seconds: 30)); |
+ }); |
+ }); |
+ |
+ test("a test's custom timeout takes precedence", () { |
+ new FakeAsync().run((async) { |
+ var liveTest = _localTest(() { |
+ Invoker.current.addOutstandingCallback(); |
+ }, metadata: new Metadata( |
+ timeout: new Timeout(new Duration(seconds: 15)))).load(suite); |
+ |
+ expectStates(liveTest, [ |
+ const State(Status.running, Result.success), |
+ const State(Status.complete, Result.error) |
+ ]); |
+ |
+ expectErrors(liveTest, [(error) { |
+ expect(lastState.status, equals(Status.complete)); |
+ expect(error, new isInstanceOf<TimeoutException>()); |
+ }]); |
+ |
+ liveTest.run(); |
+ async.elapse(new Duration(seconds: 15)); |
+ }); |
+ }); |
+ |
+ test("a timeout factor is applied on top of the 30s default", () { |
+ new FakeAsync().run((async) { |
+ var liveTest = _localTest(() { |
+ Invoker.current.addOutstandingCallback(); |
+ }, metadata: new Metadata(timeout: new Timeout.factor(0.5))) |
+ .load(suite); |
+ |
+ expectStates(liveTest, [ |
+ const State(Status.running, Result.success), |
+ const State(Status.complete, Result.error) |
+ ]); |
+ |
+ expectErrors(liveTest, [(error) { |
+ expect(lastState.status, equals(Status.complete)); |
+ expect(error, new isInstanceOf<TimeoutException>()); |
+ }]); |
+ |
+ liveTest.run(); |
+ async.elapse(new Duration(seconds: 15)); |
+ }); |
+ }); |
+ }); |
} |
-LocalTest _localTest(body(), {tearDown()}) => |
- new LocalTest("test", new Metadata(), body, tearDown: tearDown); |
+LocalTest _localTest(body(), {tearDown(), Metadata metadata}) { |
+ if (metadata == null) metadata = new Metadata(); |
+ return new LocalTest("test", metadata, body, tearDown: tearDown); |
+} |