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

Unified Diff: pkg/unittest/lib/compact_vm_config.dart

Issue 807193003: Re-apply "Remove unittest and matcher from the repo." (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Code review changes Created 6 years 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 | « pkg/unittest/LICENSE ('k') | pkg/unittest/lib/coverage_controller.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/unittest/lib/compact_vm_config.dart
diff --git a/pkg/unittest/lib/compact_vm_config.dart b/pkg/unittest/lib/compact_vm_config.dart
deleted file mode 100644
index aee1405da0b7ed912c1c820bcd9d97ce88d40359..0000000000000000000000000000000000000000
--- a/pkg/unittest/lib/compact_vm_config.dart
+++ /dev/null
@@ -1,216 +0,0 @@
-// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-/// A test configuration that generates a compact 1-line progress bar. The bar
-/// is updated in-place before and after each test is executed. If all tests
-/// pass, only a couple of lines are printed in the terminal. If a test fails,
-/// the failure is shown and the progress bar continues to be updated below it.
-library unittest.compact_vm_config;
-
-import 'dart:async';
-import 'dart:io';
-import 'dart:isolate';
-
-import 'unittest.dart';
-import 'src/utils.dart';
-import 'vm_config.dart';
-
-const String _GREEN = '\u001b[32m';
-const String _RED = '\u001b[31m';
-const String _NONE = '\u001b[0m';
-
-const int MAX_LINE = 80;
-
-class CompactVMConfiguration extends VMConfiguration {
- // The VM won't shut down if a receive port is open. Use this to make sure
- // we correctly wait for asynchronous tests.
- ReceivePort _receivePort;
-
- DateTime _start;
- Set<int> _passing = new Set();
- Set<int> _failing = new Set();
- int get _pass => _passing.length;
- int get _fail => _failing.length;
-
- void onInit() {
- _receivePort = new ReceivePort();
- // Override and don't call the superclass onInit() to avoid printing the
- // "unittest-suite-..." boilerplate.
- }
-
- void onStart() {
- _start = new DateTime.now();
- }
-
- void onTestStart(TestCase test) {
- super.onTestStart(test);
- _progressLine(test.description);
- }
-
- void onTestResult(TestCase test) {
- super.onTestResult(test);
- if (test.result == PASS) {
- _passing.add(test.id);
- _progressLine(test.description);
- } else {
- _failing.add(test.id);
- _progressLine(test.description);
- _print();
- if (test.message != '') {
- _print(indent(test.message));
- }
-
- if (test.stackTrace != null) {
- _print(indent(test.stackTrace.toString()));
- }
- }
- }
-
- void onTestResultChanged(TestCase test) {
- _passing.remove(test.id);
- _failing.add(test.id);
- _progressLine(test.description);
- _print();
- if (test.message != '') {
- _print(indent(test.message));
- }
-
- if (test.stackTrace != null) {
- _print(indent(test.stackTrace.toString()));
- }
- }
-
- void onDone(bool success) {
- // Override and don't call the superclass onDone() to avoid printing the
- // "unittest-suite-..." boilerplate.
- Future.wait([stdout.close(), stderr.close()]).then((_) {
- _receivePort.close();
- exit(success ? 0 : 1);
- });
- }
-
- void onSummary(int passed, int failed, int errors, List<TestCase> results,
- String uncaughtError) {
- var success = false;
- if (passed == 0 && failed == 0 && errors == 0 && uncaughtError == null) {
- _print('\nNo tests ran.');
- } else if (failed == 0 && errors == 0 && uncaughtError == null) {
- _progressLine('All tests passed!', _NONE);
- _print();
- success = true;
- } else {
- _progressLine('Some tests failed.', _RED);
- _print();
- if (uncaughtError != null) {
- _print('Top-level uncaught error: $uncaughtError');
- }
- _print('$passed PASSED, $failed FAILED, $errors ERRORS');
- }
- }
-
- int _lastLength = 0;
-
- final int _nonVisiblePrefix = 1 + _GREEN.length + _NONE.length;
-
- void _progressLine(String message, [String color = _NONE]) {
- var duration = (new DateTime.now()).difference(_start);
- var buffer = new StringBuffer();
- // \r moves back to the beginning of the current line.
- buffer.write('\r${_timeString(duration)} ');
- buffer.write(_GREEN);
- buffer.write('+');
- buffer.write(_pass);
- buffer.write(_NONE);
- if (_fail != 0) {
- buffer.write(_RED);
- buffer.write(' -');
- buffer.write(_fail);
- buffer.write(_NONE);
- }
- buffer.write(': ');
- buffer.write(color);
-
- // Ensure the line fits under MAX_LINE. [buffer] includes the color escape
- // sequences too. Because these sequences are not visible characters, we
- // make sure they are not counted towards the limit.
- int nonVisible = _nonVisiblePrefix + color.length +
- (_fail != 0 ? (_RED.length + _NONE.length) : 0);
- int len = buffer.length - nonVisible;
- var mx = MAX_LINE - len;
- buffer.write(_snippet(message, MAX_LINE - len));
- buffer.write(_NONE);
-
- // Pad the rest of the line so that it looks erased.
- len = buffer.length - nonVisible - _NONE.length;
- if (len > _lastLength) {
- _lastLength = len;
- } else {
- while (len < _lastLength) {
- buffer.write(' ');
- _lastLength--;
- }
- }
- stdout.write(buffer.toString());
- }
-
- String _padTime(int time) =>
- (time == 0) ? '00' : ((time < 10) ? '0$time' : '$time');
-
- String _timeString(Duration duration) {
- var min = duration.inMinutes;
- var sec = duration.inSeconds % 60;
- return '${_padTime(min)}:${_padTime(sec)}';
- }
-
- String _snippet(String text, int maxLength) {
- // Return the full message if it fits
- if (text.length <= maxLength) return text;
-
- // If we can fit the first and last three words, do so.
- var words = text.split(' ');
- if (words.length > 1) {
- int i = words.length;
- var len = words.first.length + 4;
- do {
- len += 1 + words[--i].length;
- } while (len <= maxLength && i > 0);
- if (len > maxLength || i == 0) i++;
- if (i < words.length - 4) {
- // Require at least 3 words at the end.
- var buffer = new StringBuffer();
- buffer.write(words.first);
- buffer.write(' ...');
- for (; i < words.length; i++) {
- buffer.write(' ');
- buffer.write(words[i]);
- }
- return buffer.toString();
- }
- }
-
- // Otherwise truncate to return the trailing text, but attempt to start at
- // the beginning of a word.
- var res = text.substring(text.length - maxLength + 4);
- var firstSpace = res.indexOf(' ');
- if (firstSpace > 0) {
- res = res.substring(firstSpace);
- }
- return '...$res';
- }
-}
-
-// TODO(sigmund): delete when dartbug.com/17269 is fixed (use `print` instead).
-_print([value = '']) => stdout.write('$value\n');
-
-void useCompactVMConfiguration() {
- // If the test is running on the Dart buildbots, we don't want to use this
- // config since it's output may not be what the bots expect.
- if (Platform.environment['LOGNAME'] == 'chrome-bot') {
- return;
- }
-
- unittestConfiguration = _singleton;
-}
-
-final _singleton = new CompactVMConfiguration();
« no previous file with comments | « pkg/unittest/LICENSE ('k') | pkg/unittest/lib/coverage_controller.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698