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

Side by Side Diff: pkg/unittest/lib/src/test_case.dart

Issue 19684006: Roll back "Use package:stack_trace in unittest." (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 5 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
« no previous file with comments | « pkg/unittest/lib/src/config.dart ('k') | pkg/unittest/lib/src/utils.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 part of unittest; 5 part of unittest;
6 6
7 /** 7 /**
8 * Represents the state for an individual unit test. 8 * Represents the state for an individual unit test.
9 * 9 *
10 * Create by calling [test] or [solo_test]. 10 * Create by calling [test] or [solo_test].
(...skipping 23 matching lines...) Expand all
34 String _message = ''; 34 String _message = '';
35 /** Error or failure message. */ 35 /** Error or failure message. */
36 String get message => _message; 36 String get message => _message;
37 37
38 String _result; 38 String _result;
39 /** 39 /**
40 * One of [PASS], [FAIL], [ERROR], or [null] if the test hasn't run yet. 40 * One of [PASS], [FAIL], [ERROR], or [null] if the test hasn't run yet.
41 */ 41 */
42 String get result => _result; 42 String get result => _result;
43 43
44 Trace _stackTrace; 44 String _stackTrace;
45 /** Stack trace associated with this test, or [null] if it succeeded. */ 45 /** Stack trace associated with this test, or [null] if it succeeded. */
46 Trace get stackTrace => _stackTrace; 46 String get stackTrace => _stackTrace;
47 47
48 /** The group (or groups) under which this test is running. */ 48 /** The group (or groups) under which this test is running. */
49 final String currentGroup; 49 final String currentGroup;
50 50
51 DateTime _startTime; 51 DateTime _startTime;
52 DateTime get startTime => _startTime; 52 DateTime get startTime => _startTime;
53 53
54 Duration _runningTime; 54 Duration _runningTime;
55 Duration get runningTime => _runningTime; 55 Duration get runningTime => _runningTime;
56 56
57 bool enabled = true; 57 bool enabled = true;
58 58
59 bool _doneTeardown = false; 59 bool _doneTeardown = false;
60 60
61 Completer _testComplete; 61 Completer _testComplete;
62 62
63 TestCase._internal(this.id, this.description, this.testFunction) 63 TestCase._internal(this.id, this.description, this.testFunction)
64 : currentGroup = _currentContext.fullName, 64 : currentGroup = _currentContext.fullName,
65 setUp = _currentContext.testSetup, 65 setUp = _currentContext.testSetup,
66 tearDown = _currentContext.testTeardown; 66 tearDown = _currentContext.testTeardown;
67 67
68 bool get isComplete => !enabled || result != null; 68 bool get isComplete => !enabled || result != null;
69 69
70 Function _errorHandler(String stage) => (e) { 70 Function _errorHandler(String stage) => (e) {
71 var stack = getAttachedStackTrace(e); 71 var stack = getAttachedStackTrace(e);
72 stack = (stack == null) ? '' : '$stack';
72 if (result == null || result == PASS) { 73 if (result == null || result == PASS) {
73 if (e is TestFailure) { 74 if (e is TestFailure) {
74 fail("$e", stack); 75 fail("$e", stack);
75 } else { 76 } else {
76 error("$stage failed: Caught $e", stack); 77 error("$stage failed: Caught $e", stack);
77 } 78 }
78 } 79 }
79 }; 80 };
80 81
81 /** 82 /**
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 }).catchError(_errorHandler('Teardown')); 115 }).catchError(_errorHandler('Teardown'));
115 } else if (tearDown != null) { 116 } else if (tearDown != null) {
116 return tearDown(); 117 return tearDown();
117 } 118 }
118 }) 119 })
119 .catchError(_errorHandler('Teardown')); 120 .catchError(_errorHandler('Teardown'));
120 } 121 }
121 122
122 // Set the results, notify the config, and return true if this 123 // Set the results, notify the config, and return true if this
123 // is the first time the result is being set. 124 // is the first time the result is being set.
124 void _setResult(String testResult, String messageText, stack) { 125 void _setResult(String testResult, String messageText, String stack) {
125 _message = messageText; 126 _message = messageText;
126 _stackTrace = _getTrace(stack); 127 _stackTrace = _formatStack(stack);
127 if (result == null) { 128 if (result == null) {
128 _result = testResult; 129 _result = testResult;
129 _config.onTestResult(this); 130 _config.onTestResult(this);
130 } else { 131 } else {
131 _result = testResult; 132 _result = testResult;
132 _config.onTestResultChanged(this); 133 _config.onTestResultChanged(this);
133 } 134 }
134 } 135 }
135 136
136 void _complete(String testResult, [String messageText = '', stack]) { 137 void _complete(String testResult,
138 [String messageText = '',
139 String stack = '']) {
137 if (runningTime == null) { 140 if (runningTime == null) {
138 // The startTime can be `null` if an error happened during setup. In this 141 // The startTime can be `null` if an error happened during setup. In this
139 // case we simply report a running time of 0. 142 // case we simply report a running time of 0.
140 if (startTime != null) { 143 if (startTime != null) {
141 _runningTime = new DateTime.now().difference(startTime); 144 _runningTime = new DateTime.now().difference(startTime);
142 } else { 145 } else {
143 _runningTime = const Duration(seconds: 0); 146 _runningTime = const Duration(seconds: 0);
144 } 147 }
145 } 148 }
146 _setResult(testResult, messageText, stack); 149 _setResult(testResult, messageText, stack);
147 if (_testComplete != null) { 150 if (_testComplete != null) {
148 var t = _testComplete; 151 var t = _testComplete;
149 _testComplete = null; 152 _testComplete = null;
150 t.complete(this); 153 t.complete(this);
151 } 154 }
152 } 155 }
153 156
154 void pass() { 157 void pass() {
155 _complete(PASS); 158 _complete(PASS);
156 } 159 }
157 160
158 void fail(String messageText, [stack]) { 161 void fail(String messageText, [String stack = '']) {
162 assert(stack != null);
159 if (result != null) { 163 if (result != null) {
160 String newMessage = (result == PASS) 164 String newMessage = (result == PASS)
161 ? 'Test failed after initially passing: $messageText' 165 ? 'Test failed after initially passing: $messageText'
162 : 'Test failed more than once: $messageText'; 166 : 'Test failed more than once: $messageText';
163 // TODO(gram): Should we combine the stack with the old one? 167 // TODO(gram): Should we combine the stack with the old one?
164 _complete(ERROR, newMessage, stack); 168 _complete(ERROR, newMessage, stack);
165 } else { 169 } else {
166 _complete(FAIL, messageText, stack); 170 _complete(FAIL, messageText, stack);
167 } 171 }
168 } 172 }
169 173
170 void error(String messageText, [stack]) { 174 void error(String messageText, [String stack = '']) {
175 assert(stack != null);
171 _complete(ERROR, messageText, stack); 176 _complete(ERROR, messageText, stack);
172 } 177 }
173 178
174 void _markCallbackComplete() { 179 void _markCallbackComplete() {
175 if (--_callbackFunctionsOutstanding == 0 && !isComplete) { 180 if (--_callbackFunctionsOutstanding == 0 && !isComplete) {
176 pass(); 181 pass();
177 } 182 }
178 } 183 }
179 } 184 }
OLDNEW
« no previous file with comments | « pkg/unittest/lib/src/config.dart ('k') | pkg/unittest/lib/src/utils.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698