Make tests pass

R=het@google.com, lrn@google.com

Review URL: https://codereview.chromium.org//1178673002.
diff --git a/lib/discovery.dart b/lib/discovery.dart
index 35c3ece..a399395 100644
--- a/lib/discovery.dart
+++ b/lib/discovery.dart
@@ -38,7 +38,7 @@
     return file.readAsBytes().then(parseBytes);
   }
   if (loader == null) {
-    return http.readBytes(packagesFile).then(parseBytes);
+    return _httpGet(packagesFile).then(parseBytes);
   }
   return loader(packagesFile).then(parseBytes);
 }
@@ -99,7 +99,7 @@
   } else if (loader != null) {
     return findPackagesFromNonFile(baseUri, loader: loader);
   } else if (baseUri.scheme == "http" || baseUri.scheme == "https") {
-    return findPackagesFromNonFile(baseUri, loader: http.readBytes);
+    return findPackagesFromNonFile(baseUri, loader: _httpGet);
   } else {
     return new Future<Packages>.value(Packages.noPackages);
   }
@@ -192,7 +192,7 @@
 /// UTF-8 encoded.
 Future<Packages> findPackagesFromNonFile(Uri nonFileUri,
                                          {Future<List<int>> loader(Uri name)}) {
-  if (loader == null) loader = http.readBytes;
+  if (loader == null) loader = _httpGet;
   Uri packagesFileUri = nonFileUri.resolve(".packages");
   return loader(packagesFileUri).then((List<int> fileBytes) {
     Map<String, Uri> map = pkgfile.parse(fileBytes, packagesFileUri);
@@ -203,3 +203,26 @@
     return new NonFilePackagesDirectoryPackages(packagesDirectoryUri);
   });
 }
+
+/// Fetches a file over http.
+Future<List<int>> _httpGet(Uri uri) async {
+  HttpClient client = new HttpClient();
+  HttpClientRequest request = await client.getUrl(uri);
+  HttpClientResponse response = await request.close();
+  if (response.statusCode != HttpStatus.OK) {
+    throw 'Failure getting $uri: '
+        '${response.statusCode} ${response.reasonPhrase}';
+  }
+  List<List<int>> splitContent = await response.toList();
+  int totalLength = 0;
+  for (var list in splitContent) {
+    totalLength += list.length;
+  }
+  Uint8List result = new Uint8List(totalLength);
+  int offset = 0;
+  for (List<int> contentPart in splitContent) {
+    result.setRange(offset, offset + contentPart.length, contentPart);
+    offset += contentPart.length;
+  }
+  return result;
+}
diff --git a/pubspec.yaml b/pubspec.yaml
index 0f2735b..0b780d9 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -8,8 +8,8 @@
   sdk: '>=1.11.0-dev.0.0 <2.0.0'
 
 dependencies:
-  charcode: '^1.1.0'
-  path: '>=1.0.0 <2.0.0'
+  charcode: ^1.1.0
+  path: ^1.0.0
 
 dev_dependencies:
   test: '>=0.12.0 <0.13.0'
diff --git a/test/discovery_analysis_test.dart b/test/discovery_analysis_test.dart
index ad007c0..38599f8 100644
--- a/test/discovery_analysis_test.dart
+++ b/test/discovery_analysis_test.dart
@@ -19,19 +19,19 @@
            (Directory directory) {
     var dirUri = new Uri.directory(directory.path);
     PackageContext ctx = PackageContext.findAll(directory);
-    PackagesContext root = ctx[directory];
+    PackageContext root = ctx[directory];
     expect(root, same(ctx));
     validatePackagesFile(root.packages, dirUri);
     var fooDir = sub(directory, "foo");
-    PackagesContext foo = ctx[fooDir];
+    PackageContext foo = ctx[fooDir];
     expect(identical(root, foo), isFalse);
     validatePackagesFile(foo.packages, dirUri.resolve("foo/"));
     var barDir = sub(directory, "bar");
-    PackagesContext bar = ctx[sub(directory, "bar")];
+    PackageContext bar = ctx[sub(directory, "bar")];
     validatePackagesDir(bar.packages, dirUri.resolve("bar/"));
-    PackagesContext barbar = ctx[sub(barDir, "bar")];
+    PackageContext barbar = ctx[sub(barDir, "bar")];
     expect(barbar, same(bar));  // inherited.
-    PackagesContext baz = ctx[sub(directory, "baz")];
+    PackageContext baz = ctx[sub(directory, "baz")];
     expect(baz, same(root));  // inherited.
 
     var map = ctx.asMap();
@@ -95,7 +95,7 @@
 /// as a string.
 void fileTest(String name,
               Map description,
-              Future fileTest(Uri directory)) {
+              Future fileTest(Directory directory)) {
   group("file-test", () {
     Directory tempDir = Directory.systemTemp.createTempSync("file-test");
     setUp(() {