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

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: 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 'Unknown reserved field "\$key"');
nweiz 2014/02/24 21:42:46 This is a much worse error message than before. It
Bob Nystrom 2014/02/26 01:09:41 Done. The paths were always in the error message,
251 }); 251 });
252 252
253 test("doesn't throw if a transformer's configuration contains a " 253 test("doesn't throw if a transformer's configuration contains a "
254 "non-top-level key beginning with a dollar sign", () { 254 "non-top-level key beginning with a dollar sign", () {
255 var pubspec = new Pubspec.parse(''' 255 var pubspec = new Pubspec.parse('''
256 name: pkg 256 name: pkg
257 transformers: 257 transformers:
258 - pkg: {outer: {\$inner: value}} 258 - pkg: {outer: {\$inner: value}}
259 ''', sources); 259 ''', sources);
260 260
261 var pkg = pubspec.transformers[0].single; 261 var pkg = pubspec.transformers[0].single;
262 expect(pkg.configuration["outer"]["\$inner"], equals("value")); 262 expect(pkg.configuration["outer"]["\$inner"], equals("value"));
263 }); 263 });
264 264
265 test("throws if the \$include value is not a string or list", () {
266 expectPubspecException('''
267 name: pkg
268 transformers:
269 - pkg: {\$include: 123}''',
270 (pubspec) => pubspec.transformers,
271 '"\$include" field must be a string or list, but was "123"');
272 });
273
274 test("throws if the \$include list contains a non-string", () {
275 expectPubspecException('''
276 name: pkg
277 transformers:
278 - pkg: {\$include: ["ok", 123, "alright", null]}''',
279 (pubspec) => pubspec.transformers,
280 '"\$include" list field may only contain strings, but contained '
281 '"123" and "null"');
282 });
283
284 test("throws if the \$exclude value is not a string or list", () {
285 expectPubspecException('''
286 name: pkg
287 transformers:
288 - pkg: {\$exclude: 123}''',
289 (pubspec) => pubspec.transformers,
290 '"\$exclude" field must be a string or list, but was "123"');
291 });
292
293 test("throws if the \$exclude list contains a non-string", () {
294 expectPubspecException('''
295 name: pkg
296 transformers:
297 - pkg: {\$exclude: ["ok", 123, "alright", null]}''',
298 (pubspec) => pubspec.transformers,
299 '"\$exclude" list field may only contain strings, but contained '
300 '"123" and "null"');
301 });
302
265 test("throws if a transformer is not from a dependency", () { 303 test("throws if a transformer is not from a dependency", () {
266 expectPubspecException(''' 304 expectPubspecException('''
267 name: pkg 305 name: pkg
268 transformers: [foo] 306 transformers: [foo]
269 ''', 307 ''',
270 (pubspec) => pubspec.transformers, 308 (pubspec) => pubspec.transformers,
271 '"transformers.foo" refers to a package that\'s not a dependency.'); 309 '"transformers.foo" refers to a package that\'s not a dependency.');
272 }); 310 });
273 311
274 test("allows a transformer from a normal dependency", () { 312 test("allows a transformer from a normal dependency", () {
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 (pubspec) => pubspec.environment); 390 (pubspec) => pubspec.environment);
353 }); 391 });
354 392
355 test("throws if the sdk isn't a valid version constraint", () { 393 test("throws if the sdk isn't a valid version constraint", () {
356 expectPubspecException('environment: {sdk: "oopies"}', 394 expectPubspecException('environment: {sdk: "oopies"}',
357 (pubspec) => pubspec.environment); 395 (pubspec) => pubspec.environment);
358 }); 396 });
359 }); 397 });
360 }); 398 });
361 } 399 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698