| OLD | NEW |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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.md file. | 3 // BSD-style license that can be found in the LICENSE.md file. |
| 4 | 4 |
| 5 library testing.run_tests; | 5 library testing.run_tests; |
| 6 | 6 |
| 7 import 'dart:async' show | 7 import 'dart:async' show |
| 8 Future; | 8 Future; |
| 9 | 9 |
| 10 import 'dart:io' show | 10 import 'dart:io' show |
| (...skipping 20 matching lines...) Expand all Loading... |
| 31 enableVerboseOutput, | 31 enableVerboseOutput, |
| 32 isVerbose, | 32 isVerbose, |
| 33 logMessage, | 33 logMessage, |
| 34 logSuiteComplete, | 34 logSuiteComplete, |
| 35 logTestComplete; | 35 logTestComplete; |
| 36 | 36 |
| 37 import 'run.dart' show | 37 import 'run.dart' show |
| 38 SuiteRunner, | 38 SuiteRunner, |
| 39 runProgram; | 39 runProgram; |
| 40 | 40 |
| 41 import 'suite.dart' show | |
| 42 Suite; | |
| 43 | |
| 44 class CommandLine { | 41 class CommandLine { |
| 45 final Set<String> options; | 42 final Set<String> options; |
| 46 final List<String> arguments; | 43 final List<String> arguments; |
| 47 | 44 |
| 48 CommandLine(this.options, this.arguments); | 45 CommandLine(this.options, this.arguments); |
| 49 | 46 |
| 50 bool get verbose => options.contains("--verbose") || options.contains("-v"); | 47 bool get verbose => options.contains("--verbose") || options.contains("-v"); |
| 51 | 48 |
| 52 Set<String> get skip => commaSeparated("--skip="); | 49 Set<String> get skip => commaSeparated("--skip="); |
| 53 | 50 |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 160 if (cl.verbose) { | 157 if (cl.verbose) { |
| 161 enableVerboseOutput(); | 158 enableVerboseOutput(); |
| 162 } | 159 } |
| 163 Map<String, String> environment = cl.environment; | 160 Map<String, String> environment = cl.environment; |
| 164 Uri configuration = await cl.configuration; | 161 Uri configuration = await cl.configuration; |
| 165 if (configuration == null) return; | 162 if (configuration == null) return; |
| 166 if (!isVerbose) { | 163 if (!isVerbose) { |
| 167 print("Use --verbose to display more details."); | 164 print("Use --verbose to display more details."); |
| 168 } | 165 } |
| 169 TestRoot root = await TestRoot.fromUri(configuration); | 166 TestRoot root = await TestRoot.fromUri(configuration); |
| 170 Set<String> skip = cl.skip; | 167 SuiteRunner runner = new SuiteRunner(root.suites, environment, cl.selectors, |
| 171 Set<String> selectedSuites = cl.selectedSuites; | 168 cl.selectedSuites, cl.skip); |
| 172 List<Suite> suites = root.suites.where((s) { | |
| 173 return !skip.contains(s.name) && | |
| 174 (selectedSuites.isEmpty || selectedSuites.contains(s.name)); | |
| 175 }).toList(); | |
| 176 SuiteRunner runner = new SuiteRunner(suites, environment, cl.selectors); | |
| 177 String program = await runner.generateDartProgram(); | 169 String program = await runner.generateDartProgram(); |
| 178 await runner.analyze(root.packages); | 170 bool hasAnalyzerSuites = await runner.analyze(root.packages); |
| 179 Stopwatch sw = new Stopwatch()..start(); | 171 Stopwatch sw = new Stopwatch()..start(); |
| 180 if (program == null) { | 172 if (program == null) { |
| 181 fail("No tests configured."); | 173 if (!hasAnalyzerSuites) { |
| 174 fail("No tests configured."); |
| 175 } |
| 182 } else { | 176 } else { |
| 183 await runProgram(program, root.packages); | 177 await runProgram(program, root.packages); |
| 184 } | 178 } |
| 185 print("Running tests took: ${sw.elapsed}."); | 179 print("Running tests took: ${sw.elapsed}."); |
| 186 }); | 180 }); |
| 187 | 181 |
| 188 Future<Null> runTests(Map<String, Function> tests) => | 182 Future<Null> runTests(Map<String, Function> tests) => |
| 189 withErrorHandling(() async { | 183 withErrorHandling(() async { |
| 190 int completed = 0; | 184 int completed = 0; |
| 191 for (String name in tests.keys) { | 185 for (String name in tests.keys) { |
| 192 StringBuffer sb = new StringBuffer(); | 186 StringBuffer sb = new StringBuffer(); |
| 193 try { | 187 try { |
| 194 await runGuarded(() { | 188 await runGuarded(() { |
| 195 print("Running test $name"); | 189 print("Running test $name"); |
| 196 return tests[name](); | 190 return tests[name](); |
| 197 }, printLineOnStdout: sb.writeln); | 191 }, printLineOnStdout: sb.writeln); |
| 198 logMessage(sb); | 192 logMessage(sb); |
| 199 } catch (e) { | 193 } catch (e) { |
| 200 print(sb); | 194 print(sb); |
| 201 rethrow; | 195 rethrow; |
| 202 } | 196 } |
| 203 logTestComplete(++completed, 0, tests.length, null, null); | 197 logTestComplete(++completed, 0, tests.length, null, null); |
| 204 } | 198 } |
| 205 logSuiteComplete(); | 199 logSuiteComplete(); |
| 206 }); | 200 }); |
| OLD | NEW |