| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 'package:boolean_selector/boolean_selector.dart'; |
| 6 |
| 5 import 'package:test/src/backend/metadata.dart'; | 7 import 'package:test/src/backend/metadata.dart'; |
| 6 import 'package:test/src/backend/test_platform.dart'; | 8 import 'package:test/src/backend/test_platform.dart'; |
| 7 import 'package:test/src/frontend/skip.dart'; | 9 import 'package:test/src/frontend/skip.dart'; |
| 8 import 'package:test/src/frontend/timeout.dart'; | 10 import 'package:test/src/frontend/timeout.dart'; |
| 9 import 'package:test/test.dart'; | 11 import 'package:test/test.dart'; |
| 10 | 12 |
| 11 void main() { | 13 void main() { |
| 12 group("tags", () { | 14 group("tags", () { |
| 13 test("parses an Iterable", () { | 15 test("parses an Iterable", () { |
| 14 expect(new Metadata.parse(tags: ["a", "b"]).tags, | 16 expect(new Metadata.parse(tags: ["a", "b"]).tags, |
| (...skipping 30 matching lines...) Expand all Loading... |
| 45 }); | 47 }); |
| 46 | 48 |
| 47 group("constructor", () { | 49 group("constructor", () { |
| 48 test("returns the normal metadata if there's no forTag", () { | 50 test("returns the normal metadata if there's no forTag", () { |
| 49 var metadata = new Metadata(verboseTrace: true, tags: ['foo', 'bar']); | 51 var metadata = new Metadata(verboseTrace: true, tags: ['foo', 'bar']); |
| 50 expect(metadata.verboseTrace, isTrue); | 52 expect(metadata.verboseTrace, isTrue); |
| 51 expect(metadata.tags, equals(['foo', 'bar'])); | 53 expect(metadata.tags, equals(['foo', 'bar'])); |
| 52 }); | 54 }); |
| 53 | 55 |
| 54 test("returns the normal metadata if there's no tags", () { | 56 test("returns the normal metadata if there's no tags", () { |
| 55 var metadata = new Metadata(verboseTrace: true, | 57 var metadata = new Metadata(verboseTrace: true, forTag: { |
| 56 forTag: {'foo': new Metadata(skip: true)}); | 58 new BooleanSelector.parse('foo'): new Metadata(skip: true) |
| 59 }); |
| 57 expect(metadata.verboseTrace, isTrue); | 60 expect(metadata.verboseTrace, isTrue); |
| 58 expect(metadata.skip, isFalse); | 61 expect(metadata.skip, isFalse); |
| 59 expect(metadata.forTag, contains('foo')); | 62 expect(metadata.forTag, contains(new BooleanSelector.parse('foo'))); |
| 60 expect(metadata.forTag['foo'].skip, isTrue); | 63 expect(metadata.forTag[new BooleanSelector.parse('foo')].skip, isTrue); |
| 61 }); | 64 }); |
| 62 | 65 |
| 63 test("returns the normal metadata if forTag doesn't match tags", () { | 66 test("returns the normal metadata if forTag doesn't match tags", () { |
| 64 var metadata = new Metadata( | 67 var metadata = new Metadata( |
| 65 verboseTrace: true, | 68 verboseTrace: true, |
| 66 tags: ['bar', 'baz'], | 69 tags: ['bar', 'baz'], |
| 67 forTag: {'foo': new Metadata(skip: true)}); | 70 forTag: {new BooleanSelector.parse('foo'): new Metadata(skip: true)}); |
| 68 | 71 |
| 69 expect(metadata.verboseTrace, isTrue); | 72 expect(metadata.verboseTrace, isTrue); |
| 70 expect(metadata.skip, isFalse); | 73 expect(metadata.skip, isFalse); |
| 71 expect(metadata.tags, unorderedEquals(['bar', 'baz'])); | 74 expect(metadata.tags, unorderedEquals(['bar', 'baz'])); |
| 72 expect(metadata.forTag, contains('foo')); | 75 expect(metadata.forTag, contains(new BooleanSelector.parse('foo'))); |
| 73 expect(metadata.forTag['foo'].skip, isTrue); | 76 expect(metadata.forTag[new BooleanSelector.parse('foo')].skip, isTrue); |
| 74 }); | 77 }); |
| 75 | 78 |
| 76 test("resolves forTags that match tags", () { | 79 test("resolves forTags that match tags", () { |
| 77 var metadata = new Metadata( | 80 var metadata = new Metadata( |
| 78 verboseTrace: true, | 81 verboseTrace: true, |
| 79 tags: ['foo', 'bar', 'baz'], | 82 tags: ['foo', 'bar', 'baz'], |
| 80 forTag: { | 83 forTag: { |
| 81 'foo': new Metadata(skip: true), | 84 new BooleanSelector.parse('foo'): new Metadata(skip: true), |
| 82 'baz': new Metadata(timeout: Timeout.none), | 85 new BooleanSelector.parse('baz'): |
| 83 'qux': new Metadata(skipReason: "blah") | 86 new Metadata(timeout: Timeout.none), |
| 87 new BooleanSelector.parse('qux'): new Metadata(skipReason: "blah") |
| 84 }); | 88 }); |
| 85 | 89 |
| 86 expect(metadata.verboseTrace, isTrue); | 90 expect(metadata.verboseTrace, isTrue); |
| 87 expect(metadata.skip, isTrue); | 91 expect(metadata.skip, isTrue); |
| 88 expect(metadata.skipReason, isNull); | 92 expect(metadata.skipReason, isNull); |
| 89 expect(metadata.timeout, equals(Timeout.none)); | 93 expect(metadata.timeout, equals(Timeout.none)); |
| 90 expect(metadata.tags, unorderedEquals(['foo', 'bar', 'baz'])); | 94 expect(metadata.tags, unorderedEquals(['foo', 'bar', 'baz'])); |
| 91 expect(metadata.forTag.keys, equals(['qux'])); | 95 expect(metadata.forTag.keys, equals([new BooleanSelector.parse('qux')])); |
| 92 }); | 96 }); |
| 93 | 97 |
| 94 test("resolves forTags that adds a behavioral tag", () { | 98 test("resolves forTags that adds a behavioral tag", () { |
| 95 var metadata = new Metadata( | 99 var metadata = new Metadata( |
| 96 tags: ['foo'], | 100 tags: ['foo'], |
| 97 forTag: { | 101 forTag: { |
| 98 'baz': new Metadata(skip: true), | 102 new BooleanSelector.parse('baz'): new Metadata(skip: true), |
| 99 'bar': new Metadata(verboseTrace: true, tags: ['baz']), | 103 new BooleanSelector.parse('bar'): |
| 100 'foo': new Metadata(tags: ['bar']) | 104 new Metadata(verboseTrace: true, tags: ['baz']), |
| 105 new BooleanSelector.parse('foo'): new Metadata(tags: ['bar']) |
| 101 }); | 106 }); |
| 102 | 107 |
| 103 expect(metadata.verboseTrace, isTrue); | 108 expect(metadata.verboseTrace, isTrue); |
| 104 expect(metadata.skip, isTrue); | 109 expect(metadata.skip, isTrue); |
| 105 expect(metadata.tags, unorderedEquals(['foo', 'bar', 'baz'])); | 110 expect(metadata.tags, unorderedEquals(['foo', 'bar', 'baz'])); |
| 106 expect(metadata.forTag, isEmpty); | 111 expect(metadata.forTag, isEmpty); |
| 107 }); | 112 }); |
| 108 | 113 |
| 109 test("resolves forTags that adds circular tags", () { | 114 test("resolves forTags that adds circular tags", () { |
| 110 var metadata = new Metadata( | 115 var metadata = new Metadata( |
| 111 tags: ['foo'], | 116 tags: ['foo'], |
| 112 forTag: { | 117 forTag: { |
| 113 'foo': new Metadata(tags: ['bar']), | 118 new BooleanSelector.parse('foo'): new Metadata(tags: ['bar']), |
| 114 'bar': new Metadata(tags: ['baz']), | 119 new BooleanSelector.parse('bar'): new Metadata(tags: ['baz']), |
| 115 'baz': new Metadata(tags: ['foo']) | 120 new BooleanSelector.parse('baz'): new Metadata(tags: ['foo']) |
| 116 }); | 121 }); |
| 117 | 122 |
| 118 expect(metadata.tags, unorderedEquals(['foo', 'bar', 'baz'])); | 123 expect(metadata.tags, unorderedEquals(['foo', 'bar', 'baz'])); |
| 119 expect(metadata.forTag, isEmpty); | 124 expect(metadata.forTag, isEmpty); |
| 120 }); | 125 }); |
| 121 | 126 |
| 122 test("base metadata takes precedence over forTags", () { | 127 test("base metadata takes precedence over forTags", () { |
| 123 var metadata = new Metadata( | 128 var metadata = new Metadata(verboseTrace: true, tags: ['foo'], forTag: { |
| 124 verboseTrace: true, | 129 new BooleanSelector.parse('foo'): new Metadata(verboseTrace: false) |
| 125 tags: ['foo'], | 130 }); |
| 126 forTag: {'foo': new Metadata(verboseTrace: false)}); | |
| 127 | 131 |
| 128 expect(metadata.verboseTrace, isTrue); | 132 expect(metadata.verboseTrace, isTrue); |
| 129 }); | 133 }); |
| 130 }); | 134 }); |
| 131 | 135 |
| 132 group("onPlatform", () { | 136 group("onPlatform", () { |
| 133 test("parses a valid map", () { | 137 test("parses a valid map", () { |
| 134 var metadata = new Metadata.parse(onPlatform: { | 138 var metadata = new Metadata.parse(onPlatform: { |
| 135 "chrome": new Timeout.factor(2), | 139 "chrome": new Timeout.factor(2), |
| 136 "vm": [new Skip(), new Timeout.factor(3)] | 140 "vm": [new Skip(), new Timeout.factor(3)] |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 176 }, throwsArgumentError); | 180 }, throwsArgumentError); |
| 177 }); | 181 }); |
| 178 | 182 |
| 179 test("refuses multiple Skips", () { | 183 test("refuses multiple Skips", () { |
| 180 expect(() { | 184 expect(() { |
| 181 new Metadata.parse(onPlatform: {"chrome": [new Skip(), new Skip()]}); | 185 new Metadata.parse(onPlatform: {"chrome": [new Skip(), new Skip()]}); |
| 182 }, throwsArgumentError); | 186 }, throwsArgumentError); |
| 183 }); | 187 }); |
| 184 }); | 188 }); |
| 185 } | 189 } |
| OLD | NEW |