| 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 |