| 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 680 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 691 } | 691 } |
| 692 } | 692 } |
| 693 | 693 |
| 694 testResolve('complex backtrack', map, result: { | 694 testResolve('complex backtrack', map, result: { |
| 695 'myapp from root': '0.0.0', | 695 'myapp from root': '0.0.0', |
| 696 'foo': '0.9.0', | 696 'foo': '0.9.0', |
| 697 'bar': '9.0.0', | 697 'bar': '9.0.0', |
| 698 'baz': '0.0.0' | 698 'baz': '0.0.0' |
| 699 }, maxTries: 100); | 699 }, maxTries: 100); |
| 700 | 700 |
| 701 // If there's a disjoint constraint on a package, then selecting other |
| 702 // versions of it is a waste of time: no possible versions can match. We need |
| 703 // to jump past it to the most recent package that affected the constraint. |
| 704 testResolve('backjump past failed package on disjoint constraint', { |
| 705 'myapp 0.0.0': { |
| 706 'a': 'any', |
| 707 'foo': '>2.0.0' |
| 708 }, |
| 709 'a 1.0.0': { |
| 710 'foo': 'any' // ok |
| 711 }, |
| 712 'a 2.0.0': { |
| 713 'foo': '<1.0.0' // disjoint with myapp's constraint on foo |
| 714 }, |
| 715 'foo 2.0.0': {}, |
| 716 'foo 2.0.1': {}, |
| 717 'foo 2.0.2': {}, |
| 718 'foo 2.0.3': {}, |
| 719 'foo 2.0.4': {} |
| 720 }, result: { |
| 721 'myapp from root': '0.0.0', |
| 722 'a': '1.0.0', |
| 723 'foo': '2.0.4' |
| 724 }, maxTries: 2); |
| 725 |
| 701 // TODO(rnystrom): More tests. In particular: | 726 // TODO(rnystrom): More tests. In particular: |
| 702 // - Tests that demonstrate backtracking for every case that can cause a | 727 // - Tests that demonstrate backtracking for every case that can cause a |
| 703 // solution to fail (no versions, disjoint, etc.) | 728 // solution to fail (no versions, disjoint, etc.) |
| 704 // - Tests where there are multiple valid solutions and "best" is possibly | 729 // - Tests where there are multiple valid solutions and "best" is possibly |
| 705 // ambiguous to nail down which order the backtracker tries solutions. | 730 // ambiguous to nail down which order the backtracker tries solutions. |
| 706 } | 731 } |
| 707 | 732 |
| 708 sdkConstraint() { | 733 sdkConstraint() { |
| 709 var badVersion = '0.0.0-nope'; | 734 var badVersion = '0.0.0-nope'; |
| 710 var goodVersion = sdk.version.toString(); | 735 var goodVersion = sdk.version.toString(); |
| (...skipping 455 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1166 var source = "mock1"; | 1191 var source = "mock1"; |
| 1167 var match = new RegExp(r"(.*) from (.*)").firstMatch(description); | 1192 var match = new RegExp(r"(.*) from (.*)").firstMatch(description); |
| 1168 if (match != null) { | 1193 if (match != null) { |
| 1169 name = match[1]; | 1194 name = match[1]; |
| 1170 source = match[2]; | 1195 source = match[2]; |
| 1171 if (source == "root") source = null; | 1196 if (source == "root") source = null; |
| 1172 } | 1197 } |
| 1173 | 1198 |
| 1174 callback(isDev, name, source); | 1199 callback(isDev, name, source); |
| 1175 } | 1200 } |
| OLD | NEW |