| Index: lib/src/runner/engine.dart
|
| diff --git a/lib/src/runner/engine.dart b/lib/src/runner/engine.dart
|
| index c30333d5e8160687554f917cb4798973e29a049e..6bd51bfe726bfa0d875b6575a35ecce311629110 100644
|
| --- a/lib/src/runner/engine.dart
|
| +++ b/lib/src/runner/engine.dart
|
| @@ -16,7 +16,7 @@ import '../backend/invoker.dart';
|
| import '../backend/live_test.dart';
|
| import '../backend/live_test_controller.dart';
|
| import '../backend/state.dart';
|
| -import '../backend/suite_entry.dart';
|
| +import '../backend/group_entry.dart';
|
| import '../backend/test.dart';
|
| import 'load_suite.dart';
|
| import 'runner_suite.dart';
|
| @@ -199,7 +199,7 @@ class Engine {
|
|
|
| await _runPool.withResource(() async {
|
| if (_closed) return;
|
| - await _runEntries(suite, suite.entries);
|
| + await _runGroup(suite, suite.group);
|
| loadResource.allowRelease(() => suite.close());
|
| });
|
| }));
|
| @@ -209,24 +209,31 @@ class Engine {
|
| }
|
|
|
| /// Runs all the entries in [entries] in sequence.
|
| - Future _runEntries(RunnerSuite suite, List<SuiteEntry> entries) async {
|
| - for (var entry in entries) {
|
| + Future _runGroup(RunnerSuite suite, Group group) async {
|
| + if (group.metadata.skip) {
|
| + await _runLiveTest(_skippedTest(suite, group));
|
| + return;
|
| + }
|
| +
|
| + for (var entry in group.entries) {
|
| if (_closed) return;
|
|
|
| - if (entry.metadata.skip) {
|
| + if (entry is Group) {
|
| + await _runGroup(suite, entry);
|
| + } else if (entry.metadata.skip) {
|
| await _runLiveTest(_skippedTest(suite, entry));
|
| - } else if (entry is Test) {
|
| - await _runLiveTest(entry.load(suite));
|
| } else {
|
| - var group = entry as Group;
|
| - await _runEntries(suite, group.entries);
|
| + var test = entry as Test;
|
| + await _runLiveTest(test.load(suite));
|
| }
|
| }
|
| }
|
|
|
| /// Returns a dummy [LiveTest] for a test or group marked as "skip".
|
| - LiveTest _skippedTest(RunnerSuite suite, SuiteEntry entry) {
|
| - var test = new LocalTest(entry.name, entry.metadata, () {});
|
| + LiveTest _skippedTest(RunnerSuite suite, GroupEntry entry) {
|
| + // The netry name will be `null` for the root group.
|
| + var test = new LocalTest(entry.name ?? "(suite)", entry.metadata, () {});
|
| +
|
| var controller;
|
| controller = new LiveTestController(suite, test, () {
|
| controller.setState(const State(Status.running, Result.success));
|
|
|