Index: lib/src/runner/configuration/load.dart |
diff --git a/lib/src/runner/configuration/load.dart b/lib/src/runner/configuration/load.dart |
index f66f0fc4a6dcfc241707f34fdfd5df0cad38c987..93cc7296ab260f76eb8dc3969b34dccfdde52dde 100644 |
--- a/lib/src/runner/configuration/load.dart |
+++ b/lib/src/runner/configuration/load.dart |
@@ -10,10 +10,12 @@ import 'package:path/path.dart' as p; |
import 'package:source_span/source_span.dart'; |
import 'package:yaml/yaml.dart'; |
+import '../../backend/operating_system.dart'; |
import '../../backend/platform_selector.dart'; |
import '../../backend/test_platform.dart'; |
import '../../frontend/timeout.dart'; |
import '../../utils.dart'; |
+import '../../util/io.dart'; |
import '../configuration.dart'; |
import 'values.dart'; |
@@ -88,7 +90,25 @@ class _ConfigurationLoader { |
value: (valueNode) => |
_nestedConfig(valueNode, "tag value", runnerConfig: false)); |
- return new Configuration( |
+ var onPlatform = _getMap("on_platform", |
+ key: (keyNode) => _parseNode(keyNode, "on_platform key", |
+ (value) => new PlatformSelector.parse(value)), |
+ value: (valueNode) => |
+ _nestedConfig(valueNode, "on_platform value", runnerConfig: false)); |
+ |
+ var onOS = _getMap("on_os", key: (keyNode) { |
+ _validate(keyNode, "on_os key must be a string.", |
+ (value) => value is String); |
+ |
+ var os = OperatingSystem.find(keyNode.value); |
+ if (os != null) return os; |
+ |
+ throw new SourceSpanFormatException( |
+ 'Invalid on_os key: No such operating system.', |
+ keyNode.span, _source); |
+ }, value: (valueNode) => _nestedConfig(valueNode, "on_os value")); |
+ |
+ var config = new Configuration( |
verboseTrace: verboseTrace, |
jsTrace: jsTrace, |
skip: skip, |
@@ -96,7 +116,11 @@ class _ConfigurationLoader { |
testOn: testOn, |
timeout: timeout, |
addTags: addTags, |
- tags: tags); |
+ tags: tags, |
+ onPlatform: onPlatform); |
+ |
+ var osConfig = onOS[currentOS]; |
+ return osConfig == null ? config : config.merge(osConfig); |
} |
/// Loads runner configuration (but not test configuration). |