| Index: lib/src/runner.dart
|
| diff --git a/lib/src/runner.dart b/lib/src/runner.dart
|
| index 58c2a68f5c8609d49ccb29a0453b8dc5a64f97c1..64b58122c78e718eecacf4293113143540df1b8d 100644
|
| --- a/lib/src/runner.dart
|
| +++ b/lib/src/runner.dart
|
| @@ -7,6 +7,8 @@ library test.runner;
|
| import 'dart:async';
|
| import 'dart:io';
|
|
|
| +import 'package:async/async.dart';
|
| +
|
| import 'backend/metadata.dart';
|
| import 'backend/test_platform.dart';
|
| import 'runner/application_exception.dart';
|
| @@ -19,7 +21,6 @@ import 'runner/reporter.dart';
|
| import 'runner/reporter/compact.dart';
|
| import 'runner/reporter/expanded.dart';
|
| import 'runner/runner_suite.dart';
|
| -import 'util/async_thunk.dart';
|
| import 'util/io.dart';
|
| import 'utils.dart';
|
|
|
| @@ -48,9 +49,9 @@ class Runner {
|
| /// The subscription to the stream returned by [_loadSuites].
|
| StreamSubscription _suiteSubscription;
|
|
|
| - /// The thunk for ensuring [close] only runs once.
|
| - final _closeThunk = new AsyncThunk();
|
| - bool get _closed => _closeThunk.hasRun;
|
| + /// The memoizer for ensuring [close] only runs once.
|
| + final _closeMemo = new AsyncMemoizer();
|
| + bool get _closed => _closeMemo.hasRun;
|
|
|
| /// Creates a new runner based on [configuration].
|
| factory Runner(Configuration configuration) {
|
| @@ -131,7 +132,7 @@ class Runner {
|
| /// This stops any future test suites from running. It will wait for any
|
| /// currently-running VM tests, in case they have stuff to clean up on the
|
| /// filesystem.
|
| - Future close() => _closeThunk.run(() async {
|
| + Future close() => _closeMemo.runOnce(() async {
|
| var timer;
|
| if (!_engine.isIdle) {
|
| // Wait a bit to print this message, since printing it eagerly looks weird
|
|
|