Chromium Code Reviews

Unified Diff: lib/src/console_reporter.dart

Issue 933083002: Add a test runner executable. (Closed) Base URL: git@github.com:dart-lang/unittest@master
Patch Set: Code review changes Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
« no previous file with comments | « bin/unittest.dart ('k') | lib/src/engine.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/src/console_reporter.dart
diff --git a/lib/src/console_reporter.dart b/lib/src/console_reporter.dart
index 3faa1b47579b3d98049918a4d91e48a5efef5707..7d208e0cdf89dc4b2c758581926662ac01f8e55d 100644
--- a/lib/src/console_reporter.dart
+++ b/lib/src/console_reporter.dart
@@ -49,6 +49,15 @@ class ConsoleReporter {
/// The set of tests that have completed and been marked as failing or error.
final _failed = new Set<LiveTest>();
+ /// The size of [_passed] last time a progress notification was printed.
+ int _lastProgressPassed;
+
+ /// The size of [_failed] last time a progress notification was printed.
+ int _lastProgressFailed;
+
+ /// The message printed for the last progress notification.
+ String _lastProgressMessage;
+
/// Creates a [ConsoleReporter] that will run all tests in [suites].
ConsoleReporter(Iterable<Suite> suites)
: _multipleSuites = suites.length > 1,
@@ -70,11 +79,10 @@ class ConsoleReporter {
liveTest.onError.listen((error) {
if (liveTest.state.status != Status.complete) return;
- // TODO(nweiz): don't re-print the progress line if a test has multiple
- // errors in a row.
_progressLine(_description(liveTest));
print('');
- print(indent("${error.error}\n${error.stackTrace}"));
+ print(indent(error.error.toString()));
+ print(indent(terseChain(error.stackTrace).toString()));
});
});
}
@@ -89,11 +97,14 @@ class ConsoleReporter {
"once.");
}
+ if (_engine.liveTests.isEmpty) {
+ print("No tests ran.");
+ return new Future.value(true);
+ }
+
_stopwatch.start();
return _engine.run().then((success) {
- if (_engine.liveTests.isEmpty) {
- print("\nNo tests ran.");
- } else if (success) {
+ if (success) {
_progressLine("All tests passed!");
print('');
} else {
@@ -105,12 +116,27 @@ class ConsoleReporter {
});
}
+ /// Signals that the caller is done with any test output and the reporter
+ /// should release any resources it has allocated.
+ Future close() => _engine.close();
+
/// Prints a line representing the current state of the tests.
///
/// [message] goes after the progress report, and may be truncated to fit the
/// entire line within [_lineLength]. If [color] is passed, it's used as the
/// color for [message].
void _progressLine(String message, {String color}) {
+ // Print nothing if nothing has changed since the last progress line.
+ if (_passed.length == _lastProgressPassed &&
+ _failed.length == _lastProgressFailed &&
+ message == _lastProgressMessage) {
+ return;
+ }
+
+ _lastProgressPassed = _passed.length;
+ _lastProgressFailed = _failed.length;
+ _lastProgressMessage = message;
+
if (color == null) color = '';
var duration = _stopwatch.elapsed;
var buffer = new StringBuffer();
« no previous file with comments | « bin/unittest.dart ('k') | lib/src/engine.dart » ('j') | no next file with comments »

Powered by Google App Engine