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

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

Issue 23311006: Add the ability to dynamically modify transforms to barback. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Code review changes. Created 7 years, 4 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
« no previous file with comments | « pkg/barback/lib/src/utils.dart ('k') | pkg/barback/test/package_graph/transform_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // BSD-style license that can be found in the LICENSE file.
4
5 library barback.test.package_graph.transform_test;
6
7 import 'package:barback/src/utils.dart';
8 import 'package:scheduled_test/scheduled_test.dart';
9
10 import '../utils.dart';
11
12 main() {
13 initConfig();
14 test("a new transformer is applied to a matching asset", () {
15 initGraph(["app|foo.blub"]);
16
17 updateSources(["app|foo.blub"]);
18 expectAsset("app|foo.blub", "foo");
19 buildShouldSucceed();
20
21 updateTransformers("app", [[new RewriteTransformer("blub", "blab")]]);
22 expectAsset("app|foo.blab", "foo.blab");
23 expectNoAsset("app|foo.blub");
24 buildShouldSucceed();
25 });
26
27 test("a new transformer is not applied to a non-matching asset", () {
28 initGraph(["app|foo.blub"]);
29
30 updateSources(["app|foo.blub"]);
31 expectAsset("app|foo.blub", "foo");
32 buildShouldSucceed();
33
34 updateTransformers("app", [[new RewriteTransformer("zip", "zap")]]);
35 expectAsset("app|foo.blub", "foo");
36 expectNoAsset("app|foo.zap");
37 buildShouldSucceed();
38 });
39
40 test("updateTransformers doesn't re-run an old transformer", () {
41 var rewrite = new RewriteTransformer("blub", "blab");
42 initGraph(["app|foo.blub"], {"app": [[rewrite]]});
43
44 updateSources(["app|foo.blub"]);
45 expectAsset("app|foo.blab", "foo.blab");
46 expectNoAsset("app|foo.blub");
47 buildShouldSucceed();
48
49 updateTransformers("app", [[rewrite]]);
50 expectAsset("app|foo.blab", "foo.blab");
51 expectNoAsset("app|foo.blub");
52 buildShouldSucceed();
53
54 expect(rewrite.numRuns, completion(equals(1)));
55 });
56
57 test("updateTransformers re-runs old transformers in a new phase", () {
58 var rewrite1 = new RewriteTransformer("txt", "blub");
59 var rewrite2 = new RewriteTransformer("blub", "blab");
60 initGraph(["app|foo.txt"], {"app": [[rewrite1], [rewrite2]]});
61
62 updateSources(["app|foo.txt"]);
63 expectAsset("app|foo.blab", "foo.blub.blab");
64 expectNoAsset("app|foo.blub");
65 buildShouldSucceed();
66
67 updateTransformers("app", [[rewrite2], [rewrite1]]);
68 expectAsset("app|foo.blub", "foo.blub");
69 expectNoAsset("app|foo.blab");
70 buildShouldSucceed();
71 });
72
73 test("updateTransformers re-runs an old transformer when a previous phase "
74 "changes", () {
75 var rewrite = new RewriteTransformer("txt", "out");
76 initGraph(["app|foo.txt"], {"app": [[], [rewrite]]});
77
78 updateSources(["app|foo.txt"]);
79 expectAsset("app|foo.out", "foo.out");
80 buildShouldSucceed();
81
82 updateTransformers("app", [
83 [new RewriteTransformer("txt", "txt")],
84 [rewrite]
85 ]);
86 expectAsset("app|foo.out", "foo.txt.out");
87 buildShouldSucceed();
88 });
89
90 test("a removed transformer is no longer applied", () {
91 initGraph(["app|foo.blub"], {"app": [
92 [new RewriteTransformer("blub", "blab")]
93 ]});
94
95 updateSources(["app|foo.blub"]);
96 expectAsset("app|foo.blab", "foo.blab");
97 expectNoAsset("app|foo.blub");
98 buildShouldSucceed();
99
100 updateTransformers("app", []);
101 expectAsset("app|foo.blub", "foo");
102 expectNoAsset("app|foo.blab");
103 buildShouldSucceed();
104 });
105
106 test("a new transformer is pipelined", () {
107 var rewrite1 = new RewriteTransformer("source", "phase1");
108 var rewrite3 = new RewriteTransformer("phase2", "phase3");
109 initGraph(["app|foo.source"], {"app": [
110 [rewrite1],
111 [rewrite3]
112 ]});
113
114 updateSources(["app|foo.source"]);
115 expectNoAsset("app|foo.phase3");
116 buildShouldSucceed();
117
118 updateTransformers("app", [
119 [rewrite1],
120 [new RewriteTransformer("phase1", "phase2")],
121 [rewrite3]
122 ]);
123 expectAsset("app|foo.phase3", "foo.phase1.phase2.phase3");
124 buildShouldSucceed();
125 });
126
127 test("a removed transformer is un-pipelined", () {
128 var rewrite1 = new RewriteTransformer("source", "phase1");
129 var rewrite3 = new RewriteTransformer("phase2", "phase3");
130 initGraph(["app|foo.source"], {"app": [
131 [rewrite1],
132 [new RewriteTransformer("phase1", "phase2")],
133 [rewrite3]
134 ]});
135
136 updateSources(["app|foo.source"]);
137 expectAsset("app|foo.phase3", "foo.phase1.phase2.phase3");
138 buildShouldSucceed();
139
140 updateTransformers("app", [[rewrite1], [rewrite3]]);
141 expectNoAsset("app|foo.phase3");
142 buildShouldSucceed();
143 });
144
145 test("a transformer is removed during isPrimary", () {
146 var rewrite = new RewriteTransformer("blub", "blab");
147 initGraph(["app|foo.blub"], {"app": [[rewrite]]});
148
149 rewrite.pauseIsPrimary("app|foo.blub");
150 updateSources(["app|foo.blub"]);
151 // Ensure we're waiting on [rewrite.isPrimary].
152 schedule(pumpEventQueue);
153
154 updateTransformers("app", []);
155 rewrite.resumeIsPrimary("app|foo.blub");
156 expectAsset("app|foo.blub", "foo");
157 expectNoAsset("app|foo.blab");
158 buildShouldSucceed();
159 });
160
161 test("a transformer is removed during apply", () {
162 var rewrite = new RewriteTransformer("blub", "blab");
163 initGraph(["app|foo.blub"], {"app": [[rewrite]]});
164
165 rewrite.pauseApply();
166 updateSources(["app|foo.blub"]);
167 // Ensure we're waiting on [rewrite.apply].
168 schedule(pumpEventQueue);
169
170 updateTransformers("app", []);
171 rewrite.resumeApply();
172 expectAsset("app|foo.blub", "foo");
173 expectNoAsset("app|foo.blab");
174 buildShouldSucceed();
175 });
176
177 test("a new transformer can see pass-through assets", () {
178 var rewrite = new RewriteTransformer("zip", "zap");
179 initGraph(["app|foo.blub"], {"app": [[rewrite]]});
180
181 updateSources(["app|foo.blub"]);
182 buildShouldSucceed();
183
184 updateTransformers("app", [
185 [rewrite],
186 [new RewriteTransformer("blub", "blab")]
187 ]);
188 expectAsset("app|foo.blab", "foo.blab");
189 expectNoAsset("app|foo.blub");
190 buildShouldSucceed();
191 });
192
193 test("a cross-package transform sees a new transformer in a new phase", () {
194 // TODO(nweiz): make this work.
195 return;
196
197 var rewrite = new RewriteTransformer("inc", "inc");
198 initGraph({
199 "pkg1|foo.txt": "pkg2|foo.inc",
200 "pkg2|foo.inc": "foo"
201 }, {
202 "pkg1": [[new ManyToOneTransformer("txt")]],
203 "pkg2": [[rewrite]]
204 });
205
206 updateSources(["pkg1|foo.txt", "pkg2|foo.inc"]);
207 expectAsset("pkg1|foo.out", "foo");
208 buildShouldSucceed();
209
210 updateTransformers("pkg2", [
211 [rewrite],
212 [new RewriteTransformer("inc", "inc")]
213 ]);
214 expectAsset("pkg1|foo.out", "foo.inc.inc");
215 buildShouldSucceed();
216 });
217
218 test("a cross-package transform doesn't see a removed transformer in a "
219 "removed phase", () {
220 var rewrite = new RewriteTransformer("inc", "inc");
221 initGraph({
222 "pkg1|foo.txt": "pkg2|foo.inc",
223 "pkg2|foo.inc": "foo"
224 }, {
225 "pkg1": [[new ManyToOneTransformer("txt")]],
226 "pkg2": [
227 [rewrite],
228 [new RewriteTransformer("inc", "inc")]
229 ]
230 });
231
232 updateSources(["pkg1|foo.txt", "pkg2|foo.inc"]);
233 expectAsset("pkg1|foo.out", "foo.inc.inc");
234 buildShouldSucceed();
235
236 updateTransformers("pkg2", [[rewrite]]);
237 expectAsset("pkg1|foo.out", "foo.inc");
238 buildShouldSucceed();
239 });
240 }
OLDNEW
« no previous file with comments | « pkg/barback/lib/src/utils.dart ('k') | pkg/barback/test/package_graph/transform_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698