| OLD | NEW | 
|---|
| 1 // Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file | 1 // Copyright (c) 2011, 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  * testcase.dart: this file is sourced by unittest.dart. It defines [TestCase] | 8  * testcase.dart: this file is sourced by unittest.dart. It defines [TestCase] | 
| 9  * and assumes unittest defines the type [TestFunction]. | 9  * and assumes unittest defines the type [TestFunction]. | 
| 10  */ | 10  */ | 
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 132     return null; | 132     return null; | 
| 133   } | 133   } | 
| 134 | 134 | 
| 135   void _notifyComplete() { | 135   void _notifyComplete() { | 
| 136     if (_testComplete != null) { | 136     if (_testComplete != null) { | 
| 137       _testComplete.complete(this); | 137       _testComplete.complete(this); | 
| 138       _testComplete = null; | 138       _testComplete = null; | 
| 139     } | 139     } | 
| 140   } | 140   } | 
| 141 | 141 | 
| 142   void _complete() { | 142   // Set the results, notify the config, and return true if this | 
|  | 143   // is the first time the result is being set. | 
|  | 144   void _setResult(String testResult, String messageText, String stack) { | 
|  | 145     message = messageText; | 
|  | 146     stackTrace = stack; | 
|  | 147     if (result == null) { | 
|  | 148       result = testResult; | 
|  | 149       _config.onTestResult(this); | 
|  | 150     } else { | 
|  | 151       result = testResult; | 
|  | 152       _config.onTestResultChanged(this); | 
|  | 153     } | 
|  | 154   } | 
|  | 155 | 
|  | 156   void _complete(String testResult, | 
|  | 157                 [String messageText = '', | 
|  | 158                  String stack = '']) { | 
| 143     if (runningTime == null) { | 159     if (runningTime == null) { | 
| 144       // TODO(gram): currently the duration measurement code is blocked | 160       // TODO(gram): currently the duration measurement code is blocked | 
| 145       // by issue 4437. When that is fixed replace the line below with: | 161       // by issue 4437. When that is fixed replace the line below with: | 
| 146       //    runningTime = new DateTime.now().difference(startTime); | 162       //    runningTime = new DateTime.now().difference(startTime); | 
| 147       runningTime = new Duration(milliseconds: 0); | 163       runningTime = new Duration(milliseconds: 0); | 
| 148     } | 164     } | 
|  | 165     _setResult(testResult, messageText, stack); | 
| 149     if (!_doneTeardown) { | 166     if (!_doneTeardown) { | 
| 150       _doneTeardown = true; | 167       _doneTeardown = true; | 
| 151       if (_tearDown != null) { | 168       if (_tearDown != null) { | 
| 152         var rtn = _tearDown(); | 169         var rtn = _tearDown(); | 
| 153         if (rtn is Future) { | 170         if (rtn is Future) { | 
| 154           rtn.then((_) { | 171           rtn.then((_) { | 
| 155             if (result == null) { |  | 
| 156               // The test passed. In some cases we will already |  | 
| 157               // have set this result (e.g. if the test was async |  | 
| 158               // and all callbacks completed). If not, we do it here. |  | 
| 159               pass(); |  | 
| 160             } else { |  | 
| 161               // The test has already been marked as pass/fail. |  | 
| 162               // Just report the updated result. |  | 
| 163               _config.onTestResult(this); |  | 
| 164             } |  | 
| 165             _notifyComplete(); | 172             _notifyComplete(); | 
| 166           }) | 173           }) | 
| 167           .catchError((e) { | 174           .catchError((e) { | 
| 168             // We don't call fail() as that will potentially result in | 175             // We don't call fail() as that will potentially result in | 
| 169             // spurious messages like 'test failed more than once'. | 176             // spurious messages like 'test failed more than once'. | 
| 170             result = ERROR; | 177             _setResult(ERROR, "$description: Test teardown failed: ${e.error}", | 
| 171             message = "$description: Test teardown failed: ${e.error}"; | 178                 e.stackTrace.toString()); | 
| 172             _config.onTestResult(this); |  | 
| 173             _notifyComplete(); | 179             _notifyComplete(); | 
| 174           }); | 180           }); | 
| 175           return; | 181           return; | 
| 176         } | 182         } | 
| 177       } | 183       } | 
| 178     } | 184     } | 
| 179     _config.onTestResult(this); |  | 
| 180     _notifyComplete(); | 185     _notifyComplete(); | 
| 181   } | 186   } | 
| 182 | 187 | 
| 183   void pass() { | 188   void pass() { | 
| 184     result = PASS; | 189     _complete(PASS); | 
| 185     _complete(); |  | 
| 186   } | 190   } | 
| 187 | 191 | 
| 188   void fail(String messageText, [String stack = '']) { | 192   void fail(String messageText, [String stack = '']) { | 
| 189     if (result != null) { | 193     if (result != null) { | 
| 190       if (result == PASS) { | 194       String newMessage = (result == PASS) | 
| 191         error('Test failed after initially passing: $messageText', stack); | 195           ? 'Test failed after initially passing: $messageText' | 
| 192       } else if (result == FAIL) { | 196           : 'Test failed more than once: $messageText'; | 
| 193         error('Test failed more than once: $messageText', stack); | 197       // TODO(gram): Should we combine the stack with the old one? | 
| 194       } | 198       _complete(ERROR, newMessage, stack); | 
| 195     } else { | 199     } else { | 
| 196       result = FAIL; | 200       _complete(FAIL, messageText, stack); | 
| 197       message = messageText; |  | 
| 198       stackTrace = stack; |  | 
| 199       _complete(); |  | 
| 200     } | 201     } | 
| 201   } | 202   } | 
| 202 | 203 | 
| 203   void error(String messageText, [String stack = '']) { | 204   void error(String messageText, [String stack = '']) { | 
| 204     result = ERROR; | 205     _complete(ERROR, messageText, stack); | 
| 205     message = messageText; |  | 
| 206     stackTrace = stack; |  | 
| 207     _complete(); |  | 
| 208   } | 206   } | 
| 209 } | 207 } | 
| OLD | NEW | 
|---|