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

Unified Diff: lib/src/runner/reporter/compact.dart

Issue 1056733002: Run test tearDowns and clean up temporary directories when a signal is caught. (Closed) Base URL: git@github.com:dart-lang/test@master
Patch Set: Code review changes Created 5 years, 9 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/engine.dart ('k') | lib/src/runner/vm/isolate_listener.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/src/runner/reporter/compact.dart
diff --git a/lib/src/runner/reporter/compact.dart b/lib/src/runner/reporter/compact.dart
index 42b1eb755a3e5a1232b0b9aa2ba07c4872c25fdc..b24136aff21960904527057631e5fa2ee3dd55ff 100644
--- a/lib/src/runner/reporter/compact.dart
+++ b/lib/src/runner/reporter/compact.dart
@@ -51,6 +51,9 @@ class CompactReporter {
/// The set of tests that have completed and been marked as failing or error.
final _failed = new Set<LiveTest>();
+ /// Whether [close] has been called.
+ bool _closed = false;
+
/// The size of [_passed] last time a progress notification was printed.
int _lastProgressPassed;
@@ -60,6 +63,9 @@ class CompactReporter {
/// The message printed for the last progress notification.
String _lastProgressMessage;
+ // Whether a newline has been printed since the last progress line.
+ var _printedNewline = true;
+
/// Creates a [ConsoleReporter] that will run all tests in [suites].
///
/// If [color] is `true`, this will use terminal colors; if it's `false`, it
@@ -72,10 +78,10 @@ class CompactReporter {
_green = color ? '\u001b[32m' : '',
_red = color ? '\u001b[31m' : '',
_noColor = color ? '\u001b[0m' : '' {
- // Whether a newline has been printed since the last progress line.
- var printedNewline = false;
_engine.onTestStarted.listen((liveTest) {
_progressLine(_description(liveTest));
+ _printedNewline = false;
+
liveTest.onStateChange.listen((state) {
if (state.status != Status.complete) return;
if (state.result == Result.success) {
@@ -85,15 +91,15 @@ class CompactReporter {
_failed.add(liveTest);
}
_progressLine(_description(liveTest));
- printedNewline = false;
+ _printedNewline = false;
});
liveTest.onError.listen((error) {
if (liveTest.state.status != Status.complete) return;
_progressLine(_description(liveTest));
- if (!printedNewline) print('');
- printedNewline = true;
+ if (!_printedNewline) print('');
+ _printedNewline = true;
print(indent(error.error.toString()));
print(indent(terseChain(error.stackTrace).toString()));
@@ -101,8 +107,8 @@ class CompactReporter {
liveTest.onPrint.listen((line) {
_progressLine(_description(liveTest));
- if (!printedNewline) print('');
- printedNewline = true;
+ if (!_printedNewline) print('');
+ _printedNewline = true;
print(line);
});
@@ -126,6 +132,8 @@ class CompactReporter {
_stopwatch.start();
return _engine.run().then((success) {
+ if (_closed) return false;
+
if (success) {
_progressLine("All tests passed!");
print('');
@@ -140,7 +148,12 @@ class CompactReporter {
/// Signals that the caller is done with any test output and the reporter
/// should release any resources it has allocated.
- Future close() => _engine.close();
+ Future close() {
+ if (!_printedNewline) print("");
+ _printedNewline = true;
+ _closed = true;
+ return _engine.close();
+ }
/// Prints a line representing the current state of the tests.
///
« no previous file with comments | « lib/src/runner/engine.dart ('k') | lib/src/runner/vm/isolate_listener.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698