| 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 |