| Index: sdk/lib/_internal/pub/test/test_pub.dart
|
| diff --git a/sdk/lib/_internal/pub/test/test_pub.dart b/sdk/lib/_internal/pub/test/test_pub.dart
|
| index 54e30dec86c62441281e98397e234ab09608f8fc..ff5d9f9db1aebe6e56d5e2059722ce075e36ac57 100644
|
| --- a/sdk/lib/_internal/pub/test/test_pub.dart
|
| +++ b/sdk/lib/_internal/pub/test/test_pub.dart
|
| @@ -255,8 +255,11 @@ Map<String, List<Map>> _servedPackages;
|
| ///
|
| /// If [contents] is given, its contents are added to every served
|
| /// package.
|
| +///
|
| +/// If [serveBarback] is true, the repo versions of barback and its dependencies
|
| +/// will be served as well.
|
| void servePackages(List<Map> pubspecs, {bool replace: false,
|
| - Iterable<d.Descriptor> contents}) {
|
| + Iterable<d.Descriptor> contents, bool serveBarback: false}) {
|
| if (_servedPackages == null || _servedPackageDir == null) {
|
| _servedPackages = <String, List<Map>>{};
|
| _servedApiPackageDir = d.dir('packages', []);
|
| @@ -284,6 +287,28 @@ void servePackages(List<Map> pubspecs, {bool replace: false,
|
| versions.add(pubspec);
|
| }
|
|
|
| + var repoPackages = new Set();
|
| + if (serveBarback) {
|
| + _addPackage(name) {
|
| + if (_servedPackages.containsKey(name)) return;
|
| + repoPackages.add(name);
|
| +
|
| + var pubspec = new Map.from(loadYaml(
|
| + readTextFile(path.join(repoRoot, 'pkg', name, 'pubspec.yaml'))));
|
| +
|
| + // Remove any SDK constraints since we don't have a valid SDK version
|
| + // while testing.
|
| + pubspec.remove('environment');
|
| +
|
| + _servedPackages[name] = [pubspec];
|
| + if (pubspec.containsKey('dependencies')) {
|
| + pubspec['dependencies'].keys.forEach(_addPackage);
|
| + }
|
| + }
|
| +
|
| + _addPackage('barback');
|
| + }
|
| +
|
| _servedApiPackageDir.contents.clear();
|
| _servedPackageDir.contents.clear();
|
| for (var name in _servedPackages.keys) {
|
| @@ -305,6 +330,14 @@ void servePackages(List<Map> pubspecs, {bool replace: false,
|
| d.dir('versions', _servedPackages[name].map((pubspec) {
|
| var version = pubspec['version'];
|
|
|
| + if (repoPackages.contains(name)) {
|
| + return d.tar('$version.tar.gz', [
|
| + d.file('pubspec.yaml', JSON.encode(pubspec)),
|
| + new d.DirectoryDescriptor.fromFilesystem('lib',
|
| + path.join(repoRoot, 'pkg', name, 'lib'))
|
| + ]);
|
| + }
|
| +
|
| var archiveContents = [
|
| d.file('pubspec.yaml', JSON.encode(pubspec)),
|
| d.libDir(name, '$name $version')
|
|
|