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(() {