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:test/src/backend/metadata.dart'; | 5 import 'package:test/src/backend/metadata.dart'; |
6 import 'package:test/src/backend/test_platform.dart'; | 6 import 'package:test/src/backend/test_platform.dart'; |
7 import 'package:test/src/frontend/timeout.dart'; | 7 import 'package:test/src/frontend/timeout.dart'; |
8 import 'package:test/src/frontend/skip.dart'; | 8 import 'package:test/src/frontend/skip.dart'; |
9 import 'package:test/test.dart'; | 9 import 'package:test/test.dart'; |
10 | 10 |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
61 }); | 61 }); |
62 | 62 |
63 test("returns the normal metadata if forTag doesn't match tags", () { | 63 test("returns the normal metadata if forTag doesn't match tags", () { |
64 var metadata = new Metadata( | 64 var metadata = new Metadata( |
65 verboseTrace: true, | 65 verboseTrace: true, |
66 tags: ['bar', 'baz'], | 66 tags: ['bar', 'baz'], |
67 forTag: {'foo': new Metadata(skip: true)}); | 67 forTag: {'foo': new Metadata(skip: true)}); |
68 | 68 |
69 expect(metadata.verboseTrace, isTrue); | 69 expect(metadata.verboseTrace, isTrue); |
70 expect(metadata.skip, isFalse); | 70 expect(metadata.skip, isFalse); |
71 expect(metadata.tags, ['bar', 'baz']); | 71 expect(metadata.tags, unorderedEquals(['bar', 'baz'])); |
72 expect(metadata.forTag, contains('foo')); | 72 expect(metadata.forTag, contains('foo')); |
73 expect(metadata.forTag['foo'].skip, isTrue); | 73 expect(metadata.forTag['foo'].skip, isTrue); |
74 }); | 74 }); |
75 | 75 |
76 test("resolves forTags that match tags", () { | 76 test("resolves forTags that match tags", () { |
77 var metadata = new Metadata( | 77 var metadata = new Metadata( |
78 verboseTrace: true, | 78 verboseTrace: true, |
79 tags: ['foo', 'bar', 'baz'], | 79 tags: ['foo', 'bar', 'baz'], |
80 forTag: { | 80 forTag: { |
81 'foo': new Metadata(skip: true), | 81 'foo': new Metadata(skip: true), |
82 'baz': new Metadata(timeout: Timeout.none), | 82 'baz': new Metadata(timeout: Timeout.none), |
83 'qux': new Metadata(skipReason: "blah") | 83 'qux': new Metadata(skipReason: "blah") |
84 }); | 84 }); |
85 | 85 |
86 expect(metadata.verboseTrace, isTrue); | 86 expect(metadata.verboseTrace, isTrue); |
87 expect(metadata.skip, isTrue); | 87 expect(metadata.skip, isTrue); |
88 expect(metadata.skipReason, isNull); | 88 expect(metadata.skipReason, isNull); |
89 expect(metadata.timeout, equals(Timeout.none)); | 89 expect(metadata.timeout, equals(Timeout.none)); |
90 expect(metadata.tags, equals(['foo', 'bar', 'baz'])); | 90 expect(metadata.tags, unorderedEquals(['foo', 'bar', 'baz'])); |
91 expect(metadata.forTag.keys, equals(['qux'])); | 91 expect(metadata.forTag.keys, equals(['qux'])); |
92 }); | 92 }); |
93 | 93 |
| 94 test("resolves forTags that adds a behavioral tag", () { |
| 95 var metadata = new Metadata( |
| 96 tags: ['foo'], |
| 97 forTag: { |
| 98 'baz': new Metadata(skip: true), |
| 99 'bar': new Metadata(verboseTrace: true, tags: ['baz']), |
| 100 'foo': new Metadata(tags: ['bar']) |
| 101 }); |
| 102 |
| 103 expect(metadata.verboseTrace, isTrue); |
| 104 expect(metadata.skip, isTrue); |
| 105 expect(metadata.tags, unorderedEquals(['foo', 'bar', 'baz'])); |
| 106 expect(metadata.forTag, isEmpty); |
| 107 }); |
| 108 |
| 109 test("resolves forTags that adds circular tags", () { |
| 110 var metadata = new Metadata( |
| 111 tags: ['foo'], |
| 112 forTag: { |
| 113 'foo': new Metadata(tags: ['bar']), |
| 114 'bar': new Metadata(tags: ['baz']), |
| 115 'baz': new Metadata(tags: ['foo']) |
| 116 }); |
| 117 |
| 118 expect(metadata.tags, unorderedEquals(['foo', 'bar', 'baz'])); |
| 119 expect(metadata.forTag, isEmpty); |
| 120 }); |
| 121 |
94 test("base metadata takes precedence over forTags", () { | 122 test("base metadata takes precedence over forTags", () { |
95 var metadata = new Metadata( | 123 var metadata = new Metadata( |
96 verboseTrace: true, | 124 verboseTrace: true, |
97 tags: ['foo'], | 125 tags: ['foo'], |
98 forTag: {'foo': new Metadata(verboseTrace: false)}); | 126 forTag: {'foo': new Metadata(verboseTrace: false)}); |
99 | 127 |
100 expect(metadata.verboseTrace, isTrue); | 128 expect(metadata.verboseTrace, isTrue); |
101 }); | 129 }); |
102 }); | 130 }); |
103 | 131 |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 }, throwsArgumentError); | 176 }, throwsArgumentError); |
149 }); | 177 }); |
150 | 178 |
151 test("refuses multiple Skips", () { | 179 test("refuses multiple Skips", () { |
152 expect(() { | 180 expect(() { |
153 new Metadata.parse(onPlatform: {"chrome": [new Skip(), new Skip()]}); | 181 new Metadata.parse(onPlatform: {"chrome": [new Skip(), new Skip()]}); |
154 }, throwsArgumentError); | 182 }, throwsArgumentError); |
155 }); | 183 }); |
156 }); | 184 }); |
157 } | 185 } |
OLD | NEW |