OLD | NEW |
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 import 'dart:io'; | 5 import 'dart:io'; |
6 | 6 |
7 import 'package:args/args.dart'; | 7 import 'package:args/args.dart'; |
8 | 8 |
9 import '../../frontend/timeout.dart'; | 9 import '../../frontend/timeout.dart'; |
10 import '../../backend/test_platform.dart'; | 10 import '../../backend/test_platform.dart'; |
(...skipping 12 matching lines...) Expand all Loading... |
23 parser.addFlag("help", abbr: "h", negatable: false, | 23 parser.addFlag("help", abbr: "h", negatable: false, |
24 help: "Shows this usage information."); | 24 help: "Shows this usage information."); |
25 parser.addFlag("version", negatable: false, | 25 parser.addFlag("version", negatable: false, |
26 help: "Shows the package's version."); | 26 help: "Shows the package's version."); |
27 parser.addOption("package-root", hide: true); | 27 parser.addOption("package-root", hide: true); |
28 | 28 |
29 // Note that defaultsTo declarations here are only for documentation purposes. | 29 // Note that defaultsTo declarations here are only for documentation purposes. |
30 // We pass null values rather than defaults to [new Configuration] so that it | 30 // We pass null values rather than defaults to [new Configuration] so that it |
31 // merges properly with the config file. | 31 // merges properly with the config file. |
32 | 32 |
| 33 parser.addSeparator("======== Selecting Tests"); |
33 parser.addOption("name", | 34 parser.addOption("name", |
34 abbr: 'n', | 35 abbr: 'n', |
35 help: 'A substring of the name of the test to run.\n' | 36 help: 'A substring of the name of the test to run.\n' |
36 'Regular expression syntax is supported.'); | 37 'Regular expression syntax is supported.'); |
37 parser.addOption("plain-name", | 38 parser.addOption("plain-name", |
38 abbr: 'N', | 39 abbr: 'N', |
39 help: 'A plain-text substring of the name of the test to run.'); | 40 help: 'A plain-text substring of the name of the test to run.'); |
40 // TODO(nweiz): Support the full platform-selector syntax for choosing which | 41 // TODO(nweiz): Support the full platform-selector syntax for choosing which |
41 // tags to run. In the shorter term, disallow non-"identifier" tags. | 42 // tags to run. In the shorter term, disallow non-"identifier" tags. |
42 parser.addOption("tags", | 43 parser.addOption("tags", |
43 abbr: 't', | 44 abbr: 't', |
44 help: 'Run only tests with all of the specified tags.', | 45 help: 'Run only tests with all of the specified tags.', |
45 allowMultiple: true); | 46 allowMultiple: true); |
46 parser.addOption("tag", hide: true, allowMultiple: true); | 47 parser.addOption("tag", hide: true, allowMultiple: true); |
47 parser.addOption("exclude-tags", | 48 parser.addOption("exclude-tags", |
48 abbr: 'x', | 49 abbr: 'x', |
49 help: "Don't run tests with any of the specified tags.", | 50 help: "Don't run tests with any of the specified tags.", |
50 allowMultiple: true); | 51 allowMultiple: true); |
51 parser.addOption("exclude-tag", hide: true, allowMultiple: true); | 52 parser.addOption("exclude-tag", hide: true, allowMultiple: true); |
52 | 53 |
| 54 parser.addSeparator("======== Running Tests"); |
53 parser.addOption("platform", | 55 parser.addOption("platform", |
54 abbr: 'p', | 56 abbr: 'p', |
55 help: 'The platform(s) on which to run the tests.', | 57 help: 'The platform(s) on which to run the tests.', |
56 defaultsTo: 'vm', | 58 defaultsTo: 'vm', |
57 allowed: allPlatforms.map((platform) => platform.identifier).toList(), | 59 allowed: allPlatforms.map((platform) => platform.identifier).toList(), |
58 allowMultiple: true); | 60 allowMultiple: true); |
59 parser.addOption("concurrency", | 61 parser.addOption("concurrency", |
60 abbr: 'j', | 62 abbr: 'j', |
61 help: 'The number of concurrent test suites run.', | 63 help: 'The number of concurrent test suites run.', |
62 defaultsTo: defaultConcurrency.toString(), | 64 defaultsTo: defaultConcurrency.toString(), |
63 valueHelp: 'threads'); | 65 valueHelp: 'threads'); |
64 parser.addOption("pub-serve", | 66 parser.addOption("pub-serve", |
65 help: 'The port of a pub serve instance serving "test/".', | 67 help: 'The port of a pub serve instance serving "test/".', |
66 valueHelp: 'port'); | 68 valueHelp: 'port'); |
67 parser.addOption("timeout", | 69 parser.addOption("timeout", |
68 help: 'The default test timeout. For example: 15s, 2x, none', | 70 help: 'The default test timeout. For example: 15s, 2x, none', |
69 defaultsTo: '30s'); | 71 defaultsTo: '30s'); |
70 parser.addFlag("pause-after-load", | 72 parser.addFlag("pause-after-load", |
71 help: 'Pauses for debugging before any tests execute.\n' | 73 help: 'Pauses for debugging before any tests execute.\n' |
72 'Implies --concurrency=1 and --timeout=none.\n' | 74 'Implies --concurrency=1 and --timeout=none.\n' |
73 'Currently only supported for browser tests.', | 75 'Currently only supported for browser tests.', |
74 negatable: false); | 76 negatable: false); |
75 | 77 |
| 78 parser.addSeparator("======== Output"); |
76 parser.addOption("reporter", | 79 parser.addOption("reporter", |
77 abbr: 'r', | 80 abbr: 'r', |
78 help: 'The runner used to print test results.', | 81 help: 'The runner used to print test results.', |
79 defaultsTo: defaultReporter, | 82 defaultsTo: defaultReporter, |
80 allowed: allReporters, | 83 allowed: allReporters, |
81 allowedHelp: { | 84 allowedHelp: { |
82 'compact': 'A single line, updated continuously.', | 85 'compact': 'A single line, updated continuously.', |
83 'expanded': 'A separate line for each update.', | 86 'expanded': 'A separate line for each update.', |
84 'json': 'A machine-readable format (see https://goo.gl/0HRhdZ).' | 87 'json': 'A machine-readable format (see https://goo.gl/0HRhdZ).' |
85 }); | 88 }); |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
165 var value = options[name]; | 168 var value = options[name]; |
166 if (value == null) return null; | 169 if (value == null) return null; |
167 | 170 |
168 try { | 171 try { |
169 return parse(value); | 172 return parse(value); |
170 } on FormatException catch (error) { | 173 } on FormatException catch (error) { |
171 throw new FormatException('Couldn\'t parse --$name "${options[name]}": ' | 174 throw new FormatException('Couldn\'t parse --$name "${options[name]}": ' |
172 '${error.message}'); | 175 '${error.message}'); |
173 } | 176 } |
174 } | 177 } |
OLD | NEW |