| Index: lib/src/runner/runner_suite.dart
|
| diff --git a/lib/src/runner/runner_suite.dart b/lib/src/runner/runner_suite.dart
|
| index 018cccd0be1ec7d3b6b264f480d0a7ff3be96b71..fe6090c46487b6b69e20d314f91c0326e26ecf28 100644
|
| --- a/lib/src/runner/runner_suite.dart
|
| +++ b/lib/src/runner/runner_suite.dart
|
| @@ -22,88 +22,31 @@ import 'environment.dart';
|
| /// This is separated from [Suite] because the backend library (which will
|
| /// eventually become its own package) is primarily for test code itself to use,
|
| /// for which the [RunnerSuite] APIs don't make sense.
|
| -///
|
| -/// A [RunnerSuite] can be produced and controlled using a
|
| -/// [RunnerSuiteController].
|
| class RunnerSuite extends Suite {
|
| - final RunnerSuiteController _controller;
|
| -
|
| - /// The environment in which this suite runs.
|
| - Environment get environment => _controller._environment;
|
| -
|
| - /// Whether the suite is paused for debugging.
|
| - ///
|
| - /// When using a dev inspector, this may also mean that the entire browser is
|
| - /// paused.
|
| - bool get isDebugging => _controller._isDebugging;
|
| + final Environment environment;
|
|
|
| - /// A broadcast stream that emits an event whenever the suite is paused for
|
| - /// debugging or resumed afterwards.
|
| - ///
|
| - /// The event is `true` when debugging starts and `false` when it ends.
|
| - Stream<bool> get onDebugging => _controller._onDebuggingController.stream;
|
| + /// The memoizer for running [close] exactly once.
|
| + final _closeMemo = new AsyncMemoizer();
|
|
|
| - /// A shortcut constructor for creating a [RunnerSuite] that never goes into
|
| - /// debugging mode.
|
| - factory RunnerSuite(Environment environment, Group group, {String path,
|
| - TestPlatform platform, OperatingSystem os, AsyncFunction onClose}) {
|
| - var controller = new RunnerSuiteController(environment, group,
|
| - path: path, platform: platform, os: os, onClose: onClose);
|
| - return controller.suite;
|
| - }
|
| + /// The function to call when the suite is closed.
|
| + final AsyncFunction _onClose;
|
|
|
| - RunnerSuite._(this._controller, Group group, String path,
|
| - TestPlatform platform, OperatingSystem os)
|
| - : super(group, path: path, platform: platform, os: os);
|
| + RunnerSuite(this.environment, Group group, {String path,
|
| + TestPlatform platform, OperatingSystem os, AsyncFunction onClose})
|
| + : _onClose = onClose,
|
| + super(group, path: path, platform: platform, os: os);
|
|
|
| RunnerSuite filter(bool callback(Test test)) {
|
| var filtered = group.filter(callback);
|
| filtered ??= new Group.root([], metadata: metadata);
|
| - return new RunnerSuite._(_controller, filtered, path, platform, os);
|
| + return new RunnerSuite(environment, filtered,
|
| + platform: platform, os: os, path: path);
|
| }
|
|
|
| /// Closes the suite and releases any resources associated with it.
|
| - Future close() => _controller._close();
|
| -}
|
| -
|
| -/// A class that exposes and controls a [RunnerSuite].
|
| -class RunnerSuiteController {
|
| - /// The suite controlled by this controller.
|
| - RunnerSuite get suite => _suite;
|
| - RunnerSuite _suite;
|
| -
|
| - /// The backing value for [suite.environment].
|
| - final Environment _environment;
|
| -
|
| - /// The function to call when the suite is closed.
|
| - final AsyncFunction _onClose;
|
| -
|
| - /// The backing value for [suite.isDebugging].
|
| - bool _isDebugging = false;
|
| -
|
| - /// The controller for [suite.onDebugging].
|
| - final _onDebuggingController = new StreamController<bool>.broadcast();
|
| -
|
| - RunnerSuiteController(this._environment, Group group, {String path,
|
| - TestPlatform platform, OperatingSystem os, AsyncFunction onClose})
|
| - : _onClose = onClose {
|
| - _suite = new RunnerSuite._(this, group, path, platform, os);
|
| - }
|
| -
|
| - /// Sets whether the suite is paused for debugging.
|
| - ///
|
| - /// If this is different than [suite.isDebugging], this will automatically
|
| - /// send out an event along [suite.onDebugging].
|
| - void setDebugging(bool debugging) {
|
| - if (debugging == _isDebugging) return;
|
| - _isDebugging = debugging;
|
| - _onDebuggingController.add(debugging);
|
| + Future close() {
|
| + return _closeMemo.runOnce(() async {
|
| + if (_onClose != null) await _onClose();
|
| + });
|
| }
|
| -
|
| - /// The backing function for [suite.close].
|
| - Future _close() => _closeMemo.runOnce(() async {
|
| - _onDebuggingController.close();
|
| - if (_onClose != null) await _onClose();
|
| - });
|
| - final _closeMemo = new AsyncMemoizer();
|
| }
|
|
|