| Index: test/runner/configuration/configuration_test.dart
|
| diff --git a/test/runner/configuration/configuration_test.dart b/test/runner/configuration/configuration_test.dart
|
| index 366d6c08aa30812758d5dadb427260848621e0a6..8fe9ba67f41cbb98bbec275008422113318c0f93 100644
|
| --- a/test/runner/configuration/configuration_test.dart
|
| +++ b/test/runner/configuration/configuration_test.dart
|
| @@ -229,25 +229,43 @@ void main() {
|
| });
|
| });
|
|
|
| - group("for tags", () {
|
| - test("merges each nested configuration", () {
|
| + group("for sets", () {
|
| + test("if neither is defined, preserves the default", () {
|
| + var merged = new Configuration().merge(new Configuration());
|
| + expect(merged.addTags, isEmpty);
|
| + expect(merged.chosenPresets, isEmpty);
|
| + });
|
| +
|
| + test("if only the old configuration's is defined, uses it", () {
|
| var merged = new Configuration(
|
| - tags: {
|
| - new BooleanSelector.parse("foo"):
|
| - new Configuration(verboseTrace: true),
|
| - new BooleanSelector.parse("bar"): new Configuration(jsTrace: true)
|
| - }
|
| - ).merge(new Configuration(
|
| - tags: {
|
| - new BooleanSelector.parse("bar"): new Configuration(jsTrace: false),
|
| - new BooleanSelector.parse("baz"): new Configuration(skip: true)
|
| - }
|
| - ));
|
| + addTags: new Set.from(["foo", "bar"]),
|
| + chosenPresets: new Set.from(["baz", "bang"]))
|
| + .merge(new Configuration());
|
|
|
| - expect(merged.tags[new BooleanSelector.parse("foo")].verboseTrace,
|
| - isTrue);
|
| - expect(merged.tags[new BooleanSelector.parse("bar")].jsTrace, isFalse);
|
| - expect(merged.tags[new BooleanSelector.parse("baz")].skip, isTrue);
|
| + expect(merged.addTags, unorderedEquals(["foo", "bar"]));
|
| + expect(merged.chosenPresets, equals(["baz", "bang"]));
|
| + });
|
| +
|
| + test("if only the new configuration's is defined, uses it", () {
|
| + var merged = new Configuration().merge(new Configuration(
|
| + addTags: new Set.from(["foo", "bar"]),
|
| + chosenPresets: new Set.from(["baz", "bang"])));
|
| +
|
| + expect(merged.addTags, unorderedEquals(["foo", "bar"]));
|
| + expect(merged.chosenPresets, equals(["baz", "bang"]));
|
| + });
|
| +
|
| + test("if both are defined, unions them", () {
|
| + var older = new Configuration(
|
| + addTags: new Set.from(["foo", "bar"]),
|
| + chosenPresets: new Set.from(["baz", "bang"]));
|
| + var newer = new Configuration(
|
| + addTags: new Set.from(["blip"]),
|
| + chosenPresets: new Set.from(["qux"]));
|
| + var merged = older.merge(newer);
|
| +
|
| + expect(merged.addTags, unorderedEquals(["foo", "bar", "blip"]));
|
| + expect(merged.chosenPresets, equals(["baz", "bang", "qux"]));
|
| });
|
| });
|
|
|
| @@ -286,26 +304,123 @@ void main() {
|
| });
|
| });
|
|
|
| - group("for onPlatform", () {
|
| + group("for config maps", () {
|
| test("merges each nested configuration", () {
|
| var merged = new Configuration(
|
| + tags: {
|
| + new BooleanSelector.parse("foo"):
|
| + new Configuration(verboseTrace: true),
|
| + new BooleanSelector.parse("bar"): new Configuration(jsTrace: true)
|
| + },
|
| onPlatform: {
|
| - new PlatformSelector.parse("vm"): new Configuration(verboseTrace: true),
|
| - new PlatformSelector.parse("chrome"): new Configuration(jsTrace: true)
|
| + new PlatformSelector.parse("vm"):
|
| + new Configuration(verboseTrace: true),
|
| + new PlatformSelector.parse("chrome"):
|
| + new Configuration(jsTrace: true)
|
| + },
|
| + presets: {
|
| + "bang": new Configuration(verboseTrace: true),
|
| + "qux": new Configuration(jsTrace: true)
|
| }
|
| ).merge(new Configuration(
|
| + tags: {
|
| + new BooleanSelector.parse("bar"): new Configuration(jsTrace: false),
|
| + new BooleanSelector.parse("baz"): new Configuration(skip: true)
|
| + },
|
| onPlatform: {
|
| - new PlatformSelector.parse("chrome"): new Configuration(jsTrace: false),
|
| + new PlatformSelector.parse("chrome"):
|
| + new Configuration(jsTrace: false),
|
| new PlatformSelector.parse("firefox"): new Configuration(skip: true)
|
| + },
|
| + presets: {
|
| + "qux": new Configuration(jsTrace: false),
|
| + "zap": new Configuration(skip: true)
|
| }
|
| ));
|
|
|
| + expect(merged.tags[new BooleanSelector.parse("foo")].verboseTrace,
|
| + isTrue);
|
| + expect(merged.tags[new BooleanSelector.parse("bar")].jsTrace, isFalse);
|
| + expect(merged.tags[new BooleanSelector.parse("baz")].skip, isTrue);
|
| +
|
| expect(merged.onPlatform[new PlatformSelector.parse("vm")].verboseTrace,
|
| isTrue);
|
| expect(merged.onPlatform[new PlatformSelector.parse("chrome")].jsTrace,
|
| isFalse);
|
| expect(merged.onPlatform[new PlatformSelector.parse("firefox")].skip,
|
| isTrue);
|
| +
|
| + expect(merged.presets["bang"].verboseTrace, isTrue);
|
| + expect(merged.presets["qux"].jsTrace, isFalse);
|
| + expect(merged.presets["zap"].skip, isTrue);
|
| + });
|
| + });
|
| +
|
| + group("for presets", () {
|
| + test("automatically resolves a matching chosen preset", () {
|
| + var configuration = new Configuration(
|
| + presets: {"foo": new Configuration(verboseTrace: true)},
|
| + chosenPresets: ["foo"]);
|
| + expect(configuration.presets, isEmpty);
|
| + expect(configuration.chosenPresets, equals(["foo"]));
|
| + expect(configuration.knownPresets, equals(["foo"]));
|
| + expect(configuration.verboseTrace, isTrue);
|
| + });
|
| +
|
| + test("resolves a chosen presets in order", () {
|
| + var configuration = new Configuration(
|
| + presets: {
|
| + "foo": new Configuration(verboseTrace: true),
|
| + "bar": new Configuration(verboseTrace: false)
|
| + },
|
| + chosenPresets: ["foo", "bar"]);
|
| + expect(configuration.presets, isEmpty);
|
| + expect(configuration.chosenPresets, equals(["foo", "bar"]));
|
| + expect(configuration.knownPresets, unorderedEquals(["foo", "bar"]));
|
| + expect(configuration.verboseTrace, isFalse);
|
| +
|
| + configuration = new Configuration(
|
| + presets: {
|
| + "foo": new Configuration(verboseTrace: true),
|
| + "bar": new Configuration(verboseTrace: false)
|
| + },
|
| + chosenPresets: ["bar", "foo"]);
|
| + expect(configuration.presets, isEmpty);
|
| + expect(configuration.chosenPresets, equals(["bar", "foo"]));
|
| + expect(configuration.knownPresets, unorderedEquals(["foo", "bar"]));
|
| + expect(configuration.verboseTrace, isTrue);
|
| + });
|
| +
|
| + test("ignores inapplicable chosen presets", () {
|
| + var configuration = new Configuration(
|
| + presets: {},
|
| + chosenPresets: ["baz"]);
|
| + expect(configuration.presets, isEmpty);
|
| + expect(configuration.chosenPresets, equals(["baz"]));
|
| + expect(configuration.knownPresets, equals(isEmpty));
|
| + });
|
| +
|
| + test("resolves presets through merging", () {
|
| + var configuration = new Configuration(presets: {
|
| + "foo": new Configuration(verboseTrace: true)
|
| + }).merge(new Configuration(chosenPresets: ["foo"]));
|
| +
|
| + expect(configuration.presets, isEmpty);
|
| + expect(configuration.chosenPresets, equals(["foo"]));
|
| + expect(configuration.knownPresets, equals(["foo"]));
|
| + expect(configuration.verboseTrace, isTrue);
|
| + });
|
| +
|
| + test("preserves known presets through merging", () {
|
| + var configuration = new Configuration(presets: {
|
| + "foo": new Configuration(verboseTrace: true)
|
| + }, chosenPresets: ["foo"])
|
| + .merge(new Configuration());
|
| +
|
| + expect(configuration.presets, isEmpty);
|
| + expect(configuration.chosenPresets, equals(["foo"]));
|
| + expect(configuration.knownPresets, equals(["foo"]));
|
| + expect(configuration.verboseTrace, isTrue);
|
| });
|
| });
|
| });
|
|
|