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

Unified Diff: pkg/unittest/lib/src/config.dart

Issue 22883008: starting to work on unit test config interface (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: more cleanup Created 7 years, 4 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 | « pkg/unittest/lib/interactive_html_config.dart ('k') | pkg/unittest/lib/src/configuration.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/unittest/lib/src/config.dart
diff --git a/pkg/unittest/lib/src/config.dart b/pkg/unittest/lib/src/config.dart
deleted file mode 100644
index d79306f4b05c4ede2b243b48ff6bdfa9cb01190f..0000000000000000000000000000000000000000
--- a/pkg/unittest/lib/src/config.dart
+++ /dev/null
@@ -1,243 +0,0 @@
-// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
gram 2013/08/15 20:38:00 Why empty? Shouldn't it be deleted?
kevmoo-old 2013/08/15 20:46:17 It's deleted in my world. Was it still around (em
-// BSD-style license that can be found in the LICENSE file.
-
-part of unittest;
-
-// A custom failure handler for [expect] that routes expect failures
-// to the config.
-class _ExpectFailureHandler extends DefaultFailureHandler {
- Configuration _config;
-
- _ExpectFailureHandler(this._config) : super();
-
- void fail(String reason) {
- _config.onExpectFailure(reason);
- }
-}
-
-/**
- * Hooks to configure the unittest library for different platforms. This class
- * implements the API in a platform-independent way. Tests that want to take
- * advantage of the platform can create a subclass and override methods from
- * this class.
- */
-
-class Configuration {
- // 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;
-
- /**
- * Subclasses can override this with something useful for diagnostics.
- * Particularly useful in cases where we have parent/child configurations
- * such as layout tests.
- */
- final String name = 'Configuration';
-
- /**
- * If true, then tests are started automatically (otherwise [runTests]
- * must be called explicitly after the tests are set up.
- */
- final bool autoStart = true;
-
- /**
- * If true (the default), throw an exception at the end if any tests failed.
- */
- bool throwOnTestFailures = true;
-
- /**
- * If true (the default), then tests will stop after the first failed
- * [expect]. If false, failed [expect]s will not cause the test
- * to stop (other exceptions will still terminate the test).
- */
- bool stopTestOnExpectFailure = true;
-
- // If stopTestOnExpectFailure is false, we need to capture failures, which
- // we do with this List.
- final _testLogBuffer = <Pair<String, Trace>>[];
-
- /**
- * The constructor sets up a failure handler for [expect] that redirects
- * [expect] failures to [onExpectFailure].
- */
- Configuration() {
- configureExpectFailureHandler(new _ExpectFailureHandler(this));
- }
- /**
- * Called as soon as the unittest framework becomes initialized. This is done
- * even before tests are added to the test framework. It might be used to
- * determine/debug errors that occur before the test harness starts executing.
- * It is also used to tell the vm or browser that tests are going to be run
- * asynchronously and that the process should wait until they are done.
- */
- void onInit() {
- _receivePort = new ReceivePort();
- _postMessage('unittest-suite-wait-for-done');
- }
-
- /** Called as soon as the unittest framework starts running. */
- void onStart() {}
-
- /**
- * Called when each test starts. Useful to show intermediate progress on
- * a test suite. Derived classes should call this first before their own
- * override code.
- */
- void onTestStart(TestCase testCase) {
- assert(testCase != null);
- _testLogBuffer.clear();
- }
-
- /**
- * Called when each test is first completed. Useful to show intermediate
- * progress on a test suite. Derived classes should call this first
- * before their own override code.
- */
- void onTestResult(TestCase testCase) {
- assert(testCase != null);
- if (!stopTestOnExpectFailure && _testLogBuffer.length > 0) {
- // Write the message/stack pairs up to the last pairs.
- var reason = new StringBuffer();
- for (var reasonAndTrace in
- _testLogBuffer.take(_testLogBuffer.length - 1)) {
- reason.write(reasonAndTrace.first);
- reason.write('\n');
- reason.write(reasonAndTrace.last);
- reason.write('\n');
- }
- var lastReasonAndTrace = _testLogBuffer.last;
- // Write the last message.
- reason.write(lastReasonAndTrace.first);
- if (testCase.result == PASS) {
- testCase._result = FAIL;
- testCase._message = reason.toString();
- // Use the last stack as the overall failure stack.
- testCase._stackTrace = lastReasonAndTrace.last;
- } else {
- // Add the last stack to the message; we have a further stack
- // caused by some other failure.
- reason.write(lastReasonAndTrace.last);
- reason.write('\n');
- // Add the existing reason to the end of the expect log to
- // create the final message.
- testCase._message = '${reason.toString()}\n${testCase._message}';
- }
- }
- }
-
- /**
- * Called when an already completed test changes state; for example a test
- * that was marked as passing may later be marked as being in error because
- * it still had callbacks being invoked.
- */
- void onTestResultChanged(TestCase testCase) {
- assert(testCase != null);
- }
-
- /**
- * Handles the logging of messages by a test case. The default in
- * this base configuration is to call print();
- */
- void onLogMessage(TestCase testCase, String message) {
- print(message);
- }
-
- /**
- * Handles failures from expect(). The default in
- * this base configuration is to throw an exception;
- */
- void onExpectFailure(String reason) {
- if (stopTestOnExpectFailure) {
- throw new TestFailure(reason);
- } else {
- try {
- throw '';
- } catch (_, stack) {
- _testLogBuffer.add(
- new Pair<String, Trace>(reason, new Trace.from(stack)));
- }
- }
- }
-
- /**
- * Format a test result.
- */
- String formatResult(TestCase testCase) {
- var result = new StringBuffer();
- result.write(testCase.result.toUpperCase());
- result.write(": ");
- result.write(testCase.description);
- result.write("\n");
-
- if (testCase.message != '') {
- result.write(indent(testCase.message));
- result.write("\n");
- }
-
- if (testCase.stackTrace != null) {
- result.write(indent(testCase.stackTrace.toString()));
- result.write("\n");
- }
- return result.toString();
- }
-
- /**
- * Called with the result of all test cases. The default implementation prints
- * the result summary using the built-in [print] command. Browser tests
- * commonly override this to reformat the output.
- *
- * When [uncaughtError] is not null, it contains an error that occured outside
- * of tests (e.g. setting up the test).
- */
- void onSummary(int passed, int failed, int errors, List<TestCase> results,
- String uncaughtError) {
- // Print each test's result.
- for (final t in results) {
- print(formatResult(t).trim());
- }
-
- // Show the summary.
- print('');
-
- if (passed == 0 && failed == 0 && errors == 0 && uncaughtError == null) {
- print('No tests found.');
- // This is considered a failure too.
- } else if (failed == 0 && errors == 0 && uncaughtError == null) {
- print('All $passed tests passed.');
- } else {
- if (uncaughtError != null) {
- print('Top-level uncaught error: $uncaughtError');
- }
- print('$passed PASSED, $failed FAILED, $errors ERRORS');
- }
- }
-
- /**
- * Called when the unittest framework is done running. [success] indicates
- * whether all tests passed successfully.
- */
- void onDone(bool success) {
- if (success) {
- _postMessage('unittest-suite-success');
- _receivePort.close();
- } else {
- _receivePort.close();
- if (throwOnTestFailures) {
- throw new Exception('Some tests failed.');
- }
- }
- }
-
- /** Handle errors that happen outside the tests. */
- // TODO(vsm): figure out how to expose the stack trace here
- // Currently e.message works in dartium, but not in dartc.
- void handleExternalError(e, String message, [stack]) =>
- _reportTestError('$message\nCaught $e', stack);
-
- _postMessage(String message) {
- // In dart2js browser tests, the JavaScript-based test controller
- // intercepts calls to print and listens for "secret" messages.
- print(message);
- }
-}
« no previous file with comments | « pkg/unittest/lib/interactive_html_config.dart ('k') | pkg/unittest/lib/src/configuration.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698