| Index: utils/tests/pub/test_pub.dart
|
| diff --git a/utils/tests/pub/test_pub.dart b/utils/tests/pub/test_pub.dart
|
| index 80137a0d5580a7fc73f3f8ba023ce963ca3a4522..c9479b3b6eab5f73cfff6085321532e8b723069c 100644
|
| --- a/utils/tests/pub/test_pub.dart
|
| +++ b/utils/tests/pub/test_pub.dart
|
| @@ -566,7 +566,7 @@ String get testDirectory {
|
| * Schedules a call to the Pub command-line utility. Runs Pub with [args] and
|
| * validates that its results match [output], [error], and [exitCode].
|
| */
|
| -void schedulePub({List<String> args, Pattern output, Pattern error,
|
| +void schedulePub({List args, Pattern output, Pattern error,
|
| Future<Uri> tokenEndpoint, int exitCode: 0}) {
|
| _schedule((sandboxDir) {
|
| return _doPub(runProcess, sandboxDir, args, tokenEndpoint)
|
| @@ -596,37 +596,36 @@ void schedulePub({List<String> args, Pattern output, Pattern error,
|
| });
|
| }
|
|
|
| -/**
|
| - * A shorthand for [schedulePub] and [run] when no validation needs to be done
|
| - * after Pub has been run.
|
| - */
|
| -void runPub({List<String> args, Pattern output, Pattern error,
|
| - int exitCode: 0}) {
|
| +/// A shorthand for [schedulePub] and [run] when no validation needs to be done
|
| +/// after Pub has been run.
|
| +///
|
| +/// Any futures in [args] will be resolved before the process is started.
|
| +void runPub({List args, Pattern output, Pattern error, int exitCode: 0}) {
|
| schedulePub(args: args, output: output, error: error, exitCode: exitCode);
|
| run();
|
| }
|
|
|
| /// Starts a Pub process and returns a [ScheduledProcess] that supports
|
| /// interaction with that process.
|
| -ScheduledProcess startPub({List<String> args}) {
|
| +///
|
| +/// Any futures in [args] will be resolved before the process is started.
|
| +ScheduledProcess startPub({List args, Future<Uri> tokenEndpoint}) {
|
| var process = _scheduleValue((sandboxDir) =>
|
| - _doPub(startProcess, sandboxDir, args));
|
| + _doPub(startProcess, sandboxDir, args, tokenEndpoint));
|
| return new ScheduledProcess("pub", process);
|
| }
|
|
|
| /// Like [startPub], but runs `pub lish` in particular with [server] used both
|
| /// as the OAuth2 server (with "/token" as the token endpoint) and as the
|
| /// package server.
|
| -ScheduledProcess startPubLish(ScheduledServer server, {List<String> args}) {
|
| - var process = _scheduleValue((sandboxDir) {
|
| - return server.url.chain((url) {
|
| - var tokenEndpoint = url.resolve('/token');
|
| - if (args == null) args = [];
|
| - args = flatten(['lish', '--server', url.toString(), args]);
|
| - return _doPub(startProcess, sandboxDir, args, tokenEndpoint);
|
| - });
|
| - });
|
| - return new ScheduledProcess("pub lish", process);
|
| +///
|
| +/// Any futures in [args] will be resolved before the process is started.
|
| +ScheduledProcess startPubLish(ScheduledServer server, {List args}) {
|
| + var tokenEndpoint = server.url.transform((url) =>
|
| + url.resolve('/token').toString());
|
| + if (args == null) args = [];
|
| + args = flatten(['lish', '--server', tokenEndpoint, args]);
|
| + return startPub(args: args, tokenEndpoint: tokenEndpoint);
|
| }
|
|
|
| /// Handles the beginning confirmation process for uploading a packages.
|
| @@ -649,10 +648,16 @@ void confirmPublish(ScheduledProcess pub) {
|
| /// Calls [fn] with appropriately modified arguments to run a pub process. [fn]
|
| /// should have the same signature as [startProcess], except that the returned
|
| /// [Future] may have a type other than [Process].
|
| -Future _doPub(Function fn, sandboxDir, List<String> args, Uri tokenEndpoint) {
|
| +Future _doPub(Function fn, sandboxDir, List args, Future<Uri> tokenEndpoint) {
|
| String pathInSandbox(path) => join(getFullPath(sandboxDir), path);
|
|
|
| - return ensureDir(pathInSandbox(appPath)).chain((_) {
|
| + return Futures.wait([
|
| + ensureDir(pathInSandbox(appPath)),
|
| + _awaitObject(args),
|
| + tokenEndpoint == null ? new Future.immediate(null) : tokenEndpoint
|
| + ]).chain((results) {
|
| + var args = results[1];
|
| + var tokenEndpoint = results[2];
|
| // Find a Dart executable we can use to spawn. Use the same one that was
|
| // used to run this script itself.
|
| var dartBin = new Options().executable;
|
|
|