OLD | NEW |
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 library test; | 5 library test; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 | 8 |
9 import 'package:path/path.dart' as p; | 9 import 'package:path/path.dart' as p; |
10 | 10 |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
105 /// "windows": new Timeout.factor(2), | 105 /// "windows": new Timeout.factor(2), |
106 /// "browser": [ | 106 /// "browser": [ |
107 /// new Skip("TODO: add browser support"), | 107 /// new Skip("TODO: add browser support"), |
108 /// // This will be slow on browsers once it works on them. | 108 /// // This will be slow on browsers once it works on them. |
109 /// new Timeout.factor(2) | 109 /// new Timeout.factor(2) |
110 /// ] | 110 /// ] |
111 /// }); | 111 /// }); |
112 /// | 112 /// |
113 /// If multiple platforms match, the annotations apply in order as through | 113 /// If multiple platforms match, the annotations apply in order as through |
114 /// they were in nested groups. | 114 /// they were in nested groups. |
115 void test(String description, body(), {String testOn, Timeout timeout, | 115 void test(String description, body(), |
116 skip, Map<String, dynamic> onPlatform, String tag, | 116 {String testOn, |
117 List<String> tags}) => _declarer.test(description, body, | 117 Timeout timeout, |
118 testOn: testOn, timeout: timeout, skip: skip, | 118 skip, |
119 onPlatform: onPlatform, tags: _deconvenienceTags(tag, tags)); | 119 Map<String, dynamic> onPlatform, |
| 120 tags}) => |
| 121 _declarer.test(description, body, |
| 122 testOn: testOn, |
| 123 timeout: timeout, |
| 124 skip: skip, |
| 125 onPlatform: onPlatform, |
| 126 tags: tags); |
120 | 127 |
121 /// Creates a group of tests. | 128 /// Creates a group of tests. |
122 /// | 129 /// |
123 /// A group's description is included in the descriptions of any tests or | 130 /// A group's description is included in the descriptions of any tests or |
124 /// sub-groups it contains. [setUp] and [tearDown] are also scoped to the | 131 /// sub-groups it contains. [setUp] and [tearDown] are also scoped to the |
125 /// containing group. | 132 /// containing group. |
126 /// | 133 /// |
127 /// If [testOn] is passed, it's parsed as a [platform selector][]; the test will | 134 /// If [testOn] is passed, it's parsed as a [platform selector][]; the test will |
128 /// only be run on matching platforms. | 135 /// only be run on matching platforms. |
129 /// | 136 /// |
(...skipping 20 matching lines...) Expand all Loading... |
150 /// "windows": new Timeout.factor(2), | 157 /// "windows": new Timeout.factor(2), |
151 /// "browser": [ | 158 /// "browser": [ |
152 /// new Skip("TODO: add browser support"), | 159 /// new Skip("TODO: add browser support"), |
153 /// // They'll be slow on browsers once it works on them. | 160 /// // They'll be slow on browsers once it works on them. |
154 /// new Timeout.factor(2) | 161 /// new Timeout.factor(2) |
155 /// ] | 162 /// ] |
156 /// }); | 163 /// }); |
157 /// | 164 /// |
158 /// If multiple platforms match, the annotations apply in order as through | 165 /// If multiple platforms match, the annotations apply in order as through |
159 /// they were in nested groups. | 166 /// they were in nested groups. |
160 void group(String description, void body(), {String testOn, Timeout timeout, | 167 void group(String description, void body(), |
161 skip, Map<String, dynamic> onPlatform, String tag, | 168 {String testOn, |
162 List<String> tags}) => _declarer.group(description, body, | 169 Timeout timeout, |
163 testOn: testOn, timeout: timeout, skip: skip, | 170 skip, |
164 tags: _deconvenienceTags(tag, tags)); | 171 Map<String, dynamic> onPlatform, |
| 172 tags}) => |
| 173 _declarer.group(description, body, |
| 174 testOn: testOn, timeout: timeout, skip: skip, tags: tags); |
165 | 175 |
166 /// Registers a function to be run before tests. | 176 /// Registers a function to be run before tests. |
167 /// | 177 /// |
168 /// This function will be called before each test is run. [callback] may be | 178 /// This function will be called before each test is run. [callback] may be |
169 /// asynchronous; if so, it must return a [Future]. | 179 /// asynchronous; if so, it must return a [Future]. |
170 /// | 180 /// |
171 /// If this is called within a test group, it applies only to tests in that | 181 /// If this is called within a test group, it applies only to tests in that |
172 /// group. [callback] will be run after any set-up callbacks in parent groups or | 182 /// group. [callback] will be run after any set-up callbacks in parent groups or |
173 /// at the top level. | 183 /// at the top level. |
174 /// | 184 /// |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
216 /// prefer [tearDown], and only use [tearDOwnAll] if the callback is | 226 /// prefer [tearDown], and only use [tearDOwnAll] if the callback is |
217 /// prohibitively slow. | 227 /// prohibitively slow. |
218 void tearDownAll(callback()) => _declarer.tearDownAll(callback); | 228 void tearDownAll(callback()) => _declarer.tearDownAll(callback); |
219 | 229 |
220 /// Registers an exception that was caught for the current test. | 230 /// Registers an exception that was caught for the current test. |
221 void registerException(error, [StackTrace stackTrace]) { | 231 void registerException(error, [StackTrace stackTrace]) { |
222 // This will usually forward directly to [Invoker.current.handleError], but | 232 // This will usually forward directly to [Invoker.current.handleError], but |
223 // going through the zone API allows other zones to consistently see errors. | 233 // going through the zone API allows other zones to consistently see errors. |
224 Zone.current.handleUncaughtError(error, stackTrace); | 234 Zone.current.handleUncaughtError(error, stackTrace); |
225 } | 235 } |
226 | |
227 List<String> _deconvenienceTags(String tag, List<String> tags) { | |
228 var result = const[]; | |
229 if (tag != null || (tags != null && tags.isNotEmpty)) { | |
230 result = []; | |
231 if (tag != null) result.add(tag); | |
232 if (tags != null && tags.isNotEmpty) result.addAll(tags); | |
233 } | |
234 return result; | |
235 } | |
OLD | NEW |