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

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

Issue 142543005: pkg/unittest: remove interactive html configuration (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 10 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/interactive_html_config.dart ('k') | no next file » | 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].
11 */ 11 */
12 class TestCase { 12 class TestCase {
13 /** Identifier for this test. */ 13 /** Identifier for this test. */
14 final int id; 14 final int id;
15 15
16 /** A description of what the test is specifying. */ 16 /** A description of what the test is specifying. */
17 final String description; 17 final String description;
18 18
19 /** The setup function to call before the test, if any. */ 19 /** The setup function to call before the test, if any. */
20 Function setUp; 20 final Function _setUp;
21 21
22 /** The teardown function to call after the test, if any. */ 22 /** The teardown function to call after the test, if any. */
23 Function tearDown; 23 final Function _tearDown;
24 24
25 /** The body of the test case. */ 25 /** The body of the test case. */
26 TestFunction testFunction; 26 final TestFunction _testFunction;
27 27
28 /** 28 /**
29 * Remaining number of callbacks functions that must reach a 'done' state 29 * Remaining number of callbacks functions that must reach a 'done' state
30 * to wait for before the test completes. 30 * to wait for before the test completes.
31 */ 31 */
32 int _callbackFunctionsOutstanding = 0; 32 int _callbackFunctionsOutstanding = 0;
33 33
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;
(...skipping 19 matching lines...) Expand all
56 56
57 Duration _runningTime; 57 Duration _runningTime;
58 Duration get runningTime => _runningTime; 58 Duration get runningTime => _runningTime;
59 59
60 bool enabled = true; 60 bool enabled = true;
61 61
62 bool _doneTeardown = false; 62 bool _doneTeardown = false;
63 63
64 Completer _testComplete; 64 Completer _testComplete;
65 65
66 TestCase._internal(this.id, this.description, this.testFunction) 66 TestCase._internal(this.id, this.description, this._testFunction)
67 : currentGroup = _currentContext.fullName, 67 : currentGroup = _currentContext.fullName,
68 setUp = _currentContext.testSetup, 68 _setUp = _currentContext.testSetup,
69 tearDown = _currentContext.testTeardown; 69 _tearDown = _currentContext.testTeardown;
70 70
71 bool get isComplete => !enabled || result != null; 71 bool get isComplete => !enabled || result != null;
72 72
73 Function _errorHandler(String stage) => (e, stack) { 73 Function _errorHandler(String stage) => (e, stack) {
74 if (stack == null && e is Error) { 74 if (stack == null && e is Error) {
75 stack = e.stackTrace; 75 stack = e.stackTrace;
76 } 76 }
77 if (result == null || result == PASS) { 77 if (result == null || result == PASS) {
78 if (e is TestFailure) { 78 if (e is TestFailure) {
79 fail("$e", stack); 79 fail("$e", stack);
(...skipping 10 matching lines...) Expand all
90 * tell unittest to schedule the next test immediately. 90 * tell unittest to schedule the next test immediately.
91 */ 91 */
92 Future _run() { 92 Future _run() {
93 if (!enabled) return new Future.value(); 93 if (!enabled) return new Future.value();
94 94
95 _result = _stackTrace = null; 95 _result = _stackTrace = null;
96 _message = ''; 96 _message = '';
97 97
98 // Avoid calling [new Future] to avoid issue 11911. 98 // Avoid calling [new Future] to avoid issue 11911.
99 return new Future.value().then((_) { 99 return new Future.value().then((_) {
100 if (setUp != null) return setUp(); 100 if (_setUp != null) return _setUp();
101 }).catchError(_errorHandler('Setup')) 101 }).catchError(_errorHandler('Setup'))
102 .then((_) { 102 .then((_) {
103 // Skip the test if setup failed. 103 // Skip the test if setup failed.
104 if (result != null) return new Future.value(); 104 if (result != null) return new Future.value();
105 _config.onTestStart(this); 105 _config.onTestStart(this);
106 _startTime = new DateTime.now(); 106 _startTime = new DateTime.now();
107 _runningTime = null; 107 _runningTime = null;
108 ++_callbackFunctionsOutstanding; 108 ++_callbackFunctionsOutstanding;
109 return testFunction(); 109 return _testFunction();
110 }) 110 })
111 .catchError(_errorHandler('Test')) 111 .catchError(_errorHandler('Test'))
112 .then((_) { 112 .then((_) {
113 _markCallbackComplete(); 113 _markCallbackComplete();
114 if (result == null) { 114 if (result == null) {
115 // Outstanding callbacks exist; we need to return a Future. 115 // Outstanding callbacks exist; we need to return a Future.
116 _testComplete = new Completer(); 116 _testComplete = new Completer();
117 return _testComplete.future.whenComplete(() { 117 return _testComplete.future.whenComplete(() {
118 if (tearDown != null) { 118 if (_tearDown != null) {
119 return tearDown(); 119 return _tearDown();
120 } 120 }
121 }).catchError(_errorHandler('Teardown')); 121 }).catchError(_errorHandler('Teardown'));
122 } else if (tearDown != null) { 122 } else if (_tearDown != null) {
123 return tearDown(); 123 return _tearDown();
124 } 124 }
125 }) 125 })
126 .catchError(_errorHandler('Teardown')); 126 .catchError(_errorHandler('Teardown'));
127 } 127 }
128 128
129 // Set the results, notify the config, and return true if this 129 // Set the results, notify the config, and return true if this
130 // is the first time the result is being set. 130 // is the first time the result is being set.
131 void _setResult(String testResult, String messageText, StackTrace stack) { 131 void _setResult(String testResult, String messageText, StackTrace stack) {
132 _message = messageText; 132 _message = messageText;
133 _stackTrace = _getTrace(stack); 133 _stackTrace = _getTrace(stack);
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 } 181 }
182 182
183 void _markCallbackComplete() { 183 void _markCallbackComplete() {
184 if (--_callbackFunctionsOutstanding == 0 && !isComplete) { 184 if (--_callbackFunctionsOutstanding == 0 && !isComplete) {
185 pass(); 185 pass();
186 } 186 }
187 } 187 }
188 188
189 String toString() => _result != null ? "$description: $result" : description; 189 String toString() => _result != null ? "$description: $result" : description;
190 } 190 }
OLDNEW
« no previous file with comments | « pkg/unittest/lib/interactive_html_config.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698