| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 import 'dart:async'; | 5 import 'dart:async'; |
| 6 | 6 |
| 7 import 'package:test/src/backend/group.dart'; | 7 import 'package:test/src/backend/group.dart'; |
| 8 import 'package:test/src/backend/state.dart'; | 8 import 'package:test/src/backend/state.dart'; |
| 9 import 'package:test/src/runner/engine.dart'; | 9 import 'package:test/src/runner/engine.dart'; |
| 10 import 'package:test/test.dart'; | 10 import 'package:test/test.dart'; |
| 11 | 11 |
| 12 import '../utils.dart'; | 12 import '../utils.dart'; |
| 13 | 13 |
| 14 void main() { | 14 void main() { |
| 15 test("runs each test in each suite in order", () async { | 15 test("runs each test in each suite in order", () async { |
| 16 var testsRun = 0; | 16 var testsRun = 0; |
| 17 var tests = declare(() { | 17 var tests = declare(() { |
| 18 for (var i = 0; i < 4; i++) { | 18 for (var i = 0; i < 4; i++) { |
| 19 test("test ${i + 1}", expectAsync(() { | 19 test("test ${i + 1}", expectAsync0(() { |
| 20 expect(testsRun, equals(i)); | 20 expect(testsRun, equals(i)); |
| 21 testsRun++; | 21 testsRun++; |
| 22 }, max: 1)); | 22 }, max: 1)); |
| 23 } | 23 } |
| 24 }); | 24 }); |
| 25 | 25 |
| 26 var engine = new Engine.withSuites([ | 26 var engine = new Engine.withSuites([ |
| 27 runnerSuite(new Group.root(tests.take(2))), | 27 runnerSuite(new Group.root(tests.take(2))), |
| 28 runnerSuite(new Group.root(tests.skip(2))) | 28 runnerSuite(new Group.root(tests.skip(2))) |
| 29 ]); | 29 ]); |
| 30 | 30 |
| 31 await engine.run(); | 31 await engine.run(); |
| 32 expect(testsRun, equals(4)); | 32 expect(testsRun, equals(4)); |
| 33 }); | 33 }); |
| 34 | 34 |
| 35 test("runs tests in a suite added after run() was called", () { | 35 test("runs tests in a suite added after run() was called", () { |
| 36 var testsRun = 0; | 36 var testsRun = 0; |
| 37 var tests = declare(() { | 37 var tests = declare(() { |
| 38 for (var i = 0; i < 4; i++) { | 38 for (var i = 0; i < 4; i++) { |
| 39 test("test ${i + 1}", expectAsync(() { | 39 test("test ${i + 1}", expectAsync0(() { |
| 40 expect(testsRun, equals(i)); | 40 expect(testsRun, equals(i)); |
| 41 testsRun++; | 41 testsRun++; |
| 42 }, max: 1)); | 42 }, max: 1)); |
| 43 } | 43 } |
| 44 }); | 44 }); |
| 45 | 45 |
| 46 var engine = new Engine(); | 46 var engine = new Engine(); |
| 47 expect(engine.run().then((_) { | 47 expect(engine.run().then((_) { |
| 48 expect(testsRun, equals(4)); | 48 expect(testsRun, equals(4)); |
| 49 }), completes); | 49 }), completes); |
| 50 | 50 |
| 51 engine.suiteSink.add(runnerSuite(new Group.root(tests))); | 51 engine.suiteSink.add(runnerSuite(new Group.root(tests))); |
| 52 engine.suiteSink.close(); | 52 engine.suiteSink.close(); |
| 53 }); | 53 }); |
| 54 | 54 |
| 55 test("emits each test before it starts running and after the previous test " | 55 test("emits each test before it starts running and after the previous test " |
| 56 "finished", () { | 56 "finished", () { |
| 57 var testsRun = 0; | 57 var testsRun = 0; |
| 58 var engine = declareEngine(() { | 58 var engine = declareEngine(() { |
| 59 for (var i = 0; i < 3; i++) { | 59 for (var i = 0; i < 3; i++) { |
| 60 test("test ${i + 1}", expectAsync(() => testsRun++, max: 1)); | 60 test("test ${i + 1}", expectAsync0(() => testsRun++, max: 1)); |
| 61 } | 61 } |
| 62 }); | 62 }); |
| 63 | 63 |
| 64 engine.onTestStarted.listen(expectAsync((liveTest) { | 64 engine.onTestStarted.listen(expectAsync1((liveTest) { |
| 65 // [testsRun] should be one less than the test currently running. | 65 // [testsRun] should be one less than the test currently running. |
| 66 expect(liveTest.test.name, equals("test ${testsRun + 1}")); | 66 expect(liveTest.test.name, equals("test ${testsRun + 1}")); |
| 67 | 67 |
| 68 // [Engine.onTestStarted] is guaranteed to fire before the first | 68 // [Engine.onTestStarted] is guaranteed to fire before the first |
| 69 // [LiveTest.onStateChange]. | 69 // [LiveTest.onStateChange]. |
| 70 expect(liveTest.onStateChange.first, | 70 expect(liveTest.onStateChange.first, |
| 71 completion(equals(const State(Status.running, Result.success)))); | 71 completion(equals(const State(Status.running, Result.success)))); |
| 72 }, count: 3, max: 3)); | 72 }, count: 3, max: 3)); |
| 73 | 73 |
| 74 return engine.run(); | 74 return engine.run(); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 110 var engine = new Engine.withSuites([]); | 110 var engine = new Engine.withSuites([]); |
| 111 expect(engine.run(), completes); | 111 expect(engine.run(), completes); |
| 112 expect(engine.run, throwsStateError); | 112 expect(engine.run, throwsStateError); |
| 113 }); | 113 }); |
| 114 | 114 |
| 115 test("runs tearDown after a test times out", () { | 115 test("runs tearDown after a test times out", () { |
| 116 // Declare this here so the expect is in the context of this test, rather | 116 // Declare this here so the expect is in the context of this test, rather |
| 117 // than the inner test. | 117 // than the inner test. |
| 118 var secondTestStarted = false; | 118 var secondTestStarted = false; |
| 119 var firstTestFinished = false; | 119 var firstTestFinished = false; |
| 120 var tearDownBody = expectAsync(() { | 120 var tearDownBody = expectAsync0(() { |
| 121 expect(secondTestStarted, isFalse); | 121 expect(secondTestStarted, isFalse); |
| 122 expect(firstTestFinished, isFalse); | 122 expect(firstTestFinished, isFalse); |
| 123 }); | 123 }); |
| 124 | 124 |
| 125 var engine = declareEngine(() { | 125 var engine = declareEngine(() { |
| 126 // This ensures that the first test doesn't actually finish until the | 126 // This ensures that the first test doesn't actually finish until the |
| 127 // second test runs. | 127 // second test runs. |
| 128 var firstTestCompleter = new Completer(); | 128 var firstTestCompleter = new Completer(); |
| 129 | 129 |
| 130 group("group", () { | 130 group("group", () { |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 166 expect(bodyRun, isTrue); | 166 expect(bodyRun, isTrue); |
| 167 }); | 167 }); |
| 168 | 168 |
| 169 test("exposes a LiveTest that emits the correct states", () { | 169 test("exposes a LiveTest that emits the correct states", () { |
| 170 var tests = declare(() { | 170 var tests = declare(() { |
| 171 test("test", () {}, skip: true); | 171 test("test", () {}, skip: true); |
| 172 }); | 172 }); |
| 173 | 173 |
| 174 var engine = new Engine.withSuites([runnerSuite(new Group.root(tests))]); | 174 var engine = new Engine.withSuites([runnerSuite(new Group.root(tests))]); |
| 175 | 175 |
| 176 engine.onTestStarted.listen(expectAsync((liveTest) { | 176 engine.onTestStarted.listen(expectAsync1((liveTest) { |
| 177 expect(liveTest, same(engine.liveTests.single)); | 177 expect(liveTest, same(engine.liveTests.single)); |
| 178 expect(liveTest.test.name, equals(tests.single.name)); | 178 expect(liveTest.test.name, equals(tests.single.name)); |
| 179 | 179 |
| 180 var i = 0; | 180 var i = 0; |
| 181 liveTest.onStateChange.listen(expectAsync((state) { | 181 liveTest.onStateChange.listen(expectAsync1((state) { |
| 182 if (i == 0) { | 182 if (i == 0) { |
| 183 expect(state, equals(const State(Status.running, Result.success))); | 183 expect(state, equals(const State(Status.running, Result.success))); |
| 184 } else if (i == 1) { | 184 } else if (i == 1) { |
| 185 expect(state, equals(const State(Status.running, Result.skipped))); | 185 expect(state, equals(const State(Status.running, Result.skipped))); |
| 186 } else if (i == 2) { | 186 } else if (i == 2) { |
| 187 expect(state, equals(const State(Status.complete, Result.skipped))); | 187 expect(state, equals(const State(Status.complete, Result.skipped))); |
| 188 } | 188 } |
| 189 i++; | 189 i++; |
| 190 }, count: 3)); | 190 }, count: 3)); |
| 191 | 191 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 224 test("exposes a LiveTest that emits the correct states", () { | 224 test("exposes a LiveTest that emits the correct states", () { |
| 225 var entries = declare(() { | 225 var entries = declare(() { |
| 226 group("group", () { | 226 group("group", () { |
| 227 test("test", () => bodyRun = true); | 227 test("test", () => bodyRun = true); |
| 228 }, skip: true); | 228 }, skip: true); |
| 229 }); | 229 }); |
| 230 | 230 |
| 231 var engine = new Engine.withSuites( | 231 var engine = new Engine.withSuites( |
| 232 [runnerSuite(new Group.root(entries))]); | 232 [runnerSuite(new Group.root(entries))]); |
| 233 | 233 |
| 234 engine.onTestStarted.listen(expectAsync((liveTest) { | 234 engine.onTestStarted.listen(expectAsync1((liveTest) { |
| 235 expect(liveTest, same(engine.liveTests.single)); | 235 expect(liveTest, same(engine.liveTests.single)); |
| 236 expect(liveTest.test.name, equals("group test")); | 236 expect(liveTest.test.name, equals("group test")); |
| 237 | 237 |
| 238 var i = 0; | 238 var i = 0; |
| 239 liveTest.onStateChange.listen(expectAsync((state) { | 239 liveTest.onStateChange.listen(expectAsync1((state) { |
| 240 if (i == 0) { | 240 if (i == 0) { |
| 241 expect(state, equals(const State(Status.running, Result.success))); | 241 expect(state, equals(const State(Status.running, Result.success))); |
| 242 } else if (i == 1) { | 242 } else if (i == 1) { |
| 243 expect(state, equals(const State(Status.running, Result.skipped))); | 243 expect(state, equals(const State(Status.running, Result.skipped))); |
| 244 } else if (i == 2) { | 244 } else if (i == 2) { |
| 245 expect(state, equals(const State(Status.complete, Result.skipped))); | 245 expect(state, equals(const State(Status.complete, Result.skipped))); |
| 246 } | 246 } |
| 247 i++; | 247 i++; |
| 248 }, count: 3)); | 248 }, count: 3)); |
| 249 | 249 |
| 250 expect(liveTest.onComplete, completes); | 250 expect(liveTest.onComplete, completes); |
| 251 })); | 251 })); |
| 252 | 252 |
| 253 return engine.run(); | 253 return engine.run(); |
| 254 }); | 254 }); |
| 255 }); | 255 }); |
| 256 } | 256 } |
| OLD | NEW |