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

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

Issue 169223010: Allow transformers to exclude and include assets. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Revise. Created 6 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
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 pubspec_test; 5 library pubspec_test;
6 6
7 import 'package:unittest/unittest.dart'; 7 import 'package:unittest/unittest.dart';
8 8
9 import '../lib/src/pubspec.dart'; 9 import '../lib/src/pubspec.dart';
10 import '../lib/src/source.dart'; 10 import '../lib/src/source.dart';
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 (pubspec) => pubspec.transformers, 234 (pubspec) => pubspec.transformers,
235 '"transformers" field must be a string or map'); 235 '"transformers" field must be a string or map');
236 }); 236 });
237 237
238 test("throws if a transformer's configuration isn't a map", () { 238 test("throws if a transformer's configuration isn't a map", () {
239 expectPubspecException('transformers: [{pkg: 12}]', 239 expectPubspecException('transformers: [{pkg: 12}]',
240 (pubspec) => pubspec.transformers, 240 (pubspec) => pubspec.transformers,
241 '"transformers.pkg" field must be a map'); 241 '"transformers.pkg" field must be a map');
242 }); 242 });
243 243
244 test("throws if a transformer's configuration contains a top-level key " 244 test("throws if a transformer's configuration contains an unknown "
245 "beginning with a dollar sign", () { 245 "reserved key at the top level", () {
246 expectPubspecException(''' 246 expectPubspecException('''
247 name: pkg 247 name: pkg
248 transformers: [{pkg: {\$key: "value"}}]''', 248 transformers: [{pkg: {\$key: "value"}}]''',
249 (pubspec) => pubspec.transformers, 249 (pubspec) => pubspec.transformers,
250 '"transformers.pkg" field cannot contain reserved field "\$key"'); 250 'Invalid transformer configuration for "transformers.pkg": '
251 'Unknown reserved field "\$key"');
251 }); 252 });
252 253
253 test("doesn't throw if a transformer's configuration contains a " 254 test("doesn't throw if a transformer's configuration contains a "
254 "non-top-level key beginning with a dollar sign", () { 255 "non-top-level key beginning with a dollar sign", () {
255 var pubspec = new Pubspec.parse(''' 256 var pubspec = new Pubspec.parse('''
256 name: pkg 257 name: pkg
257 transformers: 258 transformers:
258 - pkg: {outer: {\$inner: value}} 259 - pkg: {outer: {\$inner: value}}
259 ''', sources); 260 ''', sources);
260 261
261 var pkg = pubspec.transformers[0].single; 262 var pkg = pubspec.transformers[0].single;
262 expect(pkg.configuration["outer"]["\$inner"], equals("value")); 263 expect(pkg.configuration["outer"]["\$inner"], equals("value"));
263 }); 264 });
264 265
266 test("throws if the \$include value is not a string or list", () {
267 expectPubspecException('''
268 name: pkg
269 transformers:
270 - pkg: {\$include: 123}''',
271 (pubspec) => pubspec.transformers,
272 'Invalid transformer configuration for "transformers.pkg": '
273 '"\$include" field must be a string or list, but was "123"');
274 });
275
276 test("throws if the \$include list contains a non-string", () {
277 expectPubspecException('''
278 name: pkg
279 transformers:
280 - pkg: {\$include: ["ok", 123, "alright", null]}''',
281 (pubspec) => pubspec.transformers,
282 'Invalid transformer configuration for "transformers.pkg": '
283 '"\$include" list field may only contain strings, but contained '
284 '"123" and "null"');
285 });
286
287 test("throws if the \$exclude value is not a string or list", () {
288 expectPubspecException('''
289 name: pkg
290 transformers:
291 - pkg: {\$exclude: 123}''',
292 (pubspec) => pubspec.transformers,
293 'Invalid transformer configuration for "transformers.pkg": '
294 '"\$exclude" field must be a string or list, but was "123"');
295 });
296
297 test("throws if the \$exclude list contains a non-string", () {
298 expectPubspecException('''
299 name: pkg
300 transformers:
301 - pkg: {\$exclude: ["ok", 123, "alright", null]}''',
302 (pubspec) => pubspec.transformers,
303 'Invalid transformer configuration for "transformers.pkg": '
304 '"\$exclude" list field may only contain strings, but contained '
305 '"123" and "null"');
306 });
307
265 test("throws if a transformer is not from a dependency", () { 308 test("throws if a transformer is not from a dependency", () {
266 expectPubspecException(''' 309 expectPubspecException('''
267 name: pkg 310 name: pkg
268 transformers: [foo] 311 transformers: [foo]
269 ''', 312 ''',
270 (pubspec) => pubspec.transformers, 313 (pubspec) => pubspec.transformers,
271 '"transformers.foo" refers to a package that\'s not a dependency.'); 314 '"transformers.foo" refers to a package that\'s not a dependency.');
272 }); 315 });
273 316
274 test("allows a transformer from a normal dependency", () { 317 test("allows a transformer from a normal dependency", () {
275 var pubspec = new Pubspec.parse(''' 318 var pubspec = new Pubspec.parse('''
276 name: pkg 319 name: pkg
277 dependencies: 320 dependencies:
278 foo: 321 foo:
279 mock: ok 322 mock: ok
280 transformers: 323 transformers:
281 - foo''', sources); 324 - foo''', sources);
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 (pubspec) => pubspec.environment); 395 (pubspec) => pubspec.environment);
353 }); 396 });
354 397
355 test("throws if the sdk isn't a valid version constraint", () { 398 test("throws if the sdk isn't a valid version constraint", () {
356 expectPubspecException('environment: {sdk: "oopies"}', 399 expectPubspecException('environment: {sdk: "oopies"}',
357 (pubspec) => pubspec.environment); 400 (pubspec) => pubspec.environment);
358 }); 401 });
359 }); 402 });
360 }); 403 });
361 } 404 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698