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

Side by Side Diff: lib/src/runner/configuration/load.dart

Issue 1730173004: Add on_os and on_platform fields. (Closed) Base URL: git@github.com:dart-lang/test@master
Patch Set: 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
OLDNEW
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:boolean_selector/boolean_selector.dart'; 7 import 'package:boolean_selector/boolean_selector.dart';
8 import 'package:glob/glob.dart'; 8 import 'package:glob/glob.dart';
9 import 'package:path/path.dart' as p; 9 import 'package:path/path.dart' as p;
10 import 'package:source_span/source_span.dart'; 10 import 'package:source_span/source_span.dart';
11 import 'package:yaml/yaml.dart'; 11 import 'package:yaml/yaml.dart';
12 12
13 import '../../backend/operating_system.dart';
13 import '../../backend/platform_selector.dart'; 14 import '../../backend/platform_selector.dart';
14 import '../../backend/test_platform.dart'; 15 import '../../backend/test_platform.dart';
15 import '../../frontend/timeout.dart'; 16 import '../../frontend/timeout.dart';
16 import '../../utils.dart'; 17 import '../../utils.dart';
18 import '../../util/io.dart';
17 import '../configuration.dart'; 19 import '../configuration.dart';
18 import 'values.dart'; 20 import 'values.dart';
19 21
20 /// Loads configuration information from a YAML file at [path]. 22 /// Loads configuration information from a YAML file at [path].
21 /// 23 ///
22 /// Throws a [FormatException] if the configuration is invalid, and a 24 /// Throws a [FormatException] if the configuration is invalid, and a
23 /// [FileSystemException] if it can't be read. 25 /// [FileSystemException] if it can't be read.
24 Configuration load(String path) { 26 Configuration load(String path) {
25 var source = new File(path).readAsStringSync(); 27 var source = new File(path).readAsStringSync();
26 var document = loadYamlNode(source, sourceUrl: p.toUri(path)); 28 var document = loadYamlNode(source, sourceUrl: p.toUri(path));
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 (value) => value.contains(anchoredHyphenatedIdentifier)); 83 (value) => value.contains(anchoredHyphenatedIdentifier));
82 return tagNode.value; 84 return tagNode.value;
83 }); 85 });
84 86
85 var tags = _getMap("tags", 87 var tags = _getMap("tags",
86 key: (keyNode) => _parseNode(keyNode, "tags key", 88 key: (keyNode) => _parseNode(keyNode, "tags key",
87 (value) => new BooleanSelector.parse(value)), 89 (value) => new BooleanSelector.parse(value)),
88 value: (valueNode) => 90 value: (valueNode) =>
89 _nestedConfig(valueNode, "tag value", runnerConfig: false)); 91 _nestedConfig(valueNode, "tag value", runnerConfig: false));
90 92
91 return new Configuration( 93 var onPlatform = _getMap("on_platform",
94 key: (keyNode) => _parseNode(keyNode, "on_platform key",
95 (value) => new PlatformSelector.parse(value)),
96 value: (valueNode) =>
97 _nestedConfig(valueNode, "on_platform value", runnerConfig: false));
98
99 var onOS = _getMap("on_os", key: (keyNode) {
100 _validate(keyNode, "on_os key must be a string.",
101 (value) => value is String);
102
103 var os = OperatingSystem.find(keyNode.value);
104 if (os != null) return os;
105
106 throw new SourceSpanFormatException(
107 'Invalid on_os key: No such operating system.',
108 keyNode.span, _source);
109 }, value: (valueNode) => _nestedConfig(valueNode, "on_os value"));
110
111 var config = new Configuration(
92 verboseTrace: verboseTrace, 112 verboseTrace: verboseTrace,
93 jsTrace: jsTrace, 113 jsTrace: jsTrace,
94 skip: skip, 114 skip: skip,
95 skipReason: skipReason, 115 skipReason: skipReason,
96 testOn: testOn, 116 testOn: testOn,
97 timeout: timeout, 117 timeout: timeout,
98 addTags: addTags, 118 addTags: addTags,
99 tags: tags); 119 tags: tags,
120 onPlatform: onPlatform);
121
122 var osConfig = onOS[currentOS];
123 return osConfig == null ? config : config.merge(osConfig);
100 } 124 }
101 125
102 /// Loads runner configuration (but not test configuration). 126 /// Loads runner configuration (but not test configuration).
103 /// 127 ///
104 /// If [_runnerConfig] is `false`, this will error if there are any 128 /// If [_runnerConfig] is `false`, this will error if there are any
105 /// runner-level configuration fields. 129 /// runner-level configuration fields.
106 Configuration _loadRunnerConfig() { 130 Configuration _loadRunnerConfig() {
107 if (!_runnerConfig) { 131 if (!_runnerConfig) {
108 _disallow("reporter"); 132 _disallow("reporter");
109 _disallow("pub_serve"); 133 _disallow("pub_serve");
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
276 if (!_document.containsKey(field)) return; 300 if (!_document.containsKey(field)) return;
277 _error("$field isn't supported here.", field); 301 _error("$field isn't supported here.", field);
278 } 302 }
279 303
280 /// Throws a [SourceSpanFormatException] with [message] about [field]. 304 /// Throws a [SourceSpanFormatException] with [message] about [field].
281 void _error(String message, String field) { 305 void _error(String message, String field) {
282 throw new SourceSpanFormatException( 306 throw new SourceSpanFormatException(
283 message, _document.nodes[field].span, _source); 307 message, _document.nodes[field].span, _source);
284 } 308 }
285 } 309 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698