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 is unused
| |
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:scheduled_test/scheduled_stream.dart'; | |
13 import 'package:scheduled_test/scheduled_test.dart'; | |
14 | |
15 import '../../io.dart'; | |
16 | |
17 void main() { | |
18 useSandbox(); | |
19 | |
20 test("ignores an empty file", () { | |
21 d.file("dart_test.yaml", "").create(); | |
22 | |
23 d.file("test.dart", """ | |
24 import 'package:test/test.dart'; | |
25 | |
26 void main() { | |
27 test("success", () {}); | |
28 } | |
29 """).create(); | |
30 | |
31 var test = runTest(["test.dart"]); | |
32 test.stdout.expect(consumeThrough(contains("+1: All tests passed!"))); | |
33 test.shouldExit(0); | |
34 }); | |
35 | |
36 test("includes the full stack with verbose_trace: true", () { | |
37 d.file("dart_test.yaml", JSON.encode({ | |
38 "verbose_trace": true | |
39 })).create(); | |
40 | |
41 d.file("test.dart", """ | |
42 import 'package:test/test.dart'; | |
43 | |
44 void main() { | |
45 test("failure", () => throw "oh no"); | |
46 } | |
47 """).create(); | |
48 | |
49 var test = runTest(["test.dart"], reporter: "compact"); | |
50 test.stdout.expect(consumeThrough(contains("dart:isolate-patch"))); | |
51 test.shouldExit(1); | |
52 }); | |
53 | |
54 test("doesn't dartify stack traces for JS-compiled tests with js_trace: true", | |
55 () { | |
56 d.file("dart_test.yaml", JSON.encode({ | |
57 "js_trace": true | |
58 })).create(); | |
59 | |
60 d.file("test.dart", """ | |
61 import 'package:test/test.dart'; | |
62 | |
63 void main() { | |
64 test("failure", () => throw "oh no"); | |
65 } | |
66 """).create(); | |
67 | |
68 var test = runTest(["-p", "chrome", "--verbose-trace", "test.dart"]); | |
69 test.stdout.fork().expect(never(endsWith(" main.<fn>"))); | |
70 test.stdout.fork().expect(never(contains("package:test"))); | |
71 test.stdout.fork().expect(never(contains("dart:async/zone.dart"))); | |
72 test.stdout.expect(consumeThrough(contains("-1: Some tests failed."))); | |
73 test.shouldExit(1); | |
74 }); | |
75 | |
76 test("uses the specified reporter", () { | |
77 d.file("dart_test.yaml", JSON.encode({ | |
78 "reporter": "json" | |
79 })).create(); | |
80 | |
81 d.file("test.dart", """ | |
82 import 'package:test/test.dart'; | |
83 | |
84 void main() { | |
85 test("success", () {}); | |
86 } | |
87 """).create(); | |
88 | |
89 var test = runTest(["test.dart"]); | |
90 test.stdout.expect(consumeThrough(contains('"testStart"'))); | |
91 test.shouldExit(0); | |
92 }); | |
93 | |
94 test("uses the specified pub serve port", () { | |
95 d.file("pubspec.yaml", """ | |
96 name: myapp | |
97 dependencies: | |
98 barback: any | |
99 test: {path: ${p.current}} | |
100 transformers: | |
101 - myapp: | |
102 \$include: test/**_test.dart | |
103 - test/pub_serve: | |
104 \$include: test/**_test.dart | |
105 """).create(); | |
106 | |
107 d.dir("lib", [ | |
108 d.file("myapp.dart", """ | |
109 import 'package:barback/barback.dart'; | |
110 | |
111 class MyTransformer extends Transformer { | |
112 final allowedExtensions = '.dart'; | |
113 | |
114 MyTransformer.asPlugin(); | |
115 | |
116 Future apply(Transform transform) async { | |
117 var contents = await transform.primaryInput.readAsString(); | |
118 transform.addOutput(new Asset.fromString( | |
119 transform.primaryInput.id, | |
120 contents.replaceAll("isFalse", "isTrue"))); | |
121 } | |
122 } | |
123 """) | |
124 ]).create(); | |
125 | |
126 runPub(['get']).shouldExit(0); | |
127 | |
128 d.dir("test", [ | |
129 d.file("my_test.dart", """ | |
130 import 'package:test/test.dart'; | |
131 | |
132 void main() { | |
133 test("success", () => expect(true, isFalse)); | |
134 } | |
135 """) | |
136 ]).create(); | |
137 | |
138 var pub = runPubServe(); | |
139 | |
140 d.async(pubServePort.then((port) { | |
141 return d.file("dart_test.yaml", JSON.encode({ | |
142 "pub_serve": port | |
143 })); | |
144 })).create(); | |
145 | |
146 var test = runTest([]); | |
147 test.stdout.expect(consumeThrough(contains('+1: All tests passed!'))); | |
148 test.shouldExit(0); | |
149 pub.kill(); | |
150 }); | |
151 | |
152 test("uses the specified concurrency", () { | |
153 d.file("dart_test.yaml", JSON.encode({ | |
154 "concurrency": 2 | |
155 })).create(); | |
156 | |
157 d.file("test.dart", """ | |
158 import 'package:test/test.dart'; | |
159 | |
160 void main() { | |
161 test("success", () {}); | |
162 } | |
163 """).create(); | |
164 | |
165 // We can't reliably test cthe concurrency, but this at least ensures that | |
166 // it doesn't fail to parse. | |
167 var test = runTest(["test.dart"]); | |
168 test.stdout.expect(consumeThrough(contains("+1: All tests passed!"))); | |
169 test.shouldExit(0); | |
170 }); | |
171 | |
172 test("uses the specified timeout", () { | |
173 d.file("dart_test.yaml", JSON.encode({ | |
174 "timeout": "0s" | |
175 })).create(); | |
176 | |
177 d.file("test.dart", """ | |
178 import 'dart:async'; | |
179 | |
180 import 'package:test/test.dart'; | |
181 | |
182 void main() { | |
183 test("success", () => new Future.delayed(Duration.ZERO)); | |
184 } | |
185 """).create(); | |
186 | |
187 var test = runTest(["test.dart"]); | |
188 test.stdout.expect(containsInOrder([ | |
189 "Test timed out after 0 seconds.", | |
190 "-1: Some tests failed." | |
191 ])); | |
192 test.shouldExit(1); | |
193 }); | |
194 | |
195 test("runs on the specified platforms", () { | |
196 d.file("dart_test.yaml", JSON.encode({ | |
197 "platforms": ["vm", "content-shell"] | |
198 })).create(); | |
199 | |
200 d.file("test.dart", """ | |
201 import 'package:test/test.dart'; | |
202 | |
203 void main() { | |
204 test("success", () {}); | |
205 } | |
206 """).create(); | |
207 | |
208 var test = runTest(["test.dart"]); | |
209 test.stdout.expect(containsInOrder([ | |
210 "[VM] success", | |
211 "[Dartium Content Shell] success" | |
212 ])); | |
213 test.shouldExit(0); | |
214 }); | |
215 | |
216 test("command line args take precedence", () { | |
217 d.file("dart_test.yaml", JSON.encode({ | |
218 "timeout": "0s" | |
219 })).create(); | |
220 | |
221 d.file("test.dart", """ | |
222 import 'dart:async'; | |
223 | |
224 import 'package:test/test.dart'; | |
225 | |
226 void main() { | |
227 test("success", () => new Future.delayed(Duration.ZERO)); | |
228 } | |
229 """).create(); | |
230 | |
231 var test = runTest(["--timeout=none", "test.dart"]); | |
232 test.stdout.expect(consumeThrough(contains("All tests passed!"))); | |
233 test.shouldExit(0); | |
234 }); | |
235 } | |
OLD | NEW |