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

Side by Side Diff: sdk/lib/_internal/pub_generated/test/preprocess_test.dart

Issue 937243002: Revert "Revert "Use native async/await support in pub."" (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 10 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
(Empty)
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
3 // BSD-style license that can be found in the LICENSE file.
4
5 library pub.test.preprocess_test;
6
7 import 'package:pub_semver/pub_semver.dart';
8 import 'package:unittest/unittest.dart';
9
10 import '../lib/src/preprocess.dart';
11 import 'test_pub.dart';
12
13 main() {
14 initConfig();
15
16 test("does nothing on a file without preprocessor directives", () {
17 var text = '''
18 some text
19 // normal comment
20 // #
21 //# not beginning of line
22 ''';
23
24 expect(_preprocess(text), equals(text));
25 });
26
27 test("allows bare insert directive", () {
28 expect(_preprocess('//> foo'), equals('foo'));
29 });
30
31 test("allows empty insert directive", () {
32 expect(_preprocess('''
33 //> foo
34 //>
35 //> bar
36 '''), equals('foo\n\nbar\n'));
37 });
38
39 group("if", () {
40 group("with a version range", () {
41 test("removes sections with non-matching versions", () {
42 expect(_preprocess('''
43 before
44 //# if barback <1.0.0
45 inside
46 //# end
47 after
48 '''), equals('''
49 before
50 after
51 '''));
52 });
53
54 test("doesn't insert section with non-matching versions", () {
55 expect(_preprocess('''
56 before
57 //# if barback <1.0.0
58 //> inside
59 //# end
60 after
61 '''), equals('''
62 before
63 after
64 '''));
65 });
66
67 test("doesn't remove sections with matching versions", () {
68 expect(_preprocess('''
69 before
70 //# if barback >1.0.0
71 inside
72 //# end
73 after
74 '''), equals('''
75 before
76 inside
77 after
78 '''));
79 });
80
81 test("inserts sections with matching versions", () {
82 expect(_preprocess('''
83 before
84 //# if barback >1.0.0
85 //> inside
86 //# end
87 after
88 '''), equals('''
89 before
90 inside
91 after
92 '''));
93 });
94
95 test("allows multi-element version ranges", () {
96 expect(_preprocess('''
97 before
98 //# if barback >=1.0.0 <2.0.0
99 inside 1
100 //# end
101 //# if barback >=0.9.0 <1.0.0
102 inside 2
103 //# end
104 after
105 '''), equals('''
106 before
107 inside 1
108 after
109 '''));
110 });
111 });
112
113 group("with a package name", () {
114 test("removes sections for a nonexistent package", () {
115 expect(_preprocess('''
116 before
117 //# if fblthp
118 inside
119 //# end
120 after
121 '''), equals('''
122 before
123 after
124 '''));
125 });
126
127 test("doesn't insert sections for a nonexistent package", () {
128 expect(_preprocess('''
129 before
130 //# if fblthp
131 //> inside
132 //# end
133 after
134 '''), equals('''
135 before
136 after
137 '''));
138 });
139
140 test("doesn't remove sections with an existent package", () {
141 expect(_preprocess('''
142 before
143 //# if barback
144 inside
145 //# end
146 after
147 '''), equals('''
148 before
149 inside
150 after
151 '''));
152 });
153
154 test("inserts sections with an existent package", () {
155 expect(_preprocess('''
156 before
157 //# if barback
158 //> inside
159 //# end
160 after
161 '''), equals('''
162 before
163 inside
164 after
165 '''));
166 });
167 });
168 });
169
170 group("else", () {
171 test("removes non-matching sections", () {
172 expect(_preprocess('''
173 before
174 //# if barback >1.0.0
175 inside 1
176 //# else
177 inside 2
178 //# end
179 after
180 '''), equals('''
181 before
182 inside 1
183 after
184 '''));
185 });
186
187 test("doesn't insert non-matching sections", () {
188 expect(_preprocess('''
189 before
190 //# if barback >1.0.0
191 inside 1
192 //# else
193 //> inside 2
194 //# end
195 after
196 '''), equals('''
197 before
198 inside 1
199 after
200 '''));
201 });
202
203 test("doesn't remove matching sections", () {
204 expect(_preprocess('''
205 before
206 //# if barback <1.0.0
207 inside 1
208 //# else
209 inside 2
210 //# end
211 after
212 '''), equals('''
213 before
214 inside 2
215 after
216 '''));
217 });
218
219 test("inserts matching sections", () {
220 expect(_preprocess('''
221 before
222 //# if barback <1.0.0
223 inside 1
224 //# else
225 //> inside 2
226 //# end
227 after
228 '''), equals('''
229 before
230 inside 2
231 after
232 '''));
233 });
234 });
235
236 group("errors", () {
237 test("disallows unknown statements", () {
238 expect(() => _preprocess('//# foo bar\n//# end'), throwsFormatException);
239 });
240
241 test("disallows insert directive without space", () {
242 expect(() => _preprocess('//>foo'), throwsFormatException);
243 });
244
245 group("if", () {
246 test("disallows if with no arguments", () {
247 expect(() => _preprocess('//# if\n//# end'), throwsFormatException);
248 });
249
250 test("disallows if with no package", () {
251 expect(
252 () => _preprocess('//# if <=1.0.0\n//# end'),
253 throwsFormatException);
254 });
255
256 test("disallows invalid version constraint", () {
257 expect(
258 () => _preprocess('//# if barback >=1.0\n//# end'),
259 throwsFormatException);
260 });
261
262 test("disallows dangling end", () {
263 expect(() => _preprocess('//# end'), throwsFormatException);
264 });
265
266 test("disallows if without end", () {
267 expect(
268 () => _preprocess('//# if barback >=1.0.0'),
269 throwsFormatException);
270 });
271
272 test("disallows nested if", () {
273 expect(() => _preprocess('''
274 //# if barback >=1.0.0
275 //# if barback >= 1.5.0
276 //# end
277 //# end
278 '''), throwsFormatException);
279 });
280 });
281
282 group("else", () {
283 test("disallows else without if", () {
284 expect(() => _preprocess('//# else\n//# end'), throwsFormatException);
285 });
286
287 test("disallows else without end", () {
288 expect(
289 () => _preprocess('//# if barback >=1.0.0\n//# else'),
290 throwsFormatException);
291 });
292
293 test("disallows else with an argument", () {
294 expect(() => _preprocess('''
295 //# if barback >=1.0.0
296 //# else barback <0.5.0
297 //# end
298 '''), throwsFormatException);
299 });
300 });
301 });
302 }
303
304 String _preprocess(String input) => preprocess(input, {
305 'barback': new Version.parse("1.2.3")
306 }, 'source/url');
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698