OLD | NEW |
(Empty) | |
| 1 library pub_tests; |
| 2 import 'package:scheduled_test/scheduled_test.dart'; |
| 3 import '../descriptor.dart' as d; |
| 4 import '../test_pub.dart'; |
| 5 import '../serve/utils.dart'; |
| 6 void setUp() { |
| 7 servePackages((builder) { |
| 8 builder.serveRepoPackage('barback'); |
| 9 builder.serve("foo", "1.2.3", deps: { |
| 10 'barback': 'any' |
| 11 }, |
| 12 contents: [ |
| 13 d.dir( |
| 14 "lib", |
| 15 [d.file("transformer.dart", replaceTransformer("Hello", "Goodbye
"))])]); |
| 16 builder.serve("bar", "1.2.3", deps: { |
| 17 'barback': 'any' |
| 18 }, |
| 19 contents: [ |
| 20 d.dir( |
| 21 "lib", |
| 22 [d.file("transformer.dart", replaceTransformer("Goodbye", "See y
a"))])]); |
| 23 }); |
| 24 d.dir(appPath, [d.pubspec({ |
| 25 "name": "myapp", |
| 26 "dependencies": { |
| 27 "foo": "1.2.3", |
| 28 "bar": "1.2.3" |
| 29 }, |
| 30 "transformers": ["foo"] |
| 31 }), |
| 32 d.dir("bin", [d.file("myapp.dart", "main() => print('Hello!');")])]).cre
ate(); |
| 33 pubGet(); |
| 34 } |
| 35 main() { |
| 36 initConfig(); |
| 37 integration("caches a transformer snapshot", () { |
| 38 setUp(); |
| 39 var process = pubRun(args: ['myapp']); |
| 40 process.stdout.expect("Goodbye!"); |
| 41 process.shouldExit(); |
| 42 d.dir( |
| 43 appPath, |
| 44 [ |
| 45 d.dir( |
| 46 ".pub/transformers", |
| 47 [ |
| 48 d.file("manifest.txt", "0.1.2+3\nfoo"), |
| 49 d.matcherFile("transformers.snapshot", isNot(isEmpty))])]).v
alidate(); |
| 50 process = pubRun(args: ['myapp']); |
| 51 process.stdout.expect("Goodbye!"); |
| 52 process.shouldExit(); |
| 53 }); |
| 54 integration("recaches if the SDK version is out-of-date", () { |
| 55 setUp(); |
| 56 d.dir( |
| 57 appPath, |
| 58 [ |
| 59 d.dir( |
| 60 ".pub/transformers", |
| 61 [ |
| 62 d.file("manifest.txt", "0.0.1\nfoo"), |
| 63 d.file("transformers.snapshot", "junk")])]).create(); |
| 64 var process = pubRun(args: ['myapp']); |
| 65 process.stdout.expect("Goodbye!"); |
| 66 process.shouldExit(); |
| 67 d.dir( |
| 68 appPath, |
| 69 [ |
| 70 d.dir( |
| 71 ".pub/transformers", |
| 72 [ |
| 73 d.file("manifest.txt", "0.1.2+3\nfoo"), |
| 74 d.matcherFile("transformers.snapshot", isNot(isEmpty))])]).v
alidate(); |
| 75 }); |
| 76 integration("recaches if the transformers change", () { |
| 77 setUp(); |
| 78 var process = pubRun(args: ['myapp']); |
| 79 process.stdout.expect("Goodbye!"); |
| 80 process.shouldExit(); |
| 81 d.dir( |
| 82 appPath, |
| 83 [ |
| 84 d.dir( |
| 85 ".pub/transformers", |
| 86 [ |
| 87 d.file("manifest.txt", "0.1.2+3\nfoo"), |
| 88 d.matcherFile("transformers.snapshot", isNot(isEmpty))])]).v
alidate(); |
| 89 d.dir(appPath, [d.pubspec({ |
| 90 "name": "myapp", |
| 91 "dependencies": { |
| 92 "foo": "1.2.3", |
| 93 "bar": "1.2.3" |
| 94 }, |
| 95 "transformers": ["foo", "bar"] |
| 96 }), |
| 97 d.dir("bin", [d.file("myapp.dart", "main() => print('Hello!');")])]).c
reate(); |
| 98 process = pubRun(args: ['myapp']); |
| 99 process.stdout.expect("See ya!"); |
| 100 process.shouldExit(); |
| 101 d.dir( |
| 102 appPath, |
| 103 [ |
| 104 d.dir( |
| 105 ".pub/transformers", |
| 106 [ |
| 107 d.file("manifest.txt", "0.1.2+3\nbar,foo"), |
| 108 d.matcherFile("transformers.snapshot", isNot(isEmpty))])]).v
alidate(); |
| 109 }); |
| 110 integration("recaches if the transformer version changes", () { |
| 111 setUp(); |
| 112 var process = pubRun(args: ['myapp']); |
| 113 process.stdout.expect("Goodbye!"); |
| 114 process.shouldExit(); |
| 115 d.dir( |
| 116 appPath, |
| 117 [ |
| 118 d.dir( |
| 119 ".pub/transformers", |
| 120 [ |
| 121 d.file("manifest.txt", "0.1.2+3\nfoo"), |
| 122 d.matcherFile("transformers.snapshot", isNot(isEmpty))])]).v
alidate(); |
| 123 servePackages((builder) { |
| 124 builder.serve("foo", "2.0.0", deps: { |
| 125 'barback': 'any' |
| 126 }, |
| 127 contents: [ |
| 128 d.dir( |
| 129 "lib", |
| 130 [d.file("transformer.dart", replaceTransformer("Hello", "New")
)])]); |
| 131 }); |
| 132 d.dir(appPath, [d.pubspec({ |
| 133 "name": "myapp", |
| 134 "dependencies": { |
| 135 "foo": "any" |
| 136 }, |
| 137 "transformers": ["foo"] |
| 138 })]).create(); |
| 139 pubUpgrade(); |
| 140 process = pubRun(args: ['myapp']); |
| 141 process.stdout.expect("New!"); |
| 142 process.shouldExit(); |
| 143 d.dir( |
| 144 appPath, |
| 145 [ |
| 146 d.dir( |
| 147 ".pub/transformers", |
| 148 [ |
| 149 d.file("manifest.txt", "0.1.2+3\nfoo"), |
| 150 d.matcherFile("transformers.snapshot", isNot(isEmpty))])]).v
alidate(); |
| 151 }); |
| 152 } |
| 153 String replaceTransformer(String input, String output) { |
| 154 return """ |
| 155 import 'dart:async'; |
| 156 |
| 157 import 'package:barback/barback.dart'; |
| 158 |
| 159 class ReplaceTransformer extends Transformer { |
| 160 ReplaceTransformer.asPlugin(); |
| 161 |
| 162 String get allowedExtensions => '.dart'; |
| 163 |
| 164 Future apply(Transform transform) { |
| 165 return transform.primaryInput.readAsString().then((contents) { |
| 166 transform.addOutput(new Asset.fromString( |
| 167 transform.primaryInput.id, |
| 168 contents.replaceAll("$input", "$output"))); |
| 169 }); |
| 170 } |
| 171 } |
| 172 """; |
| 173 } |
OLD | NEW |