Index: test/package_server.dart |
diff --git a/test/package_server.dart b/test/package_server.dart |
index 7561a5ae57192dad66d17186daa0bef985119d1a..6fedf61f748996881ce06d68dd40975b5da22638 100644 |
--- a/test/package_server.dart |
+++ b/test/package_server.dart |
@@ -5,6 +5,7 @@ |
import 'dart:async'; |
import 'dart:convert'; |
+import 'package:async/async.dart'; |
import 'package:path/path.dart' as p; |
import 'package:pub/src/io.dart'; |
import 'package:pub/src/utils.dart'; |
@@ -150,16 +151,13 @@ class PackageServerBuilder { |
/// |
/// If [contents] is passed, it's used as the contents of the package. By |
/// default, a package just contains a dummy lib directory. |
- void serve(String name, String version, {Map deps, Map pubspec, |
- Iterable<d.Descriptor> contents}) { |
- _futures.add(Future.wait([ |
- awaitObject(deps), |
- awaitObject(pubspec) |
- ]).then((pair) { |
- var resolvedDeps = pair.first; |
- var resolvedPubspec = pair.last; |
- |
- var pubspecFields = { |
+ void serve(String name, String version, {Map<String, dynamic> deps, |
+ Map<String, dynamic> pubspec, Iterable<d.Descriptor> contents}) { |
+ _futures.add(new Future.sync(() async { |
+ var resolvedDeps = await awaitObject(deps); |
+ var resolvedPubspec = await awaitObject(pubspec); |
+ |
+ var pubspecFields = <String, dynamic>{ |
"name": name, |
"version": version |
}; |
@@ -205,11 +203,10 @@ class PackageServerBuilder { |
/// Returns a Future that completes once all the [serve] calls have been fully |
/// processed. |
- Future _await() { |
- if (_futures.futures.isEmpty) return new Future.value(); |
- return _futures.future.then((_) { |
- _futures = new FutureGroup(); |
- }); |
+ Future _await() async { |
+ _futures.close(); |
+ await _futures.future; |
+ _futures = new FutureGroup(); |
} |
/// Clears all existing packages from this builder. |