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

Side by Side Diff: utils/tests/pub/version_test.dart

Issue 12310029: Allow whitespace in version constraints. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Don't allow mixing "any" with other constraints. Created 7 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
« no previous file with comments | « utils/pub/version.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 version_test; 5 library version_test;
6 6
7 import '../../../pkg/unittest/lib/unittest.dart'; 7 import '../../../pkg/unittest/lib/unittest.dart';
8 import 'test_pub.dart'; 8 import 'test_pub.dart';
9 import '../../pub/utils.dart'; 9 import '../../pub/utils.dart';
10 import '../../pub/version.dart'; 10 import '../../pub/version.dart';
11 11
12 main() { 12 main() {
13 initConfig();
14
13 final v123 = new Version.parse('1.2.3'); 15 final v123 = new Version.parse('1.2.3');
14 final v114 = new Version.parse('1.1.4'); 16 final v114 = new Version.parse('1.1.4');
15 final v124 = new Version.parse('1.2.4'); 17 final v124 = new Version.parse('1.2.4');
16 final v200 = new Version.parse('2.0.0'); 18 final v200 = new Version.parse('2.0.0');
17 final v234 = new Version.parse('2.3.4'); 19 final v234 = new Version.parse('2.3.4');
18 final v250 = new Version.parse('2.5.0'); 20 final v250 = new Version.parse('2.5.0');
19 final v300 = new Version.parse('3.0.0'); 21 final v300 = new Version.parse('3.0.0');
20 22
21 group('Version', () { 23 group('Version', () {
22 test('none', () { 24 test('none', () {
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after
379 var constraint = new VersionConstraint.parse('>1.0.0 >=1.2.3 <1.3.0'); 381 var constraint = new VersionConstraint.parse('>1.0.0 >=1.2.3 <1.3.0');
380 expect(constraint, allows([ 382 expect(constraint, allows([
381 new Version.parse('1.2.3'), 383 new Version.parse('1.2.3'),
382 new Version.parse('1.2.5')])); 384 new Version.parse('1.2.5')]));
383 expect(constraint, doesNotAllow([ 385 expect(constraint, doesNotAllow([
384 new Version.parse('1.2.3-pre'), 386 new Version.parse('1.2.3-pre'),
385 new Version.parse('1.3.0'), 387 new Version.parse('1.3.0'),
386 new Version.parse('3.4.5')])); 388 new Version.parse('3.4.5')]));
387 }); 389 });
388 390
391 test('ignores whitespace around operators', () {
392 var constraint = new VersionConstraint.parse(' >1.0.0>=1.2.3 < 1.3.0');
393 expect(constraint, allows([
394 new Version.parse('1.2.3'),
395 new Version.parse('1.2.5')]));
396 expect(constraint, doesNotAllow([
397 new Version.parse('1.2.3-pre'),
398 new Version.parse('1.3.0'),
399 new Version.parse('3.4.5')]));
400 });
401
402 test('does not allow "any" to be mixed with other constraints', () {
403 expect(() => new VersionConstraint.parse('any 1.0.0'),
404 throwsFormatException);
405 });
406
389 test('throws FormatException on a bad string', () { 407 test('throws FormatException on a bad string', () {
390 expect(() => new VersionConstraint.parse(''), throwsFormatException); 408 var bad = [
391 expect(() => new VersionConstraint.parse(' '), throwsFormatException); 409 "", " ", // Empty string.
392 expect(() => new VersionConstraint.parse('not a version'), 410 "foo", // Bad text.
393 throwsFormatException); 411 ">foo", // Bad text after operator.
412 "1.0.0 foo", "1.0.0foo", // Bad text after version.
413 "anything", // Bad text after "any".
414 "<>1.0.0", // Multiple operators.
415 "1.0.0<" // Trailing operator.
416 ];
417
418 for (var text in bad) {
419 expect(() => new VersionConstraint.parse(text),
420 throwsFormatException);
421 }
394 }); 422 });
395 }); 423 });
396 }); 424 });
397 } 425 }
398 426
399 class VersionConstraintMatcher implements Matcher { 427 class VersionConstraintMatcher implements Matcher {
400 final List<Version> _expected; 428 final List<Version> _expected;
401 final bool _allow; 429 final bool _allow;
402 430
403 VersionConstraintMatcher(this._expected, this._allow); 431 VersionConstraintMatcher(this._expected, this._allow);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
439 467
440 Matcher allows(List<Version> versions) => 468 Matcher allows(List<Version> versions) =>
441 new VersionConstraintMatcher(versions, true); 469 new VersionConstraintMatcher(versions, true);
442 470
443 Matcher doesNotAllow(List<Version> versions) => 471 Matcher doesNotAllow(List<Version> versions) =>
444 new VersionConstraintMatcher(versions, false); 472 new VersionConstraintMatcher(versions, false);
445 473
446 throwsIllegalArg(function) { 474 throwsIllegalArg(function) {
447 expect(function, throwsA((e) => e is ArgumentError)); 475 expect(function, throwsA((e) => e is ArgumentError));
448 } 476 }
OLDNEW
« no previous file with comments | « utils/pub/version.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698