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

Unified Diff: lib/src/runner/configuration/args.dart

Issue 1802133002: Add names and plain_names 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « lib/src/runner/configuration.dart ('k') | lib/src/runner/configuration/load.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/src/runner/configuration/args.dart
diff --git a/lib/src/runner/configuration/args.dart b/lib/src/runner/configuration/args.dart
index 5b9691279b98f33c0db56665901d1131730d2280..b86b2d633db55eb4fb2759085cb65c7cd840d30e 100644
--- a/lib/src/runner/configuration/args.dart
+++ b/lib/src/runner/configuration/args.dart
@@ -34,12 +34,16 @@ final ArgParser _parser = (() {
parser.addOption("name",
abbr: 'n',
help: 'A substring of the name of the test to run.\n'
- 'Regular expression syntax is supported.');
+ 'Regular expression syntax is supported.\n'
+ 'If passed multiple times, tests must match all substrings.',
+ allowMultiple: true,
+ splitCommas: false);
parser.addOption("plain-name",
abbr: 'N',
- help: 'A plain-text substring of the name of the test to run.');
- // TODO(nweiz): Support the full platform-selector syntax for choosing which
- // tags to run. In the shorter term, disallow non-"identifier" tags.
+ help: 'A plain-text substring of the name of the test to run.\n'
+ 'If passed multiple times, tests must match all substrings.',
+ allowMultiple: true,
+ splitCommas: false);
parser.addOption("tags",
abbr: 't',
help: 'Run only tests with all of the specified tags.\n'
@@ -111,18 +115,10 @@ String get usage => _parser.usage;
Configuration parse(List<String> args) {
var options = _parser.parse(args);
- var pattern;
- if (options['name'] != null) {
- if (options["plain-name"] != null) {
- throw new FormatException(
- "--name and --plain-name may not both be passed.");
- }
-
- pattern = _wrapFormatException(
- options, 'name', (value) => new RegExp(value));
- } else if (options['plain-name'] != null) {
- pattern = options['plain-name'];
- }
+ var patterns = options['name']
+ .map((value) => _wrapFormatException('name', () => new RegExp(value)))
+ .toList()
+ ..addAll(options['plain-name']);
var includeTagSet = new Set.from(options['tags'] ?? [])
..addAll(options['tag'] ?? []);
@@ -154,11 +150,11 @@ Configuration parse(List<String> args) {
color: ifParsed('color'),
packageRoot: ifParsed('package-root'),
reporter: ifParsed('reporter'),
- pubServePort: _wrapFormatException(options, 'pub-serve', int.parse),
- concurrency: _wrapFormatException(options, 'concurrency', int.parse),
- timeout: _wrapFormatException(options, 'timeout',
+ pubServePort: _parseOption(options, 'pub-serve', int.parse),
+ concurrency: _parseOption(options, 'concurrency', int.parse),
+ timeout: _parseOption(options, 'timeout',
(value) => new Timeout.parse(value)),
- pattern: pattern,
+ patterns: patterns,
platforms: ifParsed('platform')?.map(TestPlatform.find),
chosenPresets: ifParsed('preset'),
paths: options.rest.isEmpty ? null : options.rest,
@@ -168,14 +164,20 @@ Configuration parse(List<String> args) {
/// Runs [parse] on the value of the option [name], and wraps any
/// [FormatException] it throws with additional information.
-_wrapFormatException(ArgResults options, String name, parse(value)) {
+_parseOption(ArgResults options, String name, parse(value)) {
if (!options.wasParsed(name)) return null;
var value = options[name];
if (value == null) return null;
+ return _wrapFormatException(name, () => parse(value));
+}
+
+/// Runs [parse], and wraps any [FormatException] it throws with additional
+/// information.
+_wrapFormatException(String name, parse()) {
try {
- return parse(value);
+ return parse();
} on FormatException catch (error) {
throw new FormatException('Couldn\'t parse --$name "${options[name]}": '
'${error.message}');
« no previous file with comments | « lib/src/runner/configuration.dart ('k') | lib/src/runner/configuration/load.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698