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

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

Issue 1165473002: Start pulling pub from its own repo. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Code review changes Created 5 years, 6 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
(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(() => _preprocess('//# if <=1.0.0\n//# end'),
252 throwsFormatException);
253 });
254
255 test("disallows invalid version constraint", () {
256 expect(() => _preprocess('//# if barback >=1.0\n//# end'),
257 throwsFormatException);
258 });
259
260 test("disallows dangling end", () {
261 expect(() => _preprocess('//# end'),
262 throwsFormatException);
263 });
264
265 test("disallows if without end", () {
266 expect(() => _preprocess('//# if barback >=1.0.0'),
267 throwsFormatException);
268 });
269
270 test("disallows nested if", () {
271 expect(() => _preprocess('''
272 //# if barback >=1.0.0
273 //# if barback >= 1.5.0
274 //# end
275 //# end
276 '''),
277 throwsFormatException);
278 });
279 });
280
281 group("else", () {
282 test("disallows else without if", () {
283 expect(() => _preprocess('//# else\n//# end'), throwsFormatException);
284 });
285
286 test("disallows else without end", () {
287 expect(() => _preprocess('//# if barback >=1.0.0\n//# else'),
288 throwsFormatException);
289 });
290
291 test("disallows else with an argument", () {
292 expect(() => _preprocess('''
293 //# if barback >=1.0.0
294 //# else barback <0.5.0
295 //# end
296 '''), throwsFormatException);
297 });
298 });
299 });
300 }
301
302 String _preprocess(String input) =>
303 preprocess(input, {'barback': new Version.parse("1.2.3")}, 'source/url');
OLDNEW
« no previous file with comments | « sdk/lib/_internal/pub/test/package_list_files_test.dart ('k') | sdk/lib/_internal/pub/test/pub_get_and_upgrade_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698