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

Unified Diff: lib/src/runner/loader.dart

Issue 1264393004: Pass Configuration to Loader and Server. (Closed) Base URL: git@github.com:dart-lang/test@master
Patch Set: Code review changes Created 5 years, 4 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/runner/configuration.dart ('k') | test/runner/browser/loader_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/src/runner/loader.dart
diff --git a/lib/src/runner/loader.dart b/lib/src/runner/loader.dart
index 964809e73131e6e8814e6c0c8797254d6306e724..9036248f0aab06c75211261cd85e1f7bbfe7332a 100644
--- a/lib/src/runner/loader.dart
+++ b/lib/src/runner/loader.dart
@@ -20,6 +20,7 @@ import '../util/dart.dart' as dart;
import '../util/io.dart';
import '../util/remote_exception.dart';
import '../utils.dart';
+import 'configuration.dart';
import 'browser/server.dart';
import 'load_exception.dart';
import 'load_suite.dart';
@@ -30,30 +31,12 @@ import 'vm/isolate_test.dart';
/// A class for finding test files and loading them into a runnable form.
class Loader {
- /// All platforms for which tests should be loaded.
- final List<TestPlatform> _platforms;
-
- /// Whether to enable colors for Dart compilation.
- final bool _color;
-
- /// Whether raw JavaScript stack traces should be used for tests that are
- /// compiled to JavaScript.
- final bool _jsTrace;
-
- /// Global metadata that applies to all test suites.
- final Metadata _metadata;
+ /// The test runner configuration.
+ final Configuration _config;
/// The root directory that will be served for browser tests.
final String _root;
- /// The package root to use for loading tests.
- final String _packageRoot;
-
- /// The URL for the `pub serve` instance to use to load tests.
- ///
- /// This is `null` if tests should be loaded from the filesystem.
- final Uri _pubServeUrl;
-
/// All suites that have been created by the loader.
final _suites = new Set<RunnerSuite>();
@@ -62,12 +45,7 @@ class Loader {
/// This is lazily initialized the first time it's accessed.
Future<BrowserServer> get _browserServer {
return _browserServerMemo.runOnce(() {
- return BrowserServer.start(
- root: _root,
- packageRoot: _packageRoot,
- pubServeUrl: _pubServeUrl,
- color: _color,
- jsTrace: _jsTrace);
+ return BrowserServer.start(_config, root: _root);
});
}
final _browserServerMemo = new AsyncMemoizer<BrowserServer>();
@@ -75,32 +53,12 @@ class Loader {
/// The memoizer for running [close] exactly once.
final _closeMemo = new AsyncMemoizer();
- /// Creates a new loader.
+ /// Creates a new loader that loads tests on platforms defined in [_config].
///
/// [root] is the root directory that will be served for browser tests. It
/// defaults to the working directory.
- ///
- /// If [packageRoot] is passed, it's used as the package root for all loaded
- /// tests. Otherwise, it's inferred from [root].
- ///
- /// If [pubServeUrl] is passed, tests will be loaded from the `pub serve`
- /// instance at that URL rather than from the filesystem.
- ///
- /// If [color] is true, console colors will be used when compiling Dart.
- ///
- /// [metadata] is the global metadata for all test suites.
- ///
- /// If the package root doesn't exist, throws an [ApplicationException].
- Loader(Iterable<TestPlatform> platforms, {String root, String packageRoot,
- Uri pubServeUrl, bool color: false, bool jsTrace: false,
- Metadata metadata})
- : _platforms = platforms.toList(),
- _pubServeUrl = pubServeUrl,
- _root = root == null ? p.current : root,
- _packageRoot = packageRootFor(root, packageRoot),
- _color = color,
- _jsTrace = jsTrace,
- _metadata = metadata == null ? new Metadata() : metadata;
+ Loader(this._config, {String root})
+ : _root = root == null ? p.current : root;
/// Loads all test suites in [dir].
///
@@ -145,15 +103,15 @@ class Loader {
new LoadException(path, error), stackTrace: stackTrace);
return;
}
- suiteMetadata = _metadata.merge(suiteMetadata);
+ suiteMetadata = _config.metadata.merge(suiteMetadata);
- if (_pubServeUrl != null && !p.isWithin('test', path)) {
+ if (_config.pubServeUrl != null && !p.isWithin('test', path)) {
yield new LoadSuite.forLoadException(new LoadException(
path, 'When using "pub serve", all test files must be in test/.'));
return;
}
- for (var platform in _platforms) {
+ for (var platform in _config.platforms) {
if (!suiteMetadata.testOn.evaluate(platform, os: currentOS)) continue;
var metadata = suiteMetadata.forPlatform(platform, os: currentOS);
@@ -190,8 +148,8 @@ class Loader {
var isolate;
try {
- if (_pubServeUrl != null) {
- var url = _pubServeUrl.resolveUri(
+ if (_config.pubServeUrl != null) {
+ var url = _config.pubServeUrl.resolveUri(
p.toUri(p.relative(path, from: 'test') + '.vm_test.dart'));
// TODO(nweiz): Remove new Future.sync() once issue 23498 has been fixed
@@ -232,7 +190,7 @@ void main(_, Map message) {
''', {
'reply': receivePort.sendPort,
'metadata': metadata.serialize()
- }, packageRoot: p.toUri(_packageRoot), checked: true);
+ }, packageRoot: p.toUri(_config.packageRoot), checked: true);
}
} catch (error, stackTrace) {
receivePort.close();
« no previous file with comments | « lib/src/runner/configuration.dart ('k') | test/runner/browser/loader_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698