OLD | NEW |
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 // TODO(nweiz): This is under lib so that it can be used by the unittest dummy | 5 // TODO(nweiz): This is under lib so that it can be used by the unittest dummy |
6 // package. Once that package is no longer being updated, move this back into | 6 // package. Once that package is no longer being updated, move this back into |
7 // bin. | 7 // bin. |
8 library test.executable; | 8 library test.executable; |
9 | 9 |
10 import 'dart:async'; | 10 import 'dart:async'; |
11 import 'dart:io'; | 11 import 'dart:io'; |
12 import 'dart:math' as math; | 12 import 'dart:math' as math; |
13 | 13 |
14 import 'package:args/args.dart'; | 14 import 'package:args/args.dart'; |
15 import 'package:stack_trace/stack_trace.dart'; | 15 import 'package:stack_trace/stack_trace.dart'; |
16 import 'package:yaml/yaml.dart'; | 16 import 'package:yaml/yaml.dart'; |
17 | 17 |
18 import 'backend/test_platform.dart'; | 18 import 'backend/test_platform.dart'; |
19 import 'runner/reporter/compact.dart'; | 19 import 'runner/reporter/compact.dart'; |
| 20 import 'runner/application_exception.dart'; |
20 import 'runner/load_exception.dart'; | 21 import 'runner/load_exception.dart'; |
21 import 'runner/load_exception_suite.dart'; | 22 import 'runner/load_exception_suite.dart'; |
22 import 'runner/loader.dart'; | 23 import 'runner/loader.dart'; |
23 import 'util/exit_codes.dart' as exit_codes; | 24 import 'util/exit_codes.dart' as exit_codes; |
24 import 'util/io.dart'; | 25 import 'util/io.dart'; |
25 import 'utils.dart'; | 26 import 'utils.dart'; |
26 | 27 |
27 /// The argument parser used to parse the executable arguments. | 28 /// The argument parser used to parse the executable arguments. |
28 final _parser = new ArgParser(allowTrailingOptions: true); | 29 final _parser = new ArgParser(allowTrailingOptions: true); |
29 | 30 |
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
242 reporter.close().then((_) => timer.cancel()); | 243 reporter.close().then((_) => timer.cancel()); |
243 }); | 244 }); |
244 | 245 |
245 return reporter.run().then((success) { | 246 return reporter.run().then((success) { |
246 exitCode = success ? 0 : 1; | 247 exitCode = success ? 0 : 1; |
247 }).whenComplete(() { | 248 }).whenComplete(() { |
248 signalSubscription.cancel(); | 249 signalSubscription.cancel(); |
249 return reporter.close(); | 250 return reporter.close(); |
250 }); | 251 }); |
251 }).whenComplete(signalSubscription.cancel).catchError((error, stackTrace) { | 252 }).whenComplete(signalSubscription.cancel).catchError((error, stackTrace) { |
| 253 if (error is ApplicationException) { |
| 254 stderr.writeln(error.message); |
| 255 exitCode = exit_codes.data; |
| 256 return; |
| 257 } |
| 258 |
252 stderr.writeln(getErrorMessage(error)); | 259 stderr.writeln(getErrorMessage(error)); |
253 stderr.writeln(new Trace.from(stackTrace).terse); | 260 stderr.writeln(new Trace.from(stackTrace).terse); |
254 stderr.writeln( | 261 stderr.writeln( |
255 "This is an unexpected error. Please file an issue at " | 262 "This is an unexpected error. Please file an issue at " |
256 "http://github.com/dart-lang/test\n" | 263 "http://github.com/dart-lang/test\n" |
257 "with the stack trace and instructions for reproducing the error."); | 264 "with the stack trace and instructions for reproducing the error."); |
258 exitCode = exit_codes.software; | 265 exitCode = exit_codes.software; |
259 }).whenComplete(() { | 266 }).whenComplete(() { |
260 return loader.close().then((_) { | 267 return loader.close().then((_) { |
261 // If we're on a Dart version that doesn't support Isolate.kill(), we have | 268 // If we're on a Dart version that doesn't support Isolate.kill(), we have |
(...skipping 16 matching lines...) Expand all Loading... |
278 output = stderr; | 285 output = stderr; |
279 } | 286 } |
280 | 287 |
281 output.write("""$message | 288 output.write("""$message |
282 | 289 |
283 Usage: pub run test:test [files or directories...] | 290 Usage: pub run test:test [files or directories...] |
284 | 291 |
285 ${_parser.usage} | 292 ${_parser.usage} |
286 """); | 293 """); |
287 } | 294 } |
OLD | NEW |