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

Side by Side Diff: lib/src/runner/loader.dart

Issue 1124113002: Add a flag controlling how verbose stack traces are. (Closed) Base URL: git@github.com:dart-lang/test.git@master
Patch Set: Created 5 years, 7 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 unified diff | Download patch
« no previous file with comments | « lib/src/frontend/throws_matcher.dart ('k') | lib/src/runner/reporter/compact.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library test.runner.loader; 5 library test.runner.loader;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:io'; 8 import 'dart:io';
9 import 'dart:isolate'; 9 import 'dart:isolate';
10 10
(...skipping 15 matching lines...) Expand all
26 import 'vm/isolate_test.dart'; 26 import 'vm/isolate_test.dart';
27 27
28 /// A class for finding test files and loading them into a runnable form. 28 /// A class for finding test files and loading them into a runnable form.
29 class Loader { 29 class Loader {
30 /// All platforms for which tests should be loaded. 30 /// All platforms for which tests should be loaded.
31 final List<TestPlatform> _platforms; 31 final List<TestPlatform> _platforms;
32 32
33 /// Whether to enable colors for Dart compilation. 33 /// Whether to enable colors for Dart compilation.
34 final bool _color; 34 final bool _color;
35 35
36 /// Global metadata that applies to all test suites.
37 final Metadata _metadata;
38
36 /// The root directory that will be served for browser tests. 39 /// The root directory that will be served for browser tests.
37 final String _root; 40 final String _root;
38 41
39 /// The package root to use for loading tests. 42 /// The package root to use for loading tests.
40 final String _packageRoot; 43 final String _packageRoot;
41 44
42 /// The URL for the `pub serve` instance to use to load tests. 45 /// The URL for the `pub serve` instance to use to load tests.
43 /// 46 ///
44 /// This is `null` if tests should be loaded from the filesystem. 47 /// This is `null` if tests should be loaded from the filesystem.
45 final Uri _pubServeUrl; 48 final Uri _pubServeUrl;
(...skipping 25 matching lines...) Expand all
71 /// defaults to the working directory. 74 /// defaults to the working directory.
72 /// 75 ///
73 /// If [packageRoot] is passed, it's used as the package root for all loaded 76 /// If [packageRoot] is passed, it's used as the package root for all loaded
74 /// tests. Otherwise, it's inferred from [root]. 77 /// tests. Otherwise, it's inferred from [root].
75 /// 78 ///
76 /// If [pubServeUrl] is passed, tests will be loaded from the `pub serve` 79 /// If [pubServeUrl] is passed, tests will be loaded from the `pub serve`
77 /// instance at that URL rather than from the filesystem. 80 /// instance at that URL rather than from the filesystem.
78 /// 81 ///
79 /// If [color] is true, console colors will be used when compiling Dart. 82 /// If [color] is true, console colors will be used when compiling Dart.
80 /// 83 ///
84 /// [metadata] is the global metadata for all test suites.
85 ///
81 /// If the package root doesn't exist, throws an [ApplicationException]. 86 /// If the package root doesn't exist, throws an [ApplicationException].
82 Loader(Iterable<TestPlatform> platforms, {String root, String packageRoot, 87 Loader(Iterable<TestPlatform> platforms, {String root, String packageRoot,
83 Uri pubServeUrl, bool color: false}) 88 Uri pubServeUrl, bool color: false, Metadata metadata})
84 : _platforms = platforms.toList(), 89 : _platforms = platforms.toList(),
85 _pubServeUrl = pubServeUrl, 90 _pubServeUrl = pubServeUrl,
86 _root = root == null ? p.current : root, 91 _root = root == null ? p.current : root,
87 _packageRoot = packageRootFor(root, packageRoot), 92 _packageRoot = packageRootFor(root, packageRoot),
88 _color = color; 93 _color = color,
94 _metadata = metadata == null ? new Metadata() : metadata;
89 95
90 /// Loads all test suites in [dir]. 96 /// Loads all test suites in [dir].
91 /// 97 ///
92 /// This will load tests from files that end in "_test.dart". Any tests that 98 /// This will load tests from files that end in "_test.dart". Any tests that
93 /// fail to load will be emitted as [LoadException]s. 99 /// fail to load will be emitted as [LoadException]s.
94 Stream<Suite> loadDir(String dir) { 100 Stream<Suite> loadDir(String dir) {
95 return mergeStreams(new Directory(dir).listSync(recursive: true) 101 return mergeStreams(new Directory(dir).listSync(recursive: true)
96 .map((entry) { 102 .map((entry) {
97 if (entry is! File) return new Stream.fromIterable([]); 103 if (entry is! File) return new Stream.fromIterable([]);
98 104
(...skipping 17 matching lines...) Expand all
116 try { 122 try {
117 suiteMetadata = parseMetadata(path); 123 suiteMetadata = parseMetadata(path);
118 } on AnalyzerErrorGroup catch (_) { 124 } on AnalyzerErrorGroup catch (_) {
119 // Ignore the analyzer's error, since its formatting is much worse than 125 // Ignore the analyzer's error, since its formatting is much worse than
120 // the VM's or dart2js's. 126 // the VM's or dart2js's.
121 suiteMetadata = new Metadata(); 127 suiteMetadata = new Metadata();
122 } on FormatException catch (error, stackTrace) { 128 } on FormatException catch (error, stackTrace) {
123 return new Stream.fromFuture( 129 return new Stream.fromFuture(
124 new Future.error(new LoadException(path, error), stackTrace)); 130 new Future.error(new LoadException(path, error), stackTrace));
125 } 131 }
132 suiteMetadata = _metadata.merge(suiteMetadata);
126 133
127 var controller = new StreamController(); 134 var controller = new StreamController();
128 Future.forEach(_platforms, (platform) { 135 Future.forEach(_platforms, (platform) {
129 if (!suiteMetadata.testOn.evaluate(platform, os: currentOS)) { 136 if (!suiteMetadata.testOn.evaluate(platform, os: currentOS)) {
130 return null; 137 return null;
131 } 138 }
132 139
133 var metadata = suiteMetadata.forPlatform(platform, os: currentOS); 140 var metadata = suiteMetadata.forPlatform(platform, os: currentOS);
134 141
135 // Don't load a skipped suite. 142 // Don't load a skipped suite.
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 Future close() { 247 Future close() {
241 for (var isolate in _isolates) { 248 for (var isolate in _isolates) {
242 isolate.kill(); 249 isolate.kill();
243 } 250 }
244 _isolates.clear(); 251 _isolates.clear();
245 252
246 if (_browserServerCompleter == null) return new Future.value(); 253 if (_browserServerCompleter == null) return new Future.value();
247 return _browserServer.then((browserServer) => browserServer.close()); 254 return _browserServer.then((browserServer) => browserServer.close());
248 } 255 }
249 } 256 }
OLDNEW
« no previous file with comments | « lib/src/frontend/throws_matcher.dart ('k') | lib/src/runner/reporter/compact.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698