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

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

Issue 1782473005: Add support for configuration presets. (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/args.dart ('k') | pubspec.yaml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/src/runner/configuration/load.dart
diff --git a/lib/src/runner/configuration/load.dart b/lib/src/runner/configuration/load.dart
index 93cc7296ab260f76eb8dc3969b34dccfdde52dde..9a9778cb9fd3e1bd0e8c6be72674177f554a5ba7 100644
--- a/lib/src/runner/configuration/load.dart
+++ b/lib/src/runner/configuration/load.dart
@@ -27,7 +27,7 @@ Configuration load(String path) {
var source = new File(path).readAsStringSync();
var document = loadYamlNode(source, sourceUrl: p.toUri(path));
- if (document.value == null) return new Configuration();
+ if (document.value == null) return Configuration.empty;
if (document is! Map) {
throw new SourceSpanFormatException(
@@ -75,14 +75,8 @@ class _ConfigurationLoader {
var timeout = _parseValue("timeout", (value) => new Timeout.parse(value));
- var addTags = _getList("add_tags", (tagNode) {
- _validate(tagNode, "Tags must be strings.", (value) => value is String);
- _validate(
- tagNode,
- "Invalid tag. Tags must be (optionally hyphenated) Dart identifiers.",
- (value) => value.contains(anchoredHyphenatedIdentifier));
- return tagNode.value;
- });
+ var addTags = _getList("add_tags",
+ (tagNode) => _parseIdentifierLike(tagNode, "Tag name"));
var tags = _getMap("tags",
key: (keyNode) => _parseNode(keyNode, "tags key",
@@ -108,6 +102,10 @@ class _ConfigurationLoader {
keyNode.span, _source);
}, value: (valueNode) => _nestedConfig(valueNode, "on_os value"));
+ var presets = _getMap("presets",
+ key: (keyNode) => _parseIdentifierLike(keyNode, "presets key"),
+ value: (valueNode) => _nestedConfig(valueNode, "presets value"));
+
var config = new Configuration(
verboseTrace: verboseTrace,
jsTrace: jsTrace,
@@ -117,7 +115,8 @@ class _ConfigurationLoader {
timeout: timeout,
addTags: addTags,
tags: tags,
- onPlatform: onPlatform);
+ onPlatform: onPlatform,
+ presets: presets);
var osConfig = onOS[currentOS];
return osConfig == null ? config : config.merge(osConfig);
@@ -135,7 +134,8 @@ class _ConfigurationLoader {
_disallow("platforms");
_disallow("paths");
_disallow("filename");
- return new Configuration();
+ _disallow("add_presets");
+ return Configuration.empty;
}
var reporter = _getString("reporter");
@@ -166,13 +166,17 @@ class _ConfigurationLoader {
var filename = _parseValue("filename", (value) => new Glob(value));
+ var chosenPresets = _getList("add_presets",
+ (presetNode) => _parseIdentifierLike(presetNode, "Preset name"));
+
return new Configuration(
reporter: reporter,
pubServePort: pubServePort,
concurrency: concurrency,
platforms: platforms,
paths: paths,
- filename: filename);
+ filename: filename,
+ chosenPresets: chosenPresets);
}
/// Throws an exception with [message] if [test] returns `false` when passed
@@ -253,6 +257,15 @@ class _ConfigurationLoader {
value: (_, valueNode) => value(valueNode));
}
+ String _parseIdentifierLike(YamlNode node, String name) {
+ _validate(node, "$name must be a string.", (value) => value is String);
+ _validate(
+ node,
+ "$name must be an (optionally hyphenated) Dart identifier.",
+ (value) => value.contains(anchoredHyphenatedIdentifier));
+ return node.value;
+ }
+
/// Asserts that [node] is a string, passes its value to [parse], and returns
/// the result.
///
@@ -287,7 +300,7 @@ class _ConfigurationLoader {
/// nested configuration. It defaults to [_runnerConfig].
Configuration _nestedConfig(YamlNode node, String name,
{bool runnerConfig}) {
- if (node == null || node.value == null) return new Configuration();
+ if (node == null || node.value == null) return Configuration.empty;
_validate(node, "$name must be a map.", (value) => value is Map);
var loader = new _ConfigurationLoader(node, _source,
« no previous file with comments | « lib/src/runner/configuration/args.dart ('k') | pubspec.yaml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698