Index: test/version_solver_test.dart |
diff --git a/test/version_solver_test.dart b/test/version_solver_test.dart |
index 7d8da5d532a0d01f62a64651d2cd41816f10076a..da890621771fb360d7b4ffcbca2ab8b7893c168c 100644 |
--- a/test/version_solver_test.dart |
+++ b/test/version_solver_test.dart |
@@ -12,6 +12,7 @@ import 'package:pub/src/sdk.dart' as sdk; |
import 'package:pub/src/solver/version_solver.dart'; |
import 'package:pub/src/source.dart'; |
import 'package:pub/src/source/cached.dart'; |
+import 'package:pub/src/source_registry.dart'; |
import 'package:pub/src/system_cache.dart'; |
import 'package:pub/src/utils.dart'; |
import 'package:pub_semver/pub_semver.dart'; |
@@ -652,7 +653,7 @@ backtracking() { |
'c 5.0.0': {}, |
}, result: { |
'myapp from root': '0.0.0', |
- 'a': '1.0.0', |
+ 'a-x': '1.0.0', |
'b': '1.0.0', |
'c': '5.0.0' |
}, maxTries: 2); |
@@ -1121,8 +1122,8 @@ testResolve(String description, Map packages, { |
// Build the test package graph. |
var root; |
packages.forEach((description, dependencies) { |
- var id = parseSpec(description); |
- var package = mockPackage(id, dependencies, |
+ var id = parseSpec(cache.sources, description); |
+ var package = mockPackage(cache.sources, id, dependencies, |
id.name == 'myapp' ? overrides : null); |
if (id.name == 'myapp') { |
// Don't add the root package to the server, so we can verify that Pub |
@@ -1139,7 +1140,7 @@ testResolve(String description, Map packages, { |
if (result != null) { |
var newResult = {}; |
result.forEach((description, version) { |
- var id = parseSpec(description, version); |
+ var id = parseSpec(cache.sources, description, version); |
newResult[id.name] = id; |
}); |
result = newResult; |
@@ -1148,12 +1149,12 @@ testResolve(String description, Map packages, { |
// Parse the lockfile. |
var realLockFile; |
if (lockfile == null) { |
- realLockFile = new LockFile.empty(cache.sources); |
+ realLockFile = new LockFile.empty(); |
} else { |
realLockFile = new LockFile(lockfile.keys.map((name) { |
var version = new Version.parse(lockfile[name]); |
- return new PackageId(name, source1.name, version, name); |
- }), cache.sources); |
+ return new PackageId(name, source1, version, name); |
+ })); |
} |
// Resolve the versions. |
@@ -1358,13 +1359,15 @@ class MockSource extends Source { |
BoundSource bind(SystemCache cache) => new BoundMockSource(this, cache); |
PackageRef parseRef(String name, description, {String containingPath}) => |
- new PackageRef(name, this.name, description); |
+ new PackageRef(name, this, description); |
PackageId parseId(String name, Version version, description) => |
- new PackageId(name, this.name, version, description); |
+ new PackageId(name, this, version, description); |
bool descriptionsEqual(description1, description2) => |
description1 == description2; |
+ |
+ int hashDescription(description) => description.hashCode; |
} |
class BoundMockSource extends CachedSource { |
@@ -1403,8 +1406,7 @@ class BoundMockSource extends CachedSource { |
} |
return _packages[ref.description].values.map((package) { |
- return new PackageId( |
- ref.name, source.name, package.version, ref.description); |
+ return new PackageId(ref.name, source, package.version, ref.description); |
}).toList(); |
} |
@@ -1438,7 +1440,8 @@ class BoundMockSource extends CachedSource { |
} |
} |
-Package mockPackage(PackageId id, Map dependencyStrings, Map overrides) { |
+Package mockPackage(SourceRegistry sources, PackageId id, Map dependencyStrings, |
+ Map overrides) { |
var sdkConstraint = null; |
// Build the pubspec dependencies. |
@@ -1451,7 +1454,7 @@ Package mockPackage(PackageId id, Map dependencyStrings, Map overrides) { |
spec = spec.substring("(dev) ".length); |
} |
- var dep = parseSpec(spec).withConstraint( |
+ var dep = parseSpec(sources, spec).withConstraint( |
new VersionConstraint.parse(constraint)); |
if (dep.name == 'sdk') { |
@@ -1469,8 +1472,8 @@ Package mockPackage(PackageId id, Map dependencyStrings, Map overrides) { |
var dependencyOverrides = <PackageDep>[]; |
if (overrides != null) { |
overrides.forEach((spec, constraint) { |
- dependencyOverrides.add(parseSpec(spec).withConstraint( |
- new VersionConstraint.parse(constraint))); |
+ dependencyOverrides.add(parseSpec(sources, spec) |
+ .withConstraint(new VersionConstraint.parse(constraint))); |
}); |
} |
@@ -1497,7 +1500,7 @@ Package mockPackage(PackageId id, Map dependencyStrings, Map overrides) { |
/// |
/// The "from mock" optional suffix is the name of a source for the package. |
/// If omitted, it defaults to "mock1". |
-PackageId parseSpec(String text, [String version]) { |
+PackageId parseSpec(SourceRegistry sources, String text, [String version]) { |
var pattern = new RegExp(r"(([a-z_]*)(-[a-z_]+)?)( ([^ ]+))?( from (.*))?$"); |
var match = pattern.firstMatch(text); |
if (match == null) { |
@@ -1523,11 +1526,8 @@ PackageId parseSpec(String text, [String version]) { |
} |
} |
- var source = "mock1"; |
- if (match[7] != null) { |
- source = match[7]; |
- if (source == "root") source = null; |
- } |
+ var source = sources["mock1"]; |
+ if (match[7] != null) source = match[7] == "root" ? null : sources[match[7]]; |
return new PackageId(name, source, parsedVersion, description); |
} |