Index: lib/src/engine.dart |
diff --git a/lib/src/engine.dart b/lib/src/engine.dart |
deleted file mode 100644 |
index 5e2b6508c3c450051fa12eb1a5e3fc27f20cb871..0000000000000000000000000000000000000000 |
--- a/lib/src/engine.dart |
+++ /dev/null |
@@ -1,72 +0,0 @@ |
-// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-library unittest.engine; |
- |
-import 'dart:async'; |
-import 'dart:collection'; |
- |
-import 'live_test.dart'; |
-import 'state.dart'; |
-import 'suite.dart'; |
-import 'utils.dart'; |
- |
-/// An [Engine] manages a run that encompasses multiple test suites. |
-/// |
-/// The current status of every test is visible via [liveTests]. [onTestStarted] |
-/// can also be used to be notified when a test is about to be run. |
-/// |
-/// Suites will be run in the order they're provided to [new Engine]. Tests |
-/// within those suites will likewise be run in the order of [Suite.tests]. |
-class Engine { |
- /// Whether [run] has been called yet. |
- var _runCalled = false; |
- |
- /// An unmodifiable list of tests to run. |
- /// |
- /// These are [LiveTest]s, representing the in-progress state of each test. |
- /// Tests that have not yet begun running are marked [Status.pending]; tests |
- /// that have finished are marked [Status.complete]. |
- /// |
- /// [LiveTest.run] must not be called on these tests. |
- final List<LiveTest> liveTests; |
- |
- /// A stream that emits each [LiveTest] as it's about to start running. |
- /// |
- /// This is guaranteed to fire before [LiveTest.onStateChange] first fires. |
- Stream<LiveTest> get onTestStarted => _onTestStartedController.stream; |
- final _onTestStartedController = new StreamController<LiveTest>.broadcast(); |
- |
- /// Creates an [Engine] that will run all tests in [suites]. |
- Engine(Iterable<Suite> suites) |
- : liveTests = new UnmodifiableListView(flatten(suites.map((suite) => |
- suite.tests.map((test) => test.load(suite))))); |
- |
- /// Runs all tests in all suites defined by this engine. |
- /// |
- /// This returns `true` if all tests succeed, and `false` otherwise. It will |
- /// only return once all tests have finished running. |
- Future<bool> run() { |
- if (_runCalled) { |
- throw new StateError("Engine.run() may not be called more than once."); |
- } |
- _runCalled = true; |
- |
- return Future.forEach(liveTests, (liveTest) { |
- _onTestStartedController.add(liveTest); |
- |
- // First, schedule a microtask to ensure that [onTestStarted] fires before |
- // the first [LiveTest.onStateChange] event. Once the test finishes, use |
- // [new Future] to do a coarse-grained event loop pump to avoid starving |
- // the DOM or other non-microtask events. |
- return new Future.microtask(liveTest.run).then((_) => new Future(() {})); |
- }).then((_) => |
- liveTests.every((liveTest) => liveTest.state.result == Result.success)); |
- } |
- |
- /// Signals that the caller is done paying attention to test results and the |
- /// engine should release any resources it has allocated. |
- Future close() => |
- Future.wait(liveTests.map((liveTest) => liveTest.close())); |
-} |