| Index: lib/src/runner/live_suite.dart
|
| diff --git a/lib/src/runner/live_suite.dart b/lib/src/runner/live_suite.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..79db853612e1a923f413a9da672f8a54071b6c60
|
| --- /dev/null
|
| +++ b/lib/src/runner/live_suite.dart
|
| @@ -0,0 +1,88 @@
|
| +// Copyright (c) 2016, 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.
|
| +
|
| +import 'dart:async';
|
| +
|
| +import 'package:collection/collection.dart';
|
| +
|
| +import '../backend/live_test.dart';
|
| +import 'runner_suite.dart';
|
| +
|
| +/// A view of the execution of a test suite.
|
| +///
|
| +/// This is distinct from [Suite] because it represents the progress of running
|
| +/// a suite rather than the suite's contents. It provides events and collections
|
| +/// that give the caller a view into the suite's current state.
|
| +abstract class LiveSuite {
|
| + /// The suite that's being run.
|
| + RunnerSuite get suite;
|
| +
|
| + /// Whether the suite has completed.
|
| + ///
|
| + /// Note that even if this returns `true`, the suite may still be running code
|
| + /// asynchronously. A suite is considered complete once all of its tests are
|
| + /// complete, but it's possible for a test to continue running even after it's
|
| + /// been marked complete—see [LiveTest.isComplete] for details.
|
| + ///
|
| + /// The [isClosed] getter can be used to determine whether the suite and its
|
| + /// tests are guaranteed to emit no more events.
|
| + bool get isComplete;
|
| +
|
| + /// A [Future] that completes once the suite is complete.
|
| + ///
|
| + /// Note that even once this completes, the suite may still be running code
|
| + /// asynchronously. A suite is considered complete once all of its tests are
|
| + /// complete, but it's possible for a test to continue running even after it's
|
| + /// been marked complete—see [LiveTest.isComplete] for details.
|
| + ///
|
| + /// The [onComplete] future can be used to determine when the suite and its
|
| + /// tests are guaranteed to emit no more events.
|
| + Future get onComplete;
|
| +
|
| + /// Whether the suite has been closed.
|
| + ///
|
| + /// If this is `true`, no code is running for the suite or any of its tests.
|
| + /// At this point, the caller can be sure that the suites' tests are all in
|
| + /// fixed states that will not change in the future.
|
| + bool get isClosed;
|
| +
|
| + /// A [Future] that completes when the suite has been closed.
|
| + ///
|
| + /// Once this completes, no code is running for the suite or any of its tests.
|
| + /// At this point, the caller can be sure that the suites' tests are all in
|
| + /// fixed states that will not change in the future.
|
| + Future get onClose;
|
| +
|
| + /// All the currently-known tests in this suite that have run or are running.
|
| + ///
|
| + /// This is guaranteed to contain the same tests as the union of [passed],
|
| + /// [skipped], [failed], and [active].
|
| + Set<LiveTest> get liveTests {
|
| + var sets = [passed, skipped, failed];
|
| + if (active != null) sets.add(new Set.from([active]));
|
| + return new GroupSet.from(sets);
|
| + }
|
| +
|
| + /// A stream that emits each [LiveTest] in this suite as it's about to start
|
| + /// running.
|
| + ///
|
| + /// This is guaranteed to fire before [LiveTest.onStateChange] first fires. It
|
| + /// will close once all tests the user has selected are run.
|
| + Stream<LiveTest> get onTestStarted;
|
| +
|
| + /// The set of tests in this suite that have completed and been marked as
|
| + /// passing.
|
| + Set<LiveTest> get passed;
|
| +
|
| + /// The set of tests in this suite that have completed and been marked as
|
| + /// skipped.
|
| + Set<LiveTest> get skipped;
|
| +
|
| + /// The set of tests in this suite that have completed and been marked as
|
| + /// failing or error.
|
| + Set<LiveTest> get failed;
|
| +
|
| + /// The currently running test in this suite, or `null` if no test is running.
|
| + LiveTest get active;
|
| +}
|
|
|