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

Side by Side Diff: pkg/barback/test/package_graph/add_remove_transform_test.dart

Issue 25376003: Add support for transformer clusters to barback. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Expose the Operator class. Created 7 years, 2 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 barback.test.package_graph.transform_test; 5 library barback.test.package_graph.transform_test;
6 6
7 import 'package:barback/src/utils.dart'; 7 import 'package:barback/src/utils.dart';
8 import 'package:scheduled_test/scheduled_test.dart'; 8 import 'package:scheduled_test/scheduled_test.dart';
9 9
10 import '../utils.dart'; 10 import '../utils.dart';
11 11
12 main() { 12 main() {
13 initConfig(); 13 initConfig();
14 test("a new transformer is applied to a matching asset", () { 14 test("a new transformer is applied to a matching asset", () {
15 initGraph(["app|foo.blub"]); 15 initGraph(["app|foo.blub"]);
16 16
17 updateSources(["app|foo.blub"]); 17 updateSources(["app|foo.blub"]);
18 expectAsset("app|foo.blub", "foo"); 18 expectAsset("app|foo.blub", "foo");
19 buildShouldSucceed(); 19 buildShouldSucceed();
20 20
21 updateTransformers("app", [[new RewriteTransformer("blub", "blab")]]); 21 updateOperators("app", [[new RewriteTransformer("blub", "blab")]]);
22 expectAsset("app|foo.blab", "foo.blab"); 22 expectAsset("app|foo.blab", "foo.blab");
23 expectNoAsset("app|foo.blub"); 23 expectNoAsset("app|foo.blub");
24 buildShouldSucceed(); 24 buildShouldSucceed();
25 }); 25 });
26 26
27 test("a new transformer is not applied to a non-matching asset", () { 27 test("a new transformer is not applied to a non-matching asset", () {
28 initGraph(["app|foo.blub"]); 28 initGraph(["app|foo.blub"]);
29 29
30 updateSources(["app|foo.blub"]); 30 updateSources(["app|foo.blub"]);
31 expectAsset("app|foo.blub", "foo"); 31 expectAsset("app|foo.blub", "foo");
32 buildShouldSucceed(); 32 buildShouldSucceed();
33 33
34 updateTransformers("app", [[new RewriteTransformer("zip", "zap")]]); 34 updateOperators("app", [[new RewriteTransformer("zip", "zap")]]);
35 expectAsset("app|foo.blub", "foo"); 35 expectAsset("app|foo.blub", "foo");
36 expectNoAsset("app|foo.zap"); 36 expectNoAsset("app|foo.zap");
37 buildShouldSucceed(); 37 buildShouldSucceed();
38 }); 38 });
39 39
40 test("updateTransformers doesn't re-run an old transformer", () { 40 test("updateOperators doesn't re-run an old transformer", () {
41 var rewrite = new RewriteTransformer("blub", "blab"); 41 var rewrite = new RewriteTransformer("blub", "blab");
42 initGraph(["app|foo.blub"], {"app": [[rewrite]]}); 42 initGraph(["app|foo.blub"], {"app": [[rewrite]]});
43 43
44 updateSources(["app|foo.blub"]); 44 updateSources(["app|foo.blub"]);
45 expectAsset("app|foo.blab", "foo.blab"); 45 expectAsset("app|foo.blab", "foo.blab");
46 expectNoAsset("app|foo.blub"); 46 expectNoAsset("app|foo.blub");
47 buildShouldSucceed(); 47 buildShouldSucceed();
48 48
49 updateTransformers("app", [[rewrite]]); 49 updateOperators("app", [[rewrite]]);
50 expectAsset("app|foo.blab", "foo.blab"); 50 expectAsset("app|foo.blab", "foo.blab");
51 expectNoAsset("app|foo.blub"); 51 expectNoAsset("app|foo.blub");
52 buildShouldSucceed(); 52 buildShouldSucceed();
53 53
54 expect(rewrite.numRuns, completion(equals(1))); 54 expect(rewrite.numRuns, completion(equals(1)));
55 }); 55 });
56 56
57 test("updateTransformers re-runs old transformers in a new phase", () { 57 test("updateOperators re-runs old transformers in a new phase", () {
58 var rewrite1 = new RewriteTransformer("txt", "blub"); 58 var rewrite1 = new RewriteTransformer("txt", "blub");
59 var rewrite2 = new RewriteTransformer("blub", "blab"); 59 var rewrite2 = new RewriteTransformer("blub", "blab");
60 initGraph(["app|foo.txt"], {"app": [[rewrite1], [rewrite2]]}); 60 initGraph(["app|foo.txt"], {"app": [[rewrite1], [rewrite2]]});
61 61
62 updateSources(["app|foo.txt"]); 62 updateSources(["app|foo.txt"]);
63 expectAsset("app|foo.blab", "foo.blub.blab"); 63 expectAsset("app|foo.blab", "foo.blub.blab");
64 expectNoAsset("app|foo.blub"); 64 expectNoAsset("app|foo.blub");
65 buildShouldSucceed(); 65 buildShouldSucceed();
66 66
67 updateTransformers("app", [[rewrite2], [rewrite1]]); 67 updateOperators("app", [[rewrite2], [rewrite1]]);
68 expectAsset("app|foo.blub", "foo.blub"); 68 expectAsset("app|foo.blub", "foo.blub");
69 expectNoAsset("app|foo.blab"); 69 expectNoAsset("app|foo.blab");
70 buildShouldSucceed(); 70 buildShouldSucceed();
71 }); 71 });
72 72
73 test("updateTransformers re-runs an old transformer when a previous phase " 73 test("updateOperators re-runs an old transformer when a previous phase "
74 "changes", () { 74 "changes", () {
75 var rewrite = new RewriteTransformer("txt", "out"); 75 var rewrite = new RewriteTransformer("txt", "out");
76 initGraph(["app|foo.txt"], {"app": [[], [rewrite]]}); 76 initGraph(["app|foo.txt"], {"app": [[], [rewrite]]});
77 77
78 updateSources(["app|foo.txt"]); 78 updateSources(["app|foo.txt"]);
79 expectAsset("app|foo.out", "foo.out"); 79 expectAsset("app|foo.out", "foo.out");
80 buildShouldSucceed(); 80 buildShouldSucceed();
81 81
82 updateTransformers("app", [ 82 updateOperators("app", [
83 [new RewriteTransformer("txt", "txt")], 83 [new RewriteTransformer("txt", "txt")],
84 [rewrite] 84 [rewrite]
85 ]); 85 ]);
86 expectAsset("app|foo.out", "foo.txt.out"); 86 expectAsset("app|foo.out", "foo.txt.out");
87 buildShouldSucceed(); 87 buildShouldSucceed();
88 }); 88 });
89 89
90 test("a removed transformer is no longer applied", () { 90 test("a removed transformer is no longer applied", () {
91 initGraph(["app|foo.blub"], {"app": [ 91 initGraph(["app|foo.blub"], {"app": [
92 [new RewriteTransformer("blub", "blab")] 92 [new RewriteTransformer("blub", "blab")]
93 ]}); 93 ]});
94 94
95 updateSources(["app|foo.blub"]); 95 updateSources(["app|foo.blub"]);
96 expectAsset("app|foo.blab", "foo.blab"); 96 expectAsset("app|foo.blab", "foo.blab");
97 expectNoAsset("app|foo.blub"); 97 expectNoAsset("app|foo.blub");
98 buildShouldSucceed(); 98 buildShouldSucceed();
99 99
100 updateTransformers("app", []); 100 updateOperators("app", []);
101 expectAsset("app|foo.blub", "foo"); 101 expectAsset("app|foo.blub", "foo");
102 expectNoAsset("app|foo.blab"); 102 expectNoAsset("app|foo.blab");
103 buildShouldSucceed(); 103 buildShouldSucceed();
104 }); 104 });
105 105
106 test("a new transformer is pipelined", () { 106 test("a new transformer is pipelined", () {
107 var rewrite1 = new RewriteTransformer("source", "phase1"); 107 var rewrite1 = new RewriteTransformer("source", "phase1");
108 var rewrite3 = new RewriteTransformer("phase2", "phase3"); 108 var rewrite3 = new RewriteTransformer("phase2", "phase3");
109 initGraph(["app|foo.source"], {"app": [ 109 initGraph(["app|foo.source"], {"app": [
110 [rewrite1], 110 [rewrite1],
111 [rewrite3] 111 [rewrite3]
112 ]}); 112 ]});
113 113
114 updateSources(["app|foo.source"]); 114 updateSources(["app|foo.source"]);
115 expectNoAsset("app|foo.phase3"); 115 expectNoAsset("app|foo.phase3");
116 buildShouldSucceed(); 116 buildShouldSucceed();
117 117
118 updateTransformers("app", [ 118 updateOperators("app", [
119 [rewrite1], 119 [rewrite1],
120 [new RewriteTransformer("phase1", "phase2")], 120 [new RewriteTransformer("phase1", "phase2")],
121 [rewrite3] 121 [rewrite3]
122 ]); 122 ]);
123 expectAsset("app|foo.phase3", "foo.phase1.phase2.phase3"); 123 expectAsset("app|foo.phase3", "foo.phase1.phase2.phase3");
124 buildShouldSucceed(); 124 buildShouldSucceed();
125 }); 125 });
126 126
127 test("a removed transformer is un-pipelined", () { 127 test("a removed transformer is un-pipelined", () {
128 var rewrite1 = new RewriteTransformer("source", "phase1"); 128 var rewrite1 = new RewriteTransformer("source", "phase1");
129 var rewrite3 = new RewriteTransformer("phase2", "phase3"); 129 var rewrite3 = new RewriteTransformer("phase2", "phase3");
130 initGraph(["app|foo.source"], {"app": [ 130 initGraph(["app|foo.source"], {"app": [
131 [rewrite1], 131 [rewrite1],
132 [new RewriteTransformer("phase1", "phase2")], 132 [new RewriteTransformer("phase1", "phase2")],
133 [rewrite3] 133 [rewrite3]
134 ]}); 134 ]});
135 135
136 updateSources(["app|foo.source"]); 136 updateSources(["app|foo.source"]);
137 expectAsset("app|foo.phase3", "foo.phase1.phase2.phase3"); 137 expectAsset("app|foo.phase3", "foo.phase1.phase2.phase3");
138 buildShouldSucceed(); 138 buildShouldSucceed();
139 139
140 updateTransformers("app", [[rewrite1], [rewrite3]]); 140 updateOperators("app", [[rewrite1], [rewrite3]]);
141 expectNoAsset("app|foo.phase3"); 141 expectNoAsset("app|foo.phase3");
142 buildShouldSucceed(); 142 buildShouldSucceed();
143 }); 143 });
144 144
145 test("a transformer is removed during isPrimary", () { 145 test("a transformer is removed during isPrimary", () {
146 var rewrite = new RewriteTransformer("blub", "blab"); 146 var rewrite = new RewriteTransformer("blub", "blab");
147 initGraph(["app|foo.blub"], {"app": [[rewrite]]}); 147 initGraph(["app|foo.blub"], {"app": [[rewrite]]});
148 148
149 rewrite.pauseIsPrimary("app|foo.blub"); 149 rewrite.pauseIsPrimary("app|foo.blub");
150 updateSources(["app|foo.blub"]); 150 updateSources(["app|foo.blub"]);
151 // Ensure we're waiting on [rewrite.isPrimary]. 151 // Ensure we're waiting on [rewrite.isPrimary].
152 schedule(pumpEventQueue); 152 schedule(pumpEventQueue);
153 153
154 updateTransformers("app", []); 154 updateOperators("app", []);
155 rewrite.resumeIsPrimary("app|foo.blub"); 155 rewrite.resumeIsPrimary("app|foo.blub");
156 expectAsset("app|foo.blub", "foo"); 156 expectAsset("app|foo.blub", "foo");
157 expectNoAsset("app|foo.blab"); 157 expectNoAsset("app|foo.blab");
158 buildShouldSucceed(); 158 buildShouldSucceed();
159 }); 159 });
160 160
161 test("a transformer is removed during apply", () { 161 test("a transformer is removed during apply", () {
162 var rewrite = new RewriteTransformer("blub", "blab"); 162 var rewrite = new RewriteTransformer("blub", "blab");
163 initGraph(["app|foo.blub"], {"app": [[rewrite]]}); 163 initGraph(["app|foo.blub"], {"app": [[rewrite]]});
164 164
165 rewrite.pauseApply(); 165 rewrite.pauseApply();
166 updateSources(["app|foo.blub"]); 166 updateSources(["app|foo.blub"]);
167 // Ensure we're waiting on [rewrite.apply]. 167 // Ensure we're waiting on [rewrite.apply].
168 schedule(pumpEventQueue); 168 schedule(pumpEventQueue);
169 169
170 updateTransformers("app", []); 170 updateOperators("app", []);
171 rewrite.resumeApply(); 171 rewrite.resumeApply();
172 expectAsset("app|foo.blub", "foo"); 172 expectAsset("app|foo.blub", "foo");
173 expectNoAsset("app|foo.blab"); 173 expectNoAsset("app|foo.blab");
174 buildShouldSucceed(); 174 buildShouldSucceed();
175 }); 175 });
176 176
177 test("a transformer is added to an existing phase during isPrimary", () { 177 test("a transformer is added to an existing phase during isPrimary", () {
178 var rewrite = new RewriteTransformer("blub", "blab"); 178 var rewrite = new RewriteTransformer("blub", "blab");
179 initGraph(["app|foo.blub", "app|bar.blib"], {"app": [[rewrite]]}); 179 initGraph(["app|foo.blub", "app|bar.blib"], {"app": [[rewrite]]});
180 180
181 rewrite.pauseIsPrimary("app|foo.blub"); 181 rewrite.pauseIsPrimary("app|foo.blub");
182 updateSources(["app|foo.blub", "app|bar.blib"]); 182 updateSources(["app|foo.blub", "app|bar.blib"]);
183 // Ensure we're waiting on [rewrite.isPrimary]. 183 // Ensure we're waiting on [rewrite.isPrimary].
184 schedule(pumpEventQueue); 184 schedule(pumpEventQueue);
185 185
186 updateTransformers("app", [ 186 updateOperators("app", [
187 [rewrite, new RewriteTransformer("blib", "blob")] 187 [rewrite, new RewriteTransformer("blib", "blob")]
188 ]); 188 ]);
189 rewrite.resumeIsPrimary("app|foo.blub"); 189 rewrite.resumeIsPrimary("app|foo.blub");
190 expectAsset("app|foo.blab", "foo.blab"); 190 expectAsset("app|foo.blab", "foo.blab");
191 expectAsset("app|bar.blob", "bar.blob"); 191 expectAsset("app|bar.blob", "bar.blob");
192 buildShouldSucceed(); 192 buildShouldSucceed();
193 }); 193 });
194 194
195 test("a new transformer can see pass-through assets", () { 195 test("a new transformer can see pass-through assets", () {
196 var rewrite = new RewriteTransformer("zip", "zap"); 196 var rewrite = new RewriteTransformer("zip", "zap");
197 initGraph(["app|foo.blub"], {"app": [[rewrite]]}); 197 initGraph(["app|foo.blub"], {"app": [[rewrite]]});
198 198
199 updateSources(["app|foo.blub"]); 199 updateSources(["app|foo.blub"]);
200 buildShouldSucceed(); 200 buildShouldSucceed();
201 201
202 updateTransformers("app", [ 202 updateOperators("app", [
203 [rewrite], 203 [rewrite],
204 [new RewriteTransformer("blub", "blab")] 204 [new RewriteTransformer("blub", "blab")]
205 ]); 205 ]);
206 expectAsset("app|foo.blab", "foo.blab"); 206 expectAsset("app|foo.blab", "foo.blab");
207 expectNoAsset("app|foo.blub"); 207 expectNoAsset("app|foo.blub");
208 buildShouldSucceed(); 208 buildShouldSucceed();
209 }); 209 });
210 210
211 test("a cross-package transform sees a new transformer in a new phase", () { 211 test("a cross-package transform sees a new transformer in a new phase", () {
212 var rewrite = new RewriteTransformer("inc", "inc"); 212 var rewrite = new RewriteTransformer("inc", "inc");
213 initGraph({ 213 initGraph({
214 "pkg1|foo.txt": "pkg2|foo.inc", 214 "pkg1|foo.txt": "pkg2|foo.inc",
215 "pkg2|foo.inc": "foo" 215 "pkg2|foo.inc": "foo"
216 }, { 216 }, {
217 "pkg1": [[new ManyToOneTransformer("txt")]], 217 "pkg1": [[new ManyToOneTransformer("txt")]],
218 "pkg2": [[rewrite]] 218 "pkg2": [[rewrite]]
219 }); 219 });
220 220
221 updateSources(["pkg1|foo.txt", "pkg2|foo.inc"]); 221 updateSources(["pkg1|foo.txt", "pkg2|foo.inc"]);
222 expectAsset("pkg1|foo.out", "foo.inc"); 222 expectAsset("pkg1|foo.out", "foo.inc");
223 buildShouldSucceed(); 223 buildShouldSucceed();
224 224
225 updateTransformers("pkg2", [ 225 updateOperators("pkg2", [
226 [rewrite], 226 [rewrite],
227 [new RewriteTransformer("inc", "inc")] 227 [new RewriteTransformer("inc", "inc")]
228 ]); 228 ]);
229 expectAsset("pkg1|foo.out", "foo.inc.inc"); 229 expectAsset("pkg1|foo.out", "foo.inc.inc");
230 buildShouldSucceed(); 230 buildShouldSucceed();
231 }); 231 });
232 232
233 test("a cross-package transform doesn't see a removed transformer in a " 233 test("a cross-package transform doesn't see a removed transformer in a "
234 "removed phase", () { 234 "removed phase", () {
235 var rewrite = new RewriteTransformer("inc", "inc"); 235 var rewrite = new RewriteTransformer("inc", "inc");
236 initGraph({ 236 initGraph({
237 "pkg1|foo.txt": "pkg2|foo.inc", 237 "pkg1|foo.txt": "pkg2|foo.inc",
238 "pkg2|foo.inc": "foo" 238 "pkg2|foo.inc": "foo"
239 }, { 239 }, {
240 "pkg1": [[new ManyToOneTransformer("txt")]], 240 "pkg1": [[new ManyToOneTransformer("txt")]],
241 "pkg2": [ 241 "pkg2": [
242 [rewrite], 242 [rewrite],
243 [new RewriteTransformer("inc", "inc")] 243 [new RewriteTransformer("inc", "inc")]
244 ] 244 ]
245 }); 245 });
246 246
247 updateSources(["pkg1|foo.txt", "pkg2|foo.inc"]); 247 updateSources(["pkg1|foo.txt", "pkg2|foo.inc"]);
248 expectAsset("pkg1|foo.out", "foo.inc.inc"); 248 expectAsset("pkg1|foo.out", "foo.inc.inc");
249 buildShouldSucceed(); 249 buildShouldSucceed();
250 250
251 updateTransformers("pkg2", [[rewrite]]); 251 updateOperators("pkg2", [[rewrite]]);
252 expectAsset("pkg1|foo.out", "foo.inc"); 252 expectAsset("pkg1|foo.out", "foo.inc");
253 buildShouldSucceed(); 253 buildShouldSucceed();
254 }); 254 });
255 255
256 // Regression test. 256 // Regression test.
257 test("a phase is added, then an input is removed and re-added", () { 257 test("a phase is added, then an input is removed and re-added", () {
258 var rewrite = new RewriteTransformer("txt", "mid"); 258 var rewrite = new RewriteTransformer("txt", "mid");
259 initGraph(["app|foo.txt"], { 259 initGraph(["app|foo.txt"], {
260 "app": [[rewrite]] 260 "app": [[rewrite]]
261 }); 261 });
262 262
263 updateSources(["app|foo.txt"]); 263 updateSources(["app|foo.txt"]);
264 expectAsset("app|foo.mid", "foo.mid"); 264 expectAsset("app|foo.mid", "foo.mid");
265 buildShouldSucceed(); 265 buildShouldSucceed();
266 266
267 updateTransformers("app", [ 267 updateOperators("app", [
268 [rewrite], 268 [rewrite],
269 [new RewriteTransformer("mid", "out")] 269 [new RewriteTransformer("mid", "out")]
270 ]); 270 ]);
271 expectAsset("app|foo.out", "foo.mid.out"); 271 expectAsset("app|foo.out", "foo.mid.out");
272 buildShouldSucceed(); 272 buildShouldSucceed();
273 273
274 removeSources(["app|foo.txt"]); 274 removeSources(["app|foo.txt"]);
275 expectNoAsset("app|foo.out"); 275 expectNoAsset("app|foo.out");
276 buildShouldSucceed(); 276 buildShouldSucceed();
277 277
278 updateSources(["app|foo.txt"]); 278 updateSources(["app|foo.txt"]);
279 expectAsset("app|foo.out", "foo.mid.out"); 279 expectAsset("app|foo.out", "foo.mid.out");
280 buildShouldSucceed(); 280 buildShouldSucceed();
281 }); 281 });
282 } 282 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698