OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 library pub_tests; | 5 library pub_tests; |
6 | 6 |
7 import 'package:scheduled_test/scheduled_test.dart'; | 7 import 'package:scheduled_test/scheduled_test.dart'; |
8 | 8 |
9 import '../descriptor.dart' as d; | 9 import '../descriptor.dart' as d; |
10 import '../test_pub.dart'; | 10 import '../test_pub.dart'; |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
52 "lib/foo.dart: \${results.first}, " | 52 "lib/foo.dart: \${results.first}, " |
53 "lib/does/not/exist.dart: \${results.last}")); | 53 "lib/does/not/exist.dart: \${results.last}")); |
54 }); | 54 }); |
55 } | 55 } |
56 } | 56 } |
57 """; | 57 """; |
58 | 58 |
59 main() { | 59 main() { |
60 integration("caches a transformed dependency", () { | 60 integration("caches a transformed dependency", () { |
61 servePackages((builder) { | 61 servePackages((builder) { |
62 builder.serveRepoPackage('barback'); | 62 builder.serveRealPackage('barback'); |
63 | 63 |
64 builder.serve("foo", "1.2.3", | 64 builder.serve("foo", "1.2.3", |
65 deps: {'barback': 'any'}, | 65 deps: {'barback': 'any'}, |
66 pubspec: {'transformers': ['foo']}, | 66 pubspec: {'transformers': ['foo']}, |
67 contents: [ | 67 contents: [ |
68 d.dir("lib", [ | 68 d.dir("lib", [ |
69 d.file("transformer.dart", replaceTransformer("Hello", "Goodbye")), | 69 d.file("transformer.dart", replaceTransformer("Hello", "Goodbye")), |
70 d.file("foo.dart", "final message = 'Hello!';") | 70 d.file("foo.dart", "final message = 'Hello!';") |
71 ]) | 71 ]) |
72 ]); | 72 ]); |
73 }); | 73 }); |
74 | 74 |
75 d.appDir({"foo": "1.2.3"}).create(); | 75 d.appDir({"foo": "1.2.3"}).create(); |
76 | 76 |
77 pubGet(output: contains("Precompiled foo.")); | 77 pubGet(output: contains("Precompiled foo.")); |
78 | 78 |
79 d.dir(appPath, [ | 79 d.dir(appPath, [ |
80 d.dir(".pub/deps/debug/foo/lib", [ | 80 d.dir(".pub/deps/debug/foo/lib", [ |
81 d.file("foo.dart", "final message = 'Goodbye!';") | 81 d.file("foo.dart", "final message = 'Goodbye!';") |
82 ]) | 82 ]) |
83 ]).validate(); | 83 ]).validate(); |
84 }); | 84 }); |
85 | 85 |
86 integration("caches a dependency transformed by its dependency", () { | 86 integration("caches a dependency transformed by its dependency", () { |
87 servePackages((builder) { | 87 servePackages((builder) { |
88 builder.serveRepoPackage('barback'); | 88 builder.serveRealPackage('barback'); |
89 | 89 |
90 builder.serve("foo", "1.2.3", | 90 builder.serve("foo", "1.2.3", |
91 deps: {'bar': '1.2.3'}, | 91 deps: {'bar': '1.2.3'}, |
92 pubspec: {'transformers': ['bar']}, | 92 pubspec: {'transformers': ['bar']}, |
93 contents: [ | 93 contents: [ |
94 d.dir("lib", [ | 94 d.dir("lib", [ |
95 d.file("foo.dart", "final message = 'Hello!';") | 95 d.file("foo.dart", "final message = 'Hello!';") |
96 ]) | 96 ]) |
97 ]); | 97 ]); |
98 | 98 |
(...skipping 12 matching lines...) Expand all Loading... |
111 | 111 |
112 d.dir(appPath, [ | 112 d.dir(appPath, [ |
113 d.dir(".pub/deps/debug/foo/lib", [ | 113 d.dir(".pub/deps/debug/foo/lib", [ |
114 d.file("foo.dart", "final message = 'Goodbye!';") | 114 d.file("foo.dart", "final message = 'Goodbye!';") |
115 ]) | 115 ]) |
116 ]).validate(); | 116 ]).validate(); |
117 }); | 117 }); |
118 | 118 |
119 integration("doesn't cache an untransformed dependency", () { | 119 integration("doesn't cache an untransformed dependency", () { |
120 servePackages((builder) { | 120 servePackages((builder) { |
121 builder.serveRepoPackage('barback'); | 121 builder.serveRealPackage('barback'); |
122 | 122 |
123 builder.serve("foo", "1.2.3", | 123 builder.serve("foo", "1.2.3", |
124 contents: [ | 124 contents: [ |
125 d.dir("lib", [ | 125 d.dir("lib", [ |
126 d.file("foo.dart", "final message = 'Hello!';") | 126 d.file("foo.dart", "final message = 'Hello!';") |
127 ]) | 127 ]) |
128 ]); | 128 ]); |
129 }); | 129 }); |
130 | 130 |
131 d.appDir({"foo": "1.2.3"}).create(); | 131 d.appDir({"foo": "1.2.3"}).create(); |
132 | 132 |
133 pubGet(output: isNot(contains("Precompiled foo."))); | 133 pubGet(output: isNot(contains("Precompiled foo."))); |
134 | 134 |
135 d.dir(appPath, [d.nothing(".pub/deps")]).validate(); | 135 d.dir(appPath, [d.nothing(".pub/deps")]).validate(); |
136 }); | 136 }); |
137 | 137 |
138 integration("recaches when the dependency is updated", () { | 138 integration("recaches when the dependency is updated", () { |
139 servePackages((builder) { | 139 servePackages((builder) { |
140 builder.serveRepoPackage('barback'); | 140 builder.serveRealPackage('barback'); |
141 | 141 |
142 builder.serve("foo", "1.2.3", | 142 builder.serve("foo", "1.2.3", |
143 deps: {'barback': 'any'}, | 143 deps: {'barback': 'any'}, |
144 pubspec: {'transformers': ['foo']}, | 144 pubspec: {'transformers': ['foo']}, |
145 contents: [ | 145 contents: [ |
146 d.dir("lib", [ | 146 d.dir("lib", [ |
147 d.file("transformer.dart", replaceTransformer("Hello", "Goodbye")), | 147 d.file("transformer.dart", replaceTransformer("Hello", "Goodbye")), |
148 d.file("foo.dart", "final message = 'Hello!';") | 148 d.file("foo.dart", "final message = 'Hello!';") |
149 ]) | 149 ]) |
150 ]); | 150 ]); |
(...skipping 26 matching lines...) Expand all Loading... |
177 | 177 |
178 d.dir(appPath, [ | 178 d.dir(appPath, [ |
179 d.dir(".pub/deps/debug/foo/lib", [ | 179 d.dir(".pub/deps/debug/foo/lib", [ |
180 d.file("foo.dart", "final message = 'See ya!';") | 180 d.file("foo.dart", "final message = 'See ya!';") |
181 ]) | 181 ]) |
182 ]).validate(); | 182 ]).validate(); |
183 }); | 183 }); |
184 | 184 |
185 integration("recaches when a transitive dependency is updated", () { | 185 integration("recaches when a transitive dependency is updated", () { |
186 servePackages((builder) { | 186 servePackages((builder) { |
187 builder.serveRepoPackage('barback'); | 187 builder.serveRealPackage('barback'); |
188 | 188 |
189 builder.serve("foo", "1.2.3", | 189 builder.serve("foo", "1.2.3", |
190 deps: { | 190 deps: { |
191 'barback': 'any', | 191 'barback': 'any', |
192 'bar': 'any' | 192 'bar': 'any' |
193 }, | 193 }, |
194 pubspec: {'transformers': ['foo']}, | 194 pubspec: {'transformers': ['foo']}, |
195 contents: [ | 195 contents: [ |
196 d.dir("lib", [ | 196 d.dir("lib", [ |
197 d.file("transformer.dart", replaceTransformer("Hello", "Goodbye")), | 197 d.file("transformer.dart", replaceTransformer("Hello", "Goodbye")), |
198 d.file("foo.dart", "final message = 'Hello!';") | 198 d.file("foo.dart", "final message = 'Hello!';") |
199 ]) | 199 ]) |
200 ]); | 200 ]); |
201 | 201 |
202 builder.serve("bar", "5.6.7"); | 202 builder.serve("bar", "5.6.7"); |
203 }); | 203 }); |
204 | 204 |
205 d.appDir({"foo": "1.2.3"}).create(); | 205 d.appDir({"foo": "1.2.3"}).create(); |
206 pubGet(output: contains("Precompiled foo.")); | 206 pubGet(output: contains("Precompiled foo.")); |
207 | 207 |
208 servePackages((builder) => builder.serve("bar", "6.0.0")); | 208 servePackages((builder) => builder.serve("bar", "6.0.0")); |
209 pubUpgrade(output: contains("Precompiled foo.")); | 209 pubUpgrade(output: contains("Precompiled foo.")); |
210 }); | 210 }); |
211 | 211 |
212 integration("doesn't recache when an unrelated dependency is updated", () { | 212 integration("doesn't recache when an unrelated dependency is updated", () { |
213 servePackages((builder) { | 213 servePackages((builder) { |
214 builder.serveRepoPackage('barback'); | 214 builder.serveRealPackage('barback'); |
215 | 215 |
216 builder.serve("foo", "1.2.3", | 216 builder.serve("foo", "1.2.3", |
217 deps: {'barback': 'any'}, | 217 deps: {'barback': 'any'}, |
218 pubspec: {'transformers': ['foo']}, | 218 pubspec: {'transformers': ['foo']}, |
219 contents: [ | 219 contents: [ |
220 d.dir("lib", [ | 220 d.dir("lib", [ |
221 d.file("transformer.dart", replaceTransformer("Hello", "Goodbye")), | 221 d.file("transformer.dart", replaceTransformer("Hello", "Goodbye")), |
222 d.file("foo.dart", "final message = 'Hello!';") | 222 d.file("foo.dart", "final message = 'Hello!';") |
223 ]) | 223 ]) |
224 ]); | 224 ]); |
225 | 225 |
226 builder.serve("bar", "5.6.7"); | 226 builder.serve("bar", "5.6.7"); |
227 }); | 227 }); |
228 | 228 |
229 d.appDir({"foo": "1.2.3"}).create(); | 229 d.appDir({"foo": "1.2.3"}).create(); |
230 pubGet(output: contains("Precompiled foo.")); | 230 pubGet(output: contains("Precompiled foo.")); |
231 | 231 |
232 servePackages((builder) => builder.serve("bar", "6.0.0")); | 232 servePackages((builder) => builder.serve("bar", "6.0.0")); |
233 pubUpgrade(output: isNot(contains("Precompiled foo."))); | 233 pubUpgrade(output: isNot(contains("Precompiled foo."))); |
234 }); | 234 }); |
235 | 235 |
236 integration("caches the dependency in debug mode", () { | 236 integration("caches the dependency in debug mode", () { |
237 servePackages((builder) { | 237 servePackages((builder) { |
238 builder.serveRepoPackage('barback'); | 238 builder.serveRealPackage('barback'); |
239 | 239 |
240 builder.serve("foo", "1.2.3", | 240 builder.serve("foo", "1.2.3", |
241 deps: {'barback': 'any'}, | 241 deps: {'barback': 'any'}, |
242 pubspec: {'transformers': ['foo']}, | 242 pubspec: {'transformers': ['foo']}, |
243 contents: [ | 243 contents: [ |
244 d.dir("lib", [ | 244 d.dir("lib", [ |
245 d.file("transformer.dart", MODE_TRANSFORMER), | 245 d.file("transformer.dart", MODE_TRANSFORMER), |
246 d.file("foo.dart", "final mode = 'MODE';") | 246 d.file("foo.dart", "final mode = 'MODE';") |
247 ]) | 247 ]) |
248 ]); | 248 ]); |
249 }); | 249 }); |
250 | 250 |
251 d.appDir({"foo": "1.2.3"}).create(); | 251 d.appDir({"foo": "1.2.3"}).create(); |
252 | 252 |
253 pubGet(output: contains("Precompiled foo.")); | 253 pubGet(output: contains("Precompiled foo.")); |
254 | 254 |
255 d.dir(appPath, [ | 255 d.dir(appPath, [ |
256 d.dir(".pub/deps/debug/foo/lib", [ | 256 d.dir(".pub/deps/debug/foo/lib", [ |
257 d.file("foo.dart", "final mode = 'debug';") | 257 d.file("foo.dart", "final mode = 'debug';") |
258 ]) | 258 ]) |
259 ]).validate(); | 259 ]).validate(); |
260 }); | 260 }); |
261 | 261 |
262 integration("loads code from the cache", () { | 262 integration("loads code from the cache", () { |
263 servePackages((builder) { | 263 servePackages((builder) { |
264 builder.serveRepoPackage('barback'); | 264 builder.serveRealPackage('barback'); |
265 | 265 |
266 builder.serve("foo", "1.2.3", | 266 builder.serve("foo", "1.2.3", |
267 deps: {'barback': 'any'}, | 267 deps: {'barback': 'any'}, |
268 pubspec: {'transformers': ['foo']}, | 268 pubspec: {'transformers': ['foo']}, |
269 contents: [ | 269 contents: [ |
270 d.dir("lib", [ | 270 d.dir("lib", [ |
271 d.file("transformer.dart", replaceTransformer("Hello", "Goodbye")), | 271 d.file("transformer.dart", replaceTransformer("Hello", "Goodbye")), |
272 d.file("foo.dart", "final message = 'Hello!';") | 272 d.file("foo.dart", "final message = 'Hello!';") |
273 ]) | 273 ]) |
274 ]); | 274 ]); |
(...skipping 17 matching lines...) Expand all Loading... |
292 ]) | 292 ]) |
293 ]).create(); | 293 ]).create(); |
294 | 294 |
295 var pub = pubRun(args: ["bin/script"]); | 295 var pub = pubRun(args: ["bin/script"]); |
296 pub.stdout.expect("Modified!"); | 296 pub.stdout.expect("Modified!"); |
297 pub.shouldExit(); | 297 pub.shouldExit(); |
298 }); | 298 }); |
299 | 299 |
300 integration("doesn't re-transform code loaded from the cache", () { | 300 integration("doesn't re-transform code loaded from the cache", () { |
301 servePackages((builder) { | 301 servePackages((builder) { |
302 builder.serveRepoPackage('barback'); | 302 builder.serveRealPackage('barback'); |
303 | 303 |
304 builder.serve("foo", "1.2.3", | 304 builder.serve("foo", "1.2.3", |
305 deps: {'barback': 'any'}, | 305 deps: {'barback': 'any'}, |
306 pubspec: {'transformers': ['foo']}, | 306 pubspec: {'transformers': ['foo']}, |
307 contents: [ | 307 contents: [ |
308 d.dir("lib", [ | 308 d.dir("lib", [ |
309 d.file("transformer.dart", replaceTransformer("Hello", "Goodbye")), | 309 d.file("transformer.dart", replaceTransformer("Hello", "Goodbye")), |
310 d.file("foo.dart", "final message = 'Hello!';") | 310 d.file("foo.dart", "final message = 'Hello!';") |
311 ]) | 311 ]) |
312 ]); | 312 ]); |
(...skipping 20 matching lines...) Expand all Loading... |
333 ]).create(); | 333 ]).create(); |
334 | 334 |
335 var pub = pubRun(args: ["bin/script"]); | 335 var pub = pubRun(args: ["bin/script"]); |
336 pub.stdout.expect("Hello!"); | 336 pub.stdout.expect("Hello!"); |
337 pub.shouldExit(); | 337 pub.shouldExit(); |
338 }); | 338 }); |
339 | 339 |
340 // Regression test for issue 21087. | 340 // Regression test for issue 21087. |
341 integration("hasInput works for static packages", () { | 341 integration("hasInput works for static packages", () { |
342 servePackages((builder) { | 342 servePackages((builder) { |
343 builder.serveRepoPackage('barback'); | 343 builder.serveRealPackage('barback'); |
344 | 344 |
345 builder.serve("foo", "1.2.3", | 345 builder.serve("foo", "1.2.3", |
346 deps: {'barback': 'any'}, | 346 deps: {'barback': 'any'}, |
347 pubspec: {'transformers': ['foo']}, | 347 pubspec: {'transformers': ['foo']}, |
348 contents: [ | 348 contents: [ |
349 d.dir("lib", [ | 349 d.dir("lib", [ |
350 d.file("transformer.dart", replaceTransformer("Hello", "Goodbye")), | 350 d.file("transformer.dart", replaceTransformer("Hello", "Goodbye")), |
351 d.file("foo.dart", "void main() => print('Hello!');") | 351 d.file("foo.dart", "void main() => print('Hello!');") |
352 ]) | 352 ]) |
353 ]); | 353 ]); |
(...skipping 18 matching lines...) Expand all Loading... |
372 pubServe(); | 372 pubServe(); |
373 requestShouldSucceed("foo.txt", | 373 requestShouldSucceed("foo.txt", |
374 "lib/foo.dart: true, lib/does/not/exist.dart: false"); | 374 "lib/foo.dart: true, lib/does/not/exist.dart: false"); |
375 endPubServe(); | 375 endPubServe(); |
376 }); | 376 }); |
377 | 377 |
378 // Regression test for issue 21810. | 378 // Regression test for issue 21810. |
379 integration("decaches when the dependency is updated to something " | 379 integration("decaches when the dependency is updated to something " |
380 "untransformed", () { | 380 "untransformed", () { |
381 servePackages((builder) { | 381 servePackages((builder) { |
382 builder.serveRepoPackage('barback'); | 382 builder.serveRealPackage('barback'); |
383 | 383 |
384 builder.serve("foo", "1.2.3", | 384 builder.serve("foo", "1.2.3", |
385 deps: {'barback': 'any'}, | 385 deps: {'barback': 'any'}, |
386 pubspec: {'transformers': ['foo']}, | 386 pubspec: {'transformers': ['foo']}, |
387 contents: [ | 387 contents: [ |
388 d.dir("lib", [ | 388 d.dir("lib", [ |
389 d.file("transformer.dart", replaceTransformer("Hello", "Goodbye")), | 389 d.file("transformer.dart", replaceTransformer("Hello", "Goodbye")), |
390 d.file("foo.dart", "final message = 'Hello!';") | 390 d.file("foo.dart", "final message = 'Hello!';") |
391 ]) | 391 ]) |
392 ]); | 392 ]); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
435 Future apply(Transform transform) { | 435 Future apply(Transform transform) { |
436 return transform.primaryInput.readAsString().then((contents) { | 436 return transform.primaryInput.readAsString().then((contents) { |
437 transform.addOutput(new Asset.fromString( | 437 transform.addOutput(new Asset.fromString( |
438 transform.primaryInput.id, | 438 transform.primaryInput.id, |
439 contents.replaceAll("$input", "$output"))); | 439 contents.replaceAll("$input", "$output"))); |
440 }); | 440 }); |
441 } | 441 } |
442 } | 442 } |
443 """; | 443 """; |
444 } | 444 } |
OLD | NEW |