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

Side by Side Diff: packages/barback/test/package_graph/collisions_test.dart

Issue 3014633002: Roll to pickup pool changes (Closed)
Patch Set: Created 3 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
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.source_test; 5 library barback.test.package_graph.source_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 14
15 test("errors if two transformers output the same file", () { 15 test("errors if two transformers output the same file", () {
16 initGraph(["app|foo.a"], {"app": [ 16 initGraph([
17 [ 17 "app|foo.a"
18 new RewriteTransformer("a", "b"), 18 ], {
19 new RewriteTransformer("a", "b") 19 "app": [
20 [new RewriteTransformer("a", "b"), new RewriteTransformer("a", "b")]
20 ] 21 ]
21 ]}); 22 });
22 updateSources(["app|foo.a"]); 23 updateSources(["app|foo.a"]);
23 24
24 buildShouldFail([isAssetCollisionException("app|foo.b")]); 25 buildShouldFail([isAssetCollisionException("app|foo.b")]);
25 }); 26 });
26 27
27 test("errors if a new transformer outputs the same file as an old " 28 test(
29 "errors if a new transformer outputs the same file as an old "
28 "transformer", () { 30 "transformer", () {
29 initGraph(["app|foo.a", "app|foo.b"], {"app": [ 31 initGraph([
30 [ 32 "app|foo.a",
31 new RewriteTransformer("a", "c"), 33 "app|foo.b"
32 new RewriteTransformer("b", "c") 34 ], {
35 "app": [
36 [new RewriteTransformer("a", "c"), new RewriteTransformer("b", "c")]
33 ] 37 ]
34 ]}); 38 });
35 updateSources(["app|foo.a"]); 39 updateSources(["app|foo.a"]);
36 expectAsset("app|foo.c", "foo.c"); 40 expectAsset("app|foo.c", "foo.c");
37 buildShouldSucceed(); 41 buildShouldSucceed();
38 42
39 updateSources(["app|foo.b"]); 43 updateSources(["app|foo.b"]);
40 buildShouldFail([isAssetCollisionException("app|foo.c")]); 44 buildShouldFail([isAssetCollisionException("app|foo.c")]);
41 }); 45 });
42 46
43 test("a collision returns the first-produced output", () { 47 test("a collision returns the first-produced output", () {
44 var rewrite1 = new RewriteTransformer("one", "out"); 48 var rewrite1 = new RewriteTransformer("one", "out");
45 var rewrite2 = new RewriteTransformer("two", "out"); 49 var rewrite2 = new RewriteTransformer("two", "out");
46 initGraph({ 50 initGraph({
47 "app|foo.one": "one", 51 "app|foo.one": "one",
48 "app|foo.two": "two" 52 "app|foo.two": "two"
49 }, {"app": [[rewrite1, rewrite2]]}); 53 }, {
54 "app": [
55 [rewrite1, rewrite2]
56 ]
57 });
50 58
51 rewrite1.pauseApply(); 59 rewrite1.pauseApply();
52 updateSources(["app|foo.one", "app|foo.two"]); 60 updateSources(["app|foo.one", "app|foo.two"]);
53 // Wait long enough to ensure that rewrite2 has completed. 61 // Wait long enough to ensure that rewrite2 has completed.
54 schedule(pumpEventQueue); 62 schedule(pumpEventQueue);
55 63
56 rewrite1.resumeApply(); 64 rewrite1.resumeApply();
57 expectAsset("app|foo.out", "two.out"); 65 expectAsset("app|foo.out", "two.out");
58 buildShouldFail([isAssetCollisionException("app|foo.out")]); 66 buildShouldFail([isAssetCollisionException("app|foo.out")]);
59 67
60 // Even after the collision is discovered, the first-produced output should 68 // Even after the collision is discovered, the first-produced output should
61 // be returned. 69 // be returned.
62 expectAsset("app|foo.out", "two.out"); 70 expectAsset("app|foo.out", "two.out");
63 71
64 // Even if the other output is updated more recently, the first output 72 // Even if the other output is updated more recently, the first output
65 // should continue to take precedence. 73 // should continue to take precedence.
66 updateSources(["app|foo.one"]); 74 updateSources(["app|foo.one"]);
67 expectAsset("app|foo.out", "two.out"); 75 expectAsset("app|foo.out", "two.out");
68 }); 76 });
69 77
70 test("a collision that is later resolved produces an output", () { 78 test("a collision that is later resolved produces an output", () {
71 initGraph({ 79 initGraph({
72 "app|foo.one": "one", 80 "app|foo.one": "one",
73 "app|foo.two": "two" 81 "app|foo.two": "two"
74 }, {"app": [ 82 }, {
75 [ 83 "app": [
76 new RewriteTransformer("one", "out"), 84 [
77 new RewriteTransformer("two", "out") 85 new RewriteTransformer("one", "out"),
86 new RewriteTransformer("two", "out")
87 ]
78 ] 88 ]
79 ]}); 89 });
80 90
81 updateSources(["app|foo.one"]); 91 updateSources(["app|foo.one"]);
82 expectAsset("app|foo.out", "one.out"); 92 expectAsset("app|foo.out", "one.out");
83 buildShouldSucceed(); 93 buildShouldSucceed();
84 94
85 updateSources(["app|foo.two"]); 95 updateSources(["app|foo.two"]);
86 expectAsset("app|foo.out", "one.out"); 96 expectAsset("app|foo.out", "one.out");
87 buildShouldFail([isAssetCollisionException("app|foo.out")]); 97 buildShouldFail([isAssetCollisionException("app|foo.out")]);
88 98
89 removeSources(["app|foo.one"]); 99 removeSources(["app|foo.one"]);
90 expectAsset("app|foo.out", "two.out"); 100 expectAsset("app|foo.out", "two.out");
91 buildShouldSucceed(); 101 buildShouldSucceed();
92 }); 102 });
93 103
94 test("a collision that is later resolved runs transforms", () { 104 test("a collision that is later resolved runs transforms", () {
95 initGraph({ 105 initGraph({
96 "app|foo.one": "one", 106 "app|foo.one": "one",
97 "app|foo.two": "two" 107 "app|foo.two": "two"
98 }, {"app": [ 108 }, {
99 [ 109 "app": [
100 new RewriteTransformer("one", "mid"), 110 [
101 new RewriteTransformer("two", "mid") 111 new RewriteTransformer("one", "mid"),
102 ], 112 new RewriteTransformer("two", "mid")
103 [new RewriteTransformer("mid", "out")] 113 ],
104 ]}); 114 [new RewriteTransformer("mid", "out")]
115 ]
116 });
105 117
106 updateSources(["app|foo.one"]); 118 updateSources(["app|foo.one"]);
107 expectAsset("app|foo.out", "one.mid.out"); 119 expectAsset("app|foo.out", "one.mid.out");
108 buildShouldSucceed(); 120 buildShouldSucceed();
109 121
110 updateSources(["app|foo.two"]); 122 updateSources(["app|foo.two"]);
111 expectAsset("app|foo.out", "one.mid.out"); 123 expectAsset("app|foo.out", "one.mid.out");
112 buildShouldFail([isAssetCollisionException("app|foo.mid")]); 124 buildShouldFail([isAssetCollisionException("app|foo.mid")]);
113 125
114 removeSources(["app|foo.one"]); 126 removeSources(["app|foo.one"]);
115 expectAsset("app|foo.out", "two.mid.out"); 127 expectAsset("app|foo.out", "two.mid.out");
116 buildShouldSucceed(); 128 buildShouldSucceed();
117 }); 129 });
118 130
119 test("a collision that is partially resolved returns the second completed " 131 test(
132 "a collision that is partially resolved returns the second completed "
120 "output", () { 133 "output", () {
121 var rewrite1 = new RewriteTransformer("one", "out"); 134 var rewrite1 = new RewriteTransformer("one", "out");
122 var rewrite2 = new RewriteTransformer("two", "out"); 135 var rewrite2 = new RewriteTransformer("two", "out");
123 var rewrite3 = new RewriteTransformer("three", "out"); 136 var rewrite3 = new RewriteTransformer("three", "out");
124 initGraph({ 137 initGraph({
125 "app|foo.one": "one", 138 "app|foo.one": "one",
126 "app|foo.two": "two", 139 "app|foo.two": "two",
127 "app|foo.three": "three" 140 "app|foo.three": "three"
128 }, {"app": [[rewrite1, rewrite2, rewrite3]]}); 141 }, {
142 "app": [
143 [rewrite1, rewrite2, rewrite3]
144 ]
145 });
129 146
130 // Make rewrite3 the most-recently-completed transformer from the first run. 147 // Make rewrite3 the most-recently-completed transformer from the first run.
131 rewrite2.pauseApply(); 148 rewrite2.pauseApply();
132 rewrite3.pauseApply(); 149 rewrite3.pauseApply();
133 updateSources(["app|foo.one", "app|foo.two", "app|foo.three"]); 150 updateSources(["app|foo.one", "app|foo.two", "app|foo.three"]);
134 schedule(pumpEventQueue); 151 schedule(pumpEventQueue);
135 rewrite2.resumeApply(); 152 rewrite2.resumeApply();
136 schedule(pumpEventQueue); 153 schedule(pumpEventQueue);
137 rewrite3.resumeApply(); 154 rewrite3.resumeApply();
138 buildShouldFail([ 155 buildShouldFail([
(...skipping 11 matching lines...) Expand all
150 removeSources(["app|foo.one"]); 167 removeSources(["app|foo.one"]);
151 expectAsset("app|foo.out", "two.out"); 168 expectAsset("app|foo.out", "two.out");
152 buildShouldFail([isAssetCollisionException("app|foo.out")]); 169 buildShouldFail([isAssetCollisionException("app|foo.out")]);
153 }); 170 });
154 171
155 test("a collision with a pass-through asset returns the pass-through asset", 172 test("a collision with a pass-through asset returns the pass-through asset",
156 () { 173 () {
157 initGraph([ 174 initGraph([
158 "app|foo.txt", 175 "app|foo.txt",
159 "app|foo.in" 176 "app|foo.in"
160 ], {"app": [ 177 ], {
161 [new RewriteTransformer("in", "txt")] 178 "app": [
162 ]}); 179 [new RewriteTransformer("in", "txt")]
180 ]
181 });
163 182
164 updateSources(["app|foo.txt", "app|foo.in"]); 183 updateSources(["app|foo.txt", "app|foo.in"]);
165 expectAsset("app|foo.txt", "foo"); 184 expectAsset("app|foo.txt", "foo");
166 buildShouldFail([isAssetCollisionException("app|foo.txt")]); 185 buildShouldFail([isAssetCollisionException("app|foo.txt")]);
167 }); 186 });
168 187
169 test("a new pass-through asset that collides returns the previous asset", () { 188 test("a new pass-through asset that collides returns the previous asset", () {
170 initGraph([ 189 initGraph([
171 "app|foo.txt", 190 "app|foo.txt",
172 "app|foo.in" 191 "app|foo.in"
173 ], {"app": [ 192 ], {
174 [new RewriteTransformer("in", "txt")] 193 "app": [
175 ]}); 194 [new RewriteTransformer("in", "txt")]
195 ]
196 });
176 197
177 updateSources(["app|foo.in"]); 198 updateSources(["app|foo.in"]);
178 expectAsset("app|foo.txt", "foo.txt"); 199 expectAsset("app|foo.txt", "foo.txt");
179 buildShouldSucceed(); 200 buildShouldSucceed();
180 201
181 updateSources(["app|foo.txt"]); 202 updateSources(["app|foo.txt"]);
182 expectAsset("app|foo.txt", "foo.txt"); 203 expectAsset("app|foo.txt", "foo.txt");
183 buildShouldFail([isAssetCollisionException("app|foo.txt")]); 204 buildShouldFail([isAssetCollisionException("app|foo.txt")]);
184 }); 205 });
185 206
186 test("a new transform output that collides with a pass-through asset returns " 207 test(
208 "a new transform output that collides with a pass-through asset returns "
187 "the pass-through asset", () { 209 "the pass-through asset", () {
188 initGraph([ 210 initGraph([
189 "app|foo.txt", 211 "app|foo.txt",
190 "app|foo.in" 212 "app|foo.in"
191 ], {"app": [ 213 ], {
192 [new RewriteTransformer("in", "txt")] 214 "app": [
193 ]}); 215 [new RewriteTransformer("in", "txt")]
216 ]
217 });
194 218
195 updateSources(["app|foo.txt"]); 219 updateSources(["app|foo.txt"]);
196 expectAsset("app|foo.txt", "foo"); 220 expectAsset("app|foo.txt", "foo");
197 buildShouldSucceed(); 221 buildShouldSucceed();
198 222
199 updateSources(["app|foo.in"]); 223 updateSources(["app|foo.in"]);
200 expectAsset("app|foo.txt", "foo"); 224 expectAsset("app|foo.txt", "foo");
201 buildShouldFail([isAssetCollisionException("app|foo.txt")]); 225 buildShouldFail([isAssetCollisionException("app|foo.txt")]);
202 }); 226 });
203 } 227 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698