OLD | NEW |
---|---|
(Empty) | |
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 | |
3 // BSD-style license that can be found in the LICENSE file. | |
4 | |
5 @TestOn("vm") | |
6 | |
7 import 'dart:io'; | |
kevmoo
2016/02/03 23:01:56
dart:io, dart:convert, scheduled_test/descriptor a
| |
8 import 'dart:convert'; | |
9 | |
10 import 'package:path/path.dart' as p; | |
11 import 'package:scheduled_test/descriptor.dart' as d; | |
12 import 'package:test/test.dart'; | |
13 | |
14 import 'package:test/src/backend/test_platform.dart'; | |
15 import 'package:test/src/runner/configuration.dart'; | |
16 import 'package:test/src/runner/configuration/values.dart'; | |
17 import 'package:test/src/util/io.dart'; | |
18 | |
19 void main() { | |
20 group("merge", () { | |
21 group("for most fields", () { | |
22 test("if neither is defined, preserves the default", () { | |
23 var merged = new Configuration().merge(new Configuration()); | |
24 expect(merged.help, isFalse); | |
25 expect(merged.version, isFalse); | |
26 expect(merged.verboseTrace, isFalse); | |
27 expect(merged.jsTrace, isFalse); | |
28 expect(merged.pauseAfterLoad, isFalse); | |
29 expect(merged.color, equals(canUseSpecialChars)); | |
30 expect(merged.packageRoot, equals(p.join(p.current, 'packages'))); | |
31 expect(merged.reporter, equals(defaultReporter)); | |
32 expect(merged.pubServeUrl, isNull); | |
33 expect(merged.pattern, isNull); | |
34 expect(merged.platforms, equals([TestPlatform.vm])); | |
35 expect(merged.paths, equals(["test"])); | |
36 }); | |
37 | |
38 test("if only the old configuration's is defined, uses it", () { | |
39 var merged = new Configuration( | |
40 help: true, | |
41 version: true, | |
42 verboseTrace: true, | |
43 jsTrace: true, | |
44 pauseAfterLoad: true, | |
45 color: true, | |
46 packageRoot: "root", | |
47 reporter: "json", | |
48 pubServePort: 1234, | |
49 pattern: "foo", | |
50 platforms: [TestPlatform.chrome], | |
51 paths: ["bar"]) | |
52 .merge(new Configuration()); | |
53 | |
54 expect(merged.help, isTrue); | |
55 expect(merged.version, isTrue); | |
56 expect(merged.verboseTrace, isTrue); | |
57 expect(merged.jsTrace, isTrue); | |
58 expect(merged.pauseAfterLoad, isTrue); | |
59 expect(merged.color, isTrue); | |
60 expect(merged.packageRoot, equals("root")); | |
61 expect(merged.reporter, equals("json")); | |
62 expect(merged.pubServeUrl.port, equals(1234)); | |
63 expect(merged.pattern, equals("foo")); | |
64 expect(merged.platforms, equals([TestPlatform.chrome])); | |
65 expect(merged.paths, equals(["bar"])); | |
66 }); | |
67 | |
68 test("if only the new configuration's is defined, uses it", () { | |
69 var merged = new Configuration().merge(new Configuration( | |
70 help: true, | |
71 version: true, | |
72 verboseTrace: true, | |
73 jsTrace: true, | |
74 pauseAfterLoad: true, | |
75 color: true, | |
76 packageRoot: "root", | |
77 reporter: "json", | |
78 pubServePort: 1234, | |
79 pattern: "foo", | |
80 platforms: [TestPlatform.chrome], | |
81 paths: ["bar"])); | |
82 | |
83 expect(merged.help, isTrue); | |
84 expect(merged.version, isTrue); | |
85 expect(merged.verboseTrace, isTrue); | |
86 expect(merged.jsTrace, isTrue); | |
87 expect(merged.pauseAfterLoad, isTrue); | |
88 expect(merged.color, isTrue); | |
89 expect(merged.packageRoot, equals("root")); | |
90 expect(merged.reporter, equals("json")); | |
91 expect(merged.pubServeUrl.port, equals(1234)); | |
92 expect(merged.pattern, equals("foo")); | |
93 expect(merged.platforms, equals([TestPlatform.chrome])); | |
94 expect(merged.paths, equals(["bar"])); | |
95 }); | |
96 | |
97 test("if the two configurations conflict, uses the new configuration's " | |
98 "values", () { | |
99 var older = new Configuration( | |
100 help: true, | |
101 version: false, | |
102 verboseTrace: true, | |
103 jsTrace: false, | |
104 pauseAfterLoad: true, | |
105 color: false, | |
106 packageRoot: "root", | |
107 reporter: "json", | |
108 pubServePort: 1234, | |
109 pattern: "foo", | |
110 platforms: [TestPlatform.chrome], | |
111 paths: ["bar"]); | |
112 var newer = new Configuration( | |
113 help: false, | |
114 version: true, | |
115 verboseTrace: false, | |
116 jsTrace: true, | |
117 pauseAfterLoad: false, | |
118 color: true, | |
119 packageRoot: "boot", | |
120 reporter: "compact", | |
121 pubServePort: 5678, | |
122 pattern: "gonk", | |
123 platforms: [TestPlatform.dartium], | |
124 paths: ["blech"]); | |
125 var merged = older.merge(newer); | |
126 | |
127 expect(merged.help, isFalse); | |
128 expect(merged.version, isTrue); | |
129 expect(merged.verboseTrace, isFalse); | |
130 expect(merged.jsTrace, isTrue); | |
131 expect(merged.pauseAfterLoad, isFalse); | |
132 expect(merged.color, isTrue); | |
133 expect(merged.packageRoot, equals("boot")); | |
134 expect(merged.reporter, equals("compact")); | |
135 expect(merged.pubServeUrl.port, equals(5678)); | |
136 expect(merged.pattern, equals("gonk")); | |
137 expect(merged.platforms, equals([TestPlatform.dartium])); | |
138 expect(merged.paths, equals(["blech"])); | |
139 }); | |
140 }); | |
141 | |
142 group("for tags", () { | |
143 test("if neither is defined, preserves the default", () { | |
144 var merged = new Configuration().merge(new Configuration()); | |
145 expect(merged.tags, isEmpty); | |
146 expect(merged.excludeTags, isEmpty); | |
147 }); | |
148 | |
149 test("if only the old configuration's is defined, uses it", () { | |
150 var merged = new Configuration( | |
151 tags: ["foo", "bar"], | |
152 excludeTags: ["baz", "bang"]) | |
153 .merge(new Configuration()); | |
154 | |
155 expect(merged.tags, unorderedEquals(["foo", "bar"])); | |
156 expect(merged.excludeTags, unorderedEquals(["baz", "bang"])); | |
157 }); | |
158 | |
159 test("if only the new configuration's is defined, uses it", () { | |
160 var merged = new Configuration().merge(new Configuration( | |
161 tags: ["foo", "bar"], | |
162 excludeTags: ["baz", "bang"])); | |
163 | |
164 expect(merged.tags, unorderedEquals(["foo", "bar"])); | |
165 expect(merged.excludeTags, unorderedEquals(["baz", "bang"])); | |
166 }); | |
167 | |
168 test("if both are defined, unions them", () { | |
169 var older = new Configuration( | |
170 tags: ["foo", "bar"], | |
171 excludeTags: ["baz", "bang"]); | |
172 var newer = new Configuration( | |
173 tags: ["bar", "blip"], | |
174 excludeTags: ["bang", "qux"]); | |
175 var merged = older.merge(newer); | |
176 | |
177 expect(merged.tags, unorderedEquals(["foo", "bar", "blip"])); | |
178 expect(merged.excludeTags, unorderedEquals(["baz", "bang", "qux"])); | |
179 }); | |
180 }); | |
181 | |
182 group("for timeout", () { | |
183 test("if neither is defined, preserves the default", () { | |
184 var merged = new Configuration().merge(new Configuration()); | |
185 expect(merged.timeout, equals(new Timeout.factor(1))); | |
186 }); | |
187 | |
188 test("if only the old configuration's is defined, uses it", () { | |
189 var merged = new Configuration(timeout: new Timeout.factor(2)) | |
190 .merge(new Configuration()); | |
191 expect(merged.timeout, equals(new Timeout.factor(2))); | |
192 }); | |
193 | |
194 test("if only the new configuration's is defined, uses it", () { | |
195 var merged = new Configuration() | |
196 .merge(new Configuration(timeout: new Timeout.factor(2))); | |
197 expect(merged.timeout, equals(new Timeout.factor(2))); | |
198 }); | |
199 | |
200 test("if both are defined, merges them", () { | |
201 var older = new Configuration(timeout: new Timeout.factor(2)); | |
202 var newer = new Configuration(timeout: new Timeout.factor(3)); | |
203 var merged = older.merge(newer); | |
204 expect(merged.timeout, equals(new Timeout.factor(6))); | |
205 }); | |
206 | |
207 test("if the merge conflicts, prefers the new value", () { | |
208 var older = new Configuration( | |
209 timeout: new Timeout(new Duration(seconds: 1))); | |
210 var newer = new Configuration( | |
211 timeout: new Timeout(new Duration(seconds: 2))); | |
212 var merged = older.merge(newer); | |
213 expect(merged.timeout, equals(new Timeout(new Duration(seconds: 2)))); | |
214 }); | |
215 }); | |
216 }); | |
217 } | |
OLD | NEW |