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

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

Issue 14021021: Unit test improvements. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 7 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 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 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 if (rtn is Future) { 115 if (rtn is Future) {
116 rtn.then((_) => _runTest()) 116 rtn.then((_) => _runTest())
117 .catchError((e) { 117 .catchError((e) {
118 _prepTest(); 118 _prepTest();
119 // Calling error() will result in the tearDown being done. 119 // Calling error() will result in the tearDown being done.
120 // One could debate whether tearDown should be done after 120 // One could debate whether tearDown should be done after
121 // a failed setUp. There is no right answer, but doing it 121 // a failed setUp. There is no right answer, but doing it
122 // seems to be the more conservative approach, because 122 // seems to be the more conservative approach, because
123 // unittest will not stop at a test failure. 123 // unittest will not stop at a test failure.
124 var stack = getAttachedStackTrace(e); 124 var stack = getAttachedStackTrace(e);
125 if (stack == null) stack = '';
125 error("$description: Test setup failed: $e", "$stack"); 126 error("$description: Test setup failed: $e", "$stack");
126 }); 127 });
127 } else { 128 } else {
128 var f = _runTest(); 129 var f = _runTest();
129 if (f != null) { 130 if (f != null) {
130 return f; 131 return f;
131 } 132 }
132 } 133 }
133 if (result == null) { // Not complete. 134 if (result == null) { // Not complete.
134 _testComplete = new Completer(); 135 _testComplete = new Completer();
135 return _testComplete.future; 136 return _testComplete.future;
136 } 137 }
137 return null; 138 return null;
138 } 139 }
139 140
140 void _notifyComplete() { 141 void _notifyComplete() {
141 if (_testComplete != null) { 142 if (_testComplete != null) {
142 _testComplete.complete(this); 143 _testComplete.complete(this);
143 _testComplete = null; 144 _testComplete = null;
144 } 145 }
145 } 146 }
146 147
147 // Set the results, notify the config, and return true if this 148 // Set the results, notify the config, and return true if this
148 // is the first time the result is being set. 149 // is the first time the result is being set.
149 void _setResult(String testResult, String messageText, String stack) { 150 void _setResult(String testResult, String messageText, String stack) {
150 _message = messageText; 151 _message = messageText;
151 _stackTrace = stack; 152 _stackTrace = _formatStack(stack);
152 if (result == null) { 153 if (result == null) {
153 _result = testResult; 154 _result = testResult;
154 _config.onTestResult(this); 155 _config.onTestResult(this);
155 } else { 156 } else {
156 _result = testResult; 157 _result = testResult;
157 _config.onTestResultChanged(this); 158 _config.onTestResultChanged(this);
158 } 159 }
159 } 160 }
160 161
161 void _complete(String testResult, 162 void _complete(String testResult,
(...skipping 30 matching lines...) Expand all
192 } 193 }
193 } 194 }
194 _notifyComplete(); 195 _notifyComplete();
195 } 196 }
196 197
197 void pass() { 198 void pass() {
198 _complete(PASS); 199 _complete(PASS);
199 } 200 }
200 201
201 void fail(String messageText, [String stack = '']) { 202 void fail(String messageText, [String stack = '']) {
203 assert(stack != null);
202 if (result != null) { 204 if (result != null) {
203 String newMessage = (result == PASS) 205 String newMessage = (result == PASS)
204 ? 'Test failed after initially passing: $messageText' 206 ? 'Test failed after initially passing: $messageText'
205 : 'Test failed more than once: $messageText'; 207 : 'Test failed more than once: $messageText';
206 // TODO(gram): Should we combine the stack with the old one? 208 // TODO(gram): Should we combine the stack with the old one?
207 _complete(ERROR, newMessage, stack); 209 _complete(ERROR, newMessage, stack);
208 } else { 210 } else {
209 _complete(FAIL, messageText, stack); 211 _complete(FAIL, messageText, stack);
210 } 212 }
211 } 213 }
212 214
213 void error(String messageText, [String stack = '']) { 215 void error(String messageText, [String stack = '']) {
216 assert(stack != null);
214 _complete(ERROR, messageText, stack); 217 _complete(ERROR, messageText, stack);
215 } 218 }
216 219
217 void _markCallbackComplete() { 220 void _markCallbackComplete() {
218 if (--_callbackFunctionsOutstanding == 0 && !isComplete) { 221 if (--_callbackFunctionsOutstanding == 0 && !isComplete) {
219 pass(); 222 pass();
220 } 223 }
221 } 224 }
222 } 225 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698