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

Unified Diff: unittest/lib/src/simple_configuration.dart

Issue 1400473008: Roll Observatory packages and add a roll script (Closed) Base URL: git@github.com:dart-lang/observatory_pub_packages.git@master
Patch Set: Created 5 years, 2 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 | « unittest/lib/src/matcher/util.dart ('k') | unittest/lib/src/test_case.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: unittest/lib/src/simple_configuration.dart
diff --git a/unittest/lib/src/simple_configuration.dart b/unittest/lib/src/simple_configuration.dart
deleted file mode 100644
index 8eac3715552fb98133a70e4583919a9e1780b595..0000000000000000000000000000000000000000
--- a/unittest/lib/src/simple_configuration.dart
+++ /dev/null
@@ -1,207 +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.
-
-library unittest.simple_configuration;
-
-import 'dart:isolate';
-
-import 'matcher.dart'
- show DefaultFailureHandler, configureExpectFailureHandler, TestFailure;
-
-import '../unittest.dart';
-import 'internal_test_case.dart';
-import 'utils.dart';
-
-// A custom failure handler for [expect] that routes failures to the
-// [SimpleConfiguration].
-class _ExpectFailureHandler extends DefaultFailureHandler {
- final SimpleConfiguration _config;
-
- _ExpectFailureHandler(this._config);
-
- void fail(String reason) {
- _config.onExpectFailure(reason);
- }
-}
-
-/// A configuration that provides hooks to configure the unittest library for
-/// different platforms.
-///
-/// This class implements the [Configuration] 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 SimpleConfiguration extends Configuration {
- /// A port that keeps the VM alive while we wait for asynchronous tests to
- /// finish.
- ///
- /// The VM won't shut down as long as there's an open receive port.
- ReceivePort _receivePort;
-
- /// The name of the configuration.
- ///
- /// Subclasses can override this with something useful for diagnostics. It's
- /// particularly useful for parent/child configurations such as layout tests.
- final name = 'Configuration';
-
- /// If true (the default), throw an exception once all tests have run if any 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, the list of failed [expect]s.
- final _testLogBuffer = <Pair<String, StackTrace>>[];
-
- /// The constructor sets up a failure handler for [expect] that redirects
- /// [expect] failures to [onExpectFailure].
- SimpleConfiguration() : super.blank() {
- configureExpectFailureHandler(new _ExpectFailureHandler(this));
- }
-
- void onInit() {
- // For Dart internal tests, we don't want stack frame filtering.
- // We turn it off here in the default config, but by default turn
- // it back on in the vm and html configs.
- filterStacks = false;
- _receivePort = new ReceivePort();
- _postMessage('unittest-suite-wait-for-done');
- }
-
- /// Called when a test starts.
- ///
- /// Derived classes should call this first before their own override code.
- void onTestStart(TestCase testCase) => _testLogBuffer.clear();
-
- /// Called when a test completes.
- ///
- /// Derived classes should call this first before their own override code.
- void onTestResult(TestCase externalTestCase) {
- if (stopTestOnExpectFailure || _testLogBuffer.isEmpty) return;
-
- var testCase = externalTestCase as InternalTestCase;
-
- // 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}';
- }
- }
-
- /// 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].
- ///
- /// If [stopTestOnExpectFailure] is true, this throws a [TestFailure].
- /// Otherwise, this stores the error.
- void onExpectFailure(String reason) {
- if (stopTestOnExpectFailure) throw new TestFailure(reason);
-
- try {
- throw '';
- } catch (_, stack) {
- var trace = getTrace(stack, formatStacks, filterStacks);
- if (trace == null) trace = stack;
- _testLogBuffer.add(new Pair<String, StackTrace>(reason, trace));
- }
- }
-
- /// Returns a formatted string description of 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 [print],
- /// formatted with [formatResult]. 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 (var test in results) {
- print(formatResult(test).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');
- }
- }
-
- void onDone(bool success) {
- if (success) {
- _postMessage('unittest-suite-success');
- _receivePort.close();
- } else {
- _receivePort.close();
- if (throwOnTestFailures) {
- throw new Exception('Some tests failed.');
- }
- }
- }
-
- void _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 | « unittest/lib/src/matcher/util.dart ('k') | unittest/lib/src/test_case.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698