| Index: test/test_pub.dart
|
| diff --git a/test/test_pub.dart b/test/test_pub.dart
|
| index 395d084f71b2511474d89dd22026a67b2193ceea..ac620d5cae08480b41f8038a037c024d36e72c0f 100644
|
| --- a/test/test_pub.dart
|
| +++ b/test/test_pub.dart
|
| @@ -79,6 +79,10 @@ Matcher isMinifiedDart2JSOutput =
|
| Matcher isUnminifiedDart2JSOutput =
|
| contains("// The code supports the following hooks");
|
|
|
| +/// The entrypoint for pub itself.
|
| +final _entrypoint = new Entrypoint(
|
| + pubRoot, new SystemCache.withSources(isOffline: true));
|
| +
|
| /// A map from package names to paths from which those packages should be loaded
|
| /// for [createLockFile].
|
| ///
|
| @@ -86,8 +90,7 @@ Matcher isUnminifiedDart2JSOutput =
|
| /// to be used when testing pub.
|
| Map<String, String> _packageOverrides;
|
|
|
| -/// A map from barback versions to the paths of directories in the repo
|
| -/// containing them.
|
| +/// A map from barback versions to the paths to directories containing them.
|
| ///
|
| /// This includes the latest version of barback from pkg as well as all old
|
| /// versions of barback in third_party.
|
| @@ -108,11 +111,13 @@ final _barbackDeps = {
|
| /// Populates [_barbackVersions].
|
| Map<Version, String> _findBarbackVersions() {
|
| var versions = {};
|
| - var currentBarback = p.join(repoRoot, 'third_party', 'pkg', 'barback');
|
| - versions[new Pubspec.load(currentBarback, new SourceRegistry()).version] =
|
| - currentBarback;
|
|
|
| - for (var dir in listDir(p.join(repoRoot, 'third_party', 'pkg'))) {
|
| + // It would be nice if this could use HostedSource's logic, but it's
|
| + // asynchronous and this is a variable initializer.
|
| + var currentBarback = packagePath('barback');
|
| + versions[_entrypoint.lockFile.packages['barback'].version] = currentBarback;
|
| +
|
| + for (var dir in listDir(p.join(pubRoot, 'third_party'))) {
|
| var basename = p.basename(dir);
|
| if (!basename.startsWith('barback-')) continue;
|
| versions[new Version.parse(split1(basename, '-').last)] = dir;
|
| @@ -143,9 +148,10 @@ void withBarbackVersions(String versionConstraint, void callback()) {
|
| _packageOverrides['barback'] = _barbackVersions[version];
|
| _barbackDeps.forEach((constraint, deps) {
|
| if (!constraint.allows(version)) return;
|
| +
|
| deps.forEach((packageName, version) {
|
| _packageOverrides[packageName] = p.join(
|
| - repoRoot, 'third_party', 'pkg', '$packageName-$version');
|
| + pubRoot, 'third_party', '$packageName-$version');
|
| });
|
| });
|
|
|
| @@ -817,11 +823,18 @@ Iterable<String> pkg, Map<String, String> hosted}) {
|
| return lockFile;
|
| }
|
|
|
| -/// Returns the path to [package] within the repo.
|
| -String packagePath(String package) =>
|
| - dirExists(p.join(repoRoot, 'pkg', package)) ?
|
| - p.join(repoRoot, 'pkg', package) :
|
| - p.join(repoRoot, 'third_party', 'pkg', package);
|
| +/// Returns the path to the version of [package] used by pub.
|
| +String packagePath(String package) {
|
| + var id = _entrypoint.lockFile.packages[package];
|
| + if (id == null) {
|
| + throw new StateError(
|
| + 'The tests rely on "$package", but it\'s not in the lockfile.');
|
| + }
|
| +
|
| + return p.join(
|
| + SystemCache.defaultDir,
|
| + 'hosted/pub.dartlang.org/$package-${id.version}');
|
| +}
|
|
|
| /// Uses [client] as the mock HTTP client for this test.
|
| ///
|
|
|