Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(161)

Unified Diff: lib/src/backend/suite.dart

Issue 1379203002: Refactor groups to pipe them through to the runner. (Closed) Base URL: git@github.com:dart-lang/test@master
Patch Set: Code review changes Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « lib/src/backend/metadata.dart ('k') | lib/src/backend/suite_entry.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/src/backend/suite.dart
diff --git a/lib/src/backend/suite.dart b/lib/src/backend/suite.dart
index 4b6fbc941de47c13bebe16f9688af3f2ea2e9478..400ee880ef041f3e8e1274b942e43c7ce5593f76 100644
--- a/lib/src/backend/suite.dart
+++ b/lib/src/backend/suite.dart
@@ -8,6 +8,7 @@ import 'dart:collection';
import 'metadata.dart';
import 'operating_system.dart';
+import 'suite_entry.dart';
import 'test.dart';
import 'test_platform.dart';
@@ -32,22 +33,22 @@ class Suite {
/// The metadata associated with this test suite.
final Metadata metadata;
- /// The tests in the test suite.
- final List<Test> tests;
+ /// The tests and groups in this test suite.
+ final List<SuiteEntry> entries;
- /// Creates a new suite containing [tests].
+ /// Creates a new suite containing [entires].
///
- /// If [platform] and/or [os] are passed, [tests] and [metadata] are filtered
+ /// If [platform] and/or [os] are passed, [entries] and [metadata] are filtered
/// to match that platform information.
///
/// If [os] is passed without [platform], throws an [ArgumentError].
- Suite(Iterable<Test> tests, {this.path, TestPlatform platform,
+ Suite(Iterable<SuiteEntry> entries, {this.path, TestPlatform platform,
OperatingSystem os, Metadata metadata})
: platform = platform,
os = os,
metadata = _filterMetadata(metadata, platform, os),
- tests = new UnmodifiableListView<Test>(
- _filterTests(tests, platform, os));
+ entries = new UnmodifiableListView<SuiteEntry>(
+ _filterEntries(entries, platform, os));
/// Returns [metadata] filtered according to [platform] and [os].
///
@@ -64,29 +65,28 @@ class Suite {
return metadata.forPlatform(platform, os: os);
}
- /// Returns [tests] filtered according to [platform] and [os].
+ /// Returns [entries] filtered according to [platform] and [os].
///
/// Gracefully handles [platform] being null.
- static List<Test> _filterTests(Iterable<Test> tests,
+ static List<SuiteEntry> _filterEntries(Iterable<SuiteEntry> entries,
TestPlatform platform, OperatingSystem os) {
- if (platform == null) return tests.toList();
+ if (platform == null) return entries.toList();
- return tests.where((test) {
- return test.metadata.testOn.evaluate(platform, os: os);
- }).map((test) {
- return test.change(metadata: test.metadata.forPlatform(platform, os: os));
- }).toList();
+ return entries.map((entry) {
+ return entry.forPlatform(platform, os: os);
+ }).where((entry) => entry != null).toList();
}
- /// Returns a new suite with the given fields updated.
+ /// Returns a new suite with all tests matching [test] removed.
///
- /// In the new suite, [metadata] and [tests] will be filtered according to
- /// [platform] and [os].
- Suite change({String path, Metadata metadata, Iterable<Test> tests}) {
- if (path == null) path = this.path;
- if (metadata == null) metadata = this.metadata;
- if (tests == null) tests = this.tests;
- return new Suite(tests, platform: platform, os: os, path: path,
- metadata: metadata);
+ /// Unlike [SuiteEntry.filter], this never returns `null`. If all entries are
+ /// filtered out, it returns an empty suite.
+ Suite filter(bool callback(Test test)) {
+ var filtered = entries
+ .map((entry) => entry.filter(callback))
+ .where((entry) => entry != null)
+ .toList();
+ return new Suite(filtered,
+ platform: platform, os: os, path: path, metadata: metadata);
}
}
« no previous file with comments | « lib/src/backend/metadata.dart ('k') | lib/src/backend/suite_entry.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698