Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(55)

Side by Side Diff: test/runner/configuration/configuration_test.dart

Issue 1649663003: Add basic support for a configuration file. (Closed) Base URL: git@github.com:dart-lang/test@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698