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

Side by Side Diff: pkg/unittest/lib/unittest.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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 /** 5 /**
6 * A library for writing dart unit tests. 6 * A library for writing dart unit tests.
7 * 7 *
8 * ## Installing ## 8 * ## Installing ##
9 * 9 *
10 * Use [pub][] to install this package. Add the following to your `pubspec.yaml` 10 * Use [pub][] to install this package. Add the following to your `pubspec.yaml`
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 * [Issue 2706](http://dartbug.com/2706)). 139 * [Issue 2706](http://dartbug.com/2706)).
140 * 140 *
141 * [pub]: http://pub.dartlang.org 141 * [pub]: http://pub.dartlang.org
142 * [pkg]: http://pub.dartlang.org/packages/unittest 142 * [pkg]: http://pub.dartlang.org/packages/unittest
143 */ 143 */
144 library unittest; 144 library unittest;
145 145
146 import 'dart:async'; 146 import 'dart:async';
147 import 'dart:collection'; 147 import 'dart:collection';
148 import 'dart:isolate'; 148 import 'dart:isolate';
149 import 'package:stack_trace/stack_trace.dart';
150
149 import 'matcher.dart'; 151 import 'matcher.dart';
150 export 'matcher.dart'; 152 export 'matcher.dart';
151 153
152 import 'package:stack_trace/stack_trace.dart'; 154 import 'src/utils.dart';
153 155
154 import 'src/utils.dart'; 156 part 'src/configuration.dart';
155 part 'src/config.dart'; 157 part 'src/simple_configuration.dart';
156 part 'src/test_case.dart'; 158 part 'src/test_case.dart';
157 159
158 Configuration _config; 160 Configuration _config;
159 161
160 /** 162 /**
161 * [Configuration] used by the unittest library. Note that if a 163 * [Configuration] used by the unittest library. Note that if a
162 * configuration has not been set, calling this getter will create 164 * configuration has not been set, calling this getter will create
163 * a default configuration. 165 * a default configuration.
164 */ 166 */
165 Configuration get unittestConfiguration { 167 Configuration get unittestConfiguration {
(...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after
649 void tearDown(Function teardownTest) { 651 void tearDown(Function teardownTest) {
650 _currentContext.testTeardown = teardownTest; 652 _currentContext.testTeardown = teardownTest;
651 } 653 }
652 654
653 /** Advance to the next test case. */ 655 /** Advance to the next test case. */
654 void _nextTestCase() { 656 void _nextTestCase() {
655 _currentTestCaseIndex++; 657 _currentTestCaseIndex++;
656 _runTest(); 658 _runTest();
657 } 659 }
658 660
659 /** 661 /** Handle errors that happen outside the tests. */
660 * Utility function that can be used to notify the test framework that an 662 // TODO(vsm): figure out how to expose the stack trace here
661 * error was caught outside of this library. 663 // Currently e.message works in dartium, but not in dartc.
662 */ 664 void handleExternalError(e, String message, [stack]) {
663 void _reportTestError(String msg, trace) { 665 var msg = '$message\nCaught $e';
664 if (_currentTestCaseIndex < testCases.length) { 666
665 final testCase = testCases[_currentTestCaseIndex]; 667 if (currentTestCase != null) {
666 testCase.error(msg, trace); 668 currentTestCase.error(msg, stack);
667 } else { 669 } else {
668 _uncaughtErrorMessage = "$msg: $trace"; 670 _uncaughtErrorMessage = "$msg: $stack";
669 } 671 }
670 } 672 }
671 673
672 void rerunTests() { 674 void rerunTests() {
673 _uncaughtErrorMessage = null; 675 _uncaughtErrorMessage = null;
674 _initialized = true; // We don't want to reset the test array. 676 _initialized = true; // We don't want to reset the test array.
675 runTests(); 677 runTests();
676 } 678 }
677 679
678 /** 680 /**
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
864 866
865 if (!formatStacks) return trace; 867 if (!formatStacks) return trace;
866 868
867 // Format the stack trace by removing everything above TestCase._runTest, 869 // Format the stack trace by removing everything above TestCase._runTest,
868 // which is usually going to be irrelevant. Also fold together unittest and 870 // which is usually going to be irrelevant. Also fold together unittest and
869 // core library calls so only the function the user called is visible. 871 // core library calls so only the function the user called is visible.
870 return new Trace(trace.frames.takeWhile((frame) { 872 return new Trace(trace.frames.takeWhile((frame) {
871 return frame.package != 'unittest' || frame.member != 'TestCase._runTest'; 873 return frame.package != 'unittest' || frame.member != 'TestCase._runTest';
872 })).terse.foldFrames((frame) => frame.package == 'unittest' || frame.isCore); 874 })).terse.foldFrames((frame) => frame.package == 'unittest' || frame.isCore);
873 } 875 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698