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

Side by Side Diff: doc/package_config.md

Issue 1730173004: Add on_os and on_platform fields. (Closed) Base URL: git@github.com:dart-lang/test@master
Patch Set: Code review changes Created 4 years, 9 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
« no previous file with comments | « README.md ('k') | lib/src/backend/metadata.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 Each package may include a configuration file that applies to the package as a 1 Each package may include a configuration file that applies to the package as a
2 whole. This file can be used to provide custom defaults for various options, to 2 whole. This file can be used to provide custom defaults for various options, to
3 define configuration for multiple files, and more. 3 define configuration for multiple files, and more.
4 4
5 The file is named `dart_test.yaml` and lives at the root of the package, next to 5 The file is named `dart_test.yaml` and lives at the root of the package, next to
6 the package's pubspec. Like the pubspec, it's a [YAML][] file. Here's an 6 the package's pubspec. Like the pubspec, it's a [YAML][] file. Here's an
7 example: 7 example:
8 8
9 [YAML]: http://yaml.org/ 9 [YAML]: http://yaml.org/
10 10
(...skipping 20 matching lines...) Expand all
31 * [`skip`](#skip) 31 * [`skip`](#skip)
32 * [`test_on`](#test_on) 32 * [`test_on`](#test_on)
33 * [Runner Configuration](#runner-configuration) 33 * [Runner Configuration](#runner-configuration)
34 * [`paths`](#paths) 34 * [`paths`](#paths)
35 * [`filename`](#filename) 35 * [`filename`](#filename)
36 * [`platforms`](#platforms) 36 * [`platforms`](#platforms)
37 * [`concurrency`](#concurrency) 37 * [`concurrency`](#concurrency)
38 * [`pub_serve`](#pub_serve) 38 * [`pub_serve`](#pub_serve)
39 * [`reporter`](#reporter) 39 * [`reporter`](#reporter)
40 * [Configuring Tags](#configuring-tags) 40 * [Configuring Tags](#configuring-tags)
41 * [`tags`](#tags)
41 * [`add_tags`](#add_tags) 42 * [`add_tags`](#add_tags)
43 * [Configuring Platforms](#configuring-platforms)
44 * [`on_os`](#on_os)
45 * [`on_platform`](#on_platform)
42 46
43 ## Test Configuration 47 ## Test Configuration
44 48
45 There are two major categories of configuration field: "test" and "runner". Test 49 There are two major categories of configuration field: "test" and "runner". Test
46 configuration controls how individual tests run, while 50 configuration controls how individual tests run, while
47 [runner configuration](#runner-configuration) controls the test runner as a 51 [runner configuration](#runner-configuration) controls the test runner as a
48 whole. Both types of fields may be used at the top level of a configuration 52 whole. Both types of fields may be used at the top level of a configuration
49 file. However, because different tests can have different test configuration, 53 file. However, because different tests can have different test configuration,
50 only test configuration fields may be used to 54 only test configuration fields may be used to [configure tags](#tags) or
51 [configure tags](#configuring-tags). 55 [platforms](#on_platform).
52 56
53 ### `timeout` 57 ### `timeout`
54 58
55 This field indicates how much time the test runner should allow a test to remain 59 This field indicates how much time the test runner should allow a test to remain
56 inactive before it considers that test to have failed. It has three possible 60 inactive before it considers that test to have failed. It has three possible
57 formats: 61 formats:
58 62
59 * The string "none" indicates that tests should never time out. 63 * The string "none" indicates that tests should never time out.
60 64
61 * A number followed by a unit abbreviation indicates an exact time. For example, 65 * A number followed by a unit abbreviation indicates an exact time. For example,
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 109
106 ```yaml 110 ```yaml
107 tags: 111 tags:
108 chrome: 112 chrome:
109 skip: "Our Chrome launcher is busted. See issue 1234." 113 skip: "Our Chrome launcher is busted. See issue 1234."
110 ``` 114 ```
111 115
112 ### `test_on` 116 ### `test_on`
113 117
114 This field declares which platforms a test supports. It takes a 118 This field declares which platforms a test supports. It takes a
115 [platform selector][] and only allows tests to run on platforms that match the 119 [platform selector][platform selectors] and only allows tests to run on
116 selector. It's often used with [specific tags](#configuring-tags) to ensure that 120 platforms that match the selector. It's often used with
117 certain features will only be tested on supported platforms. 121 [specific tags](#configuring-tags) to ensure that certain features will only be
122 tested on supported platforms.
118 123
119 [platform selector]: https://github.com/dart-lang/test/blob/master/README.md#pla tform-selectors 124 [platform selectors]: https://github.com/dart-lang/test/blob/master/README.md#pl atform-selectors
120 125
121 ```yaml 126 ```yaml
122 tags: 127 tags:
123 # Internet Explorer doesn't support promises yet. 128 # Internet Explorer doesn't support promises yet.
124 promises: {test_on: "browser && !ie"} 129 promises: {test_on: "browser && !ie"}
125 ``` 130 ```
126 131
127 The field can also be used at the top level of the configuration file to 132 The field can also be used at the top level of the configuration file to
128 indicate that the entire package only supports a particular platform. If someone 133 indicate that the entire package only supports a particular platform. If someone
129 tries to run the tests on an unsupported platform, the runner will print a 134 tries to run the tests on an unsupported platform, the runner will print a
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 This field indicates the default reporter to use. It may be set to "compact", 221 This field indicates the default reporter to use. It may be set to "compact",
217 "expanded", or "json" (although why anyone would want to default to JSON is 222 "expanded", or "json" (although why anyone would want to default to JSON is
218 beyond me). It defaults to "expanded" on Windows and "compact" everywhere else. 223 beyond me). It defaults to "expanded" on Windows and "compact" everywhere else.
219 224
220 ```yaml 225 ```yaml
221 reporter: expanded 226 reporter: expanded
222 ``` 227 ```
223 228
224 ## Configuring Tags 229 ## Configuring Tags
225 230
231 ### `tags`
232
226 The `tag` field can be used to apply [test configuration](#test-configuration) 233 The `tag` field can be used to apply [test configuration](#test-configuration)
227 to all tests [with a given tag][tagging tests] or set of tags. It takes a map 234 to all tests [with a given tag][tagging tests] or set of tags. It takes a map
228 from tag selectors to configuration maps. These configuration maps are just like 235 from tag selectors to configuration maps. These configuration maps are just like
229 the top level of the configuration file, except that they may not contain 236 the top level of the configuration file, except that they may not contain
230 [runner configuration](#runner-configuration). 237 [runner configuration](#runner-configuration).
231 238
232 [tagging tests]: https://github.com/dart-lang/test/blob/master/README.md#tagging -tests 239 [tagging tests]: https://github.com/dart-lang/test/blob/master/README.md#tagging -tests
233 240
234 ```yaml 241 ```yaml
235 tags: 242 tags:
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 Tag configuration is applied at whatever level the tag appears—so if a group is 274 Tag configuration is applied at whatever level the tag appears—so if a group is
268 tagged as `integration`, its timeout will take precedence over the suite's 275 tagged as `integration`, its timeout will take precedence over the suite's
269 timeout but not any tests'. If the group itself had a timeout declared, the 276 timeout but not any tests'. If the group itself had a timeout declared, the
270 group's explicit timeout would take precedence over the tag. 277 group's explicit timeout would take precedence over the tag.
271 278
272 If multiple tags appear at the same level, and they have conflicting 279 If multiple tags appear at the same level, and they have conflicting
273 configurations, the test runner *does not guarantee* what order they'll be 280 configurations, the test runner *does not guarantee* what order they'll be
274 resolved in. In practice, conflicting configuration is pretty unlikely and it's 281 resolved in. In practice, conflicting configuration is pretty unlikely and it's
275 easy to just explicitly specify what you want on the test itself. 282 easy to just explicitly specify what you want on the test itself.
276 283
284 This field counts as [test configuration](#test-configuration).
285
277 ### `add_tags` 286 ### `add_tags`
278 287
279 This field adds additional tags. It's technically 288 This field adds additional tags. It's technically
280 [test configuration](#test-configuration), but it's usually used in more 289 [test configuration](#test-configuration), but it's usually used in more
281 specific contexts. For example, when included in a tag's configuration, it can 290 specific contexts. For example, when included in a tag's configuration, it can
282 be used to enable tag inheritance, where adding one tag implicitly adds other as 291 be used to enable tag inheritance, where adding one tag implicitly adds other as
283 well. It takes a list of tag name strings. 292 well. It takes a list of tag name strings.
284 293
285 ```yaml 294 ```yaml
286 tags: 295 tags:
287 # Any test that spawns a browser. 296 # Any test that spawns a browser.
288 browser: 297 browser:
289 timeout: 2x 298 timeout: 2x
290 299
291 # Tests that spawn specific browsers. These automatically get the browser tag 300 # Tests that spawn specific browsers. These automatically get the browser tag
292 # as well. 301 # as well.
293 chrome: {add_tags: [browser]} 302 chrome: {add_tags: [browser]}
294 firefox: {add_tags: [browser]} 303 firefox: {add_tags: [browser]}
295 safari: {add_tags: [browser]} 304 safari: {add_tags: [browser]}
296 ie: {add_tags: [browser]} 305 ie: {add_tags: [browser]}
297 ``` 306 ```
307
308 ## Configuring Platforms
309
310 There are two different kinds of platform configuration.
311 [Operating system configuration](#on_os) cares about the operating system on
312 which test runner is running. It sets global configuration for the runner on
313 particular OSes. [Test platform configuration](#on_platform), on the other hand,
314 cares about the platform the *test* is running on (like the
315 [`@OnPlatform` annotation][@OnPlatform]). It sets configuration for particular
316 tests that are running on matching platforms.
317
318 [@OnPlatform]: https://github.com/dart-lang/test/blob/master/README.md#platform- specific-configuration
319
320 ### `on_os`
321
322 This field applies configuration when specific operating systems are being used.
323 It takes a map from operating system identifiers (the same ones that are used in
324 [platform selectors][]) to configuration maps that are applied on those
325 operating systems. These configuration maps are just like the top level of the
326 configuration file, and allow any fields that may be used in the context where
327 `on_os` was used.
328
329 ```yaml
330 on_os:
331 windows:
332 # Both of these are the defaults anyway, but let's be explicit about it.
333 color: false
334 runner: expanded
335
336 # My Windows machine is real slow.
337 timeout: 2x
338
339 # My Linux machine has SO MUCH RAM.
340 linux:
341 concurrency: 500
342 ```
343
344 This field counts as [test configuration](#test-configuration). If it's used in
345 a context that only allows test configuration, it may only contain test
346 configuration.
347
348 ### `on_platform`
349
350 This field applies configuration to tests that are run on specific platforms. It
351 takes a map from [platform selectors][] to configuration maps that are applied
352 to tests run on those platforms. These configuration maps are just like the top
353 level of the configuration file, except that they may not contain
354 [runner configuration](#runner-configuration).
355
356 ```yaml
357 # Our code is kind of slow on Blink and WebKit.
358 on_platform:
359 chrome || safari: {timeout: 2x}
360 ```
361
362 **Note**: operating system names that appear in `on_platform` refer to tests
363 that are run on the Dart VM under that operating system. To configure all tests
364 when running on a particular operating system, use [`on_os`](#on_os) instead.
365
366 This field counts as [test configuration](#test-configuration).
OLDNEW
« no previous file with comments | « README.md ('k') | lib/src/backend/metadata.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698