OLD | NEW |
---|---|
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 pub_update_test; | 5 library pub_update_test; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 import 'dart:io'; | 8 import 'dart:io'; |
9 | 9 |
10 import 'package:unittest/unittest.dart'; | 10 import 'package:unittest/unittest.dart'; |
(...skipping 593 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
604 'foo 4.0.0': {'bar': '4.0.0'}, | 604 'foo 4.0.0': {'bar': '4.0.0'}, |
605 'bar 1.0.0': {'sdk': goodVersion }, | 605 'bar 1.0.0': {'sdk': goodVersion }, |
606 'bar 2.0.0': {'sdk': goodVersion }, | 606 'bar 2.0.0': {'sdk': goodVersion }, |
607 'bar 3.0.0': {'sdk': badVersion }, | 607 'bar 3.0.0': {'sdk': badVersion }, |
608 'bar 4.0.0': {'sdk': badVersion } | 608 'bar 4.0.0': {'sdk': badVersion } |
609 }, result: { | 609 }, result: { |
610 'myapp from root': '0.0.0', | 610 'myapp from root': '0.0.0', |
611 'foo': '2.0.0', | 611 'foo': '2.0.0', |
612 'bar': '2.0.0' | 612 'bar': '2.0.0' |
613 }, maxTries: 3); | 613 }, maxTries: 3); |
614 | |
615 testResolve('ignores SDK constraints on bleeding edge', { | |
616 'myapp 0.0.0': {'sdk': badVersion } | |
617 }, result: { | |
618 'myapp from root': '0.0.0' | |
619 }, useBleedingEdgeSdkVersion: true); | |
614 } | 620 } |
615 | 621 |
616 testResolve(description, packages, | 622 testResolve(description, packages, |
617 {lockfile, result, FailMatcherBuilder error, int maxTries}) { | 623 {lockfile, result, FailMatcherBuilder error, int maxTries, |
624 bool useBleedingEdgeSdkVersion}) { | |
618 if (maxTries == null) maxTries = 1; | 625 if (maxTries == null) maxTries = 1; |
626 if (useBleedingEdgeSdkVersion == null) useBleedingEdgeSdkVersion = false; | |
619 | 627 |
620 test(description, () { | 628 test(description, () { |
621 var cache = new SystemCache('.'); | 629 var cache = new SystemCache('.'); |
622 source1 = new MockSource('mock1'); | 630 source1 = new MockSource('mock1'); |
623 source2 = new MockSource('mock2'); | 631 source2 = new MockSource('mock2'); |
624 cache.register(source1); | 632 cache.register(source1); |
625 cache.register(source2); | 633 cache.register(source2); |
626 cache.sources.setDefault(source1.name); | 634 cache.sources.setDefault(source1.name); |
627 | 635 |
628 // Build the test package graph. | 636 // Build the test package graph. |
(...skipping 30 matching lines...) Expand all Loading... | |
659 | 667 |
660 var realLockFile = new LockFile.empty(); | 668 var realLockFile = new LockFile.empty(); |
661 if (lockfile != null) { | 669 if (lockfile != null) { |
662 lockfile.forEach((name, version) { | 670 lockfile.forEach((name, version) { |
663 version = new Version.parse(version); | 671 version = new Version.parse(version); |
664 realLockFile.packages[name] = | 672 realLockFile.packages[name] = |
665 new PackageId(name, source1, version, name); | 673 new PackageId(name, source1, version, name); |
666 }); | 674 }); |
667 } | 675 } |
668 | 676 |
677 // Make a version number like the continuous build's version. | |
678 var previousVersion = sdk.version; | |
679 if (useBleedingEdgeSdkVersion) { | |
680 sdk.version = new Version(0, 1, 2, build: '0_r12345_juser'); | |
681 } | |
682 | |
669 // Resolve the versions. | 683 // Resolve the versions. |
670 var future = resolveVersions(cache.sources, root, | 684 var future = resolveVersions(cache.sources, root, |
671 lockFile: realLockFile); | 685 lockFile: realLockFile); |
672 | 686 |
673 var matcher; | 687 var matcher; |
674 if (result != null) { | 688 if (result != null) { |
675 matcher = new SolveSuccessMatcher(result, maxTries); | 689 matcher = new SolveSuccessMatcher(result, maxTries); |
676 } else if (error != null) { | 690 } else if (error != null) { |
677 matcher = error(maxTries); | 691 matcher = error(maxTries); |
678 } | 692 } |
679 | 693 |
694 future = future.whenComplete(() { | |
695 if (useBleedingEdgeSdkVersion) { | |
696 sdk.version = previousVersion; | |
697 } | |
698 }); | |
nweiz
2013/04/19 18:42:07
I would find it a little cleaner if you did this w
Bob Nystrom
2013/04/19 21:13:04
I tried that, but it looked weird to me jammed in
| |
699 | |
680 expect(future, completion(matcher)); | 700 expect(future, completion(matcher)); |
681 }); | 701 }); |
682 } | 702 } |
683 | 703 |
684 typedef SolveFailMatcher FailMatcherBuilder(int maxTries); | 704 typedef SolveFailMatcher FailMatcherBuilder(int maxTries); |
685 | 705 |
686 FailMatcherBuilder noVersion(List<String> packages) { | 706 FailMatcherBuilder noVersion(List<String> packages) { |
687 return (maxTries) => new SolveFailMatcher(packages, maxTries, | 707 return (maxTries) => new SolveFailMatcher(packages, maxTries, |
688 NoVersionException); | 708 NoVersionException); |
689 } | 709 } |
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
965 }; | 985 }; |
966 | 986 |
967 var match = new RegExp(r"(.*) from (.*)").firstMatch(description); | 987 var match = new RegExp(r"(.*) from (.*)").firstMatch(description); |
968 if (match != null) { | 988 if (match != null) { |
969 name = match[1]; | 989 name = match[1]; |
970 source = sourceNames[match[2]]; | 990 source = sourceNames[match[2]]; |
971 } | 991 } |
972 | 992 |
973 callback(isDev, name, source); | 993 callback(isDev, name, source); |
974 } | 994 } |
OLD | NEW |