Chromium Code Reviews| 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 ff5d9f9db1aebe6e56d5e2059722ce075e36ac57..77cac39731d453ebb352da1d048e205c78a28581 100644 |
| --- a/sdk/lib/_internal/pub/test/test_pub.dart |
| +++ b/sdk/lib/_internal/pub/test/test_pub.dart |
| @@ -606,6 +606,37 @@ void confirmPublish(ScheduledProcess pub) { |
| pub.writeLine("y"); |
| } |
| +/// Whether the async/await compiler has already been run. |
| +/// |
| +/// If a test suite runs pub more than once, we only need to run the compiler |
| +/// the first time. |
| +// TODO(rnystrom): Remove this when #104 is fixed. |
| +bool _compiledAsync = false; |
| + |
| +/// Gets the path to the pub entrypoint Dart script to run. |
| +// TODO(rnystrom): This exists to run the async/await compiler on pub and then |
| +// get the path to the output of that. Once #104 is fixed, remove this. |
| +String _getPubPath(String dartBin) { |
| + var buildDir = path.join(path.dirname(dartBin), '../../'); |
| + |
| + // Run the async/await compiler if needed. |
|
nweiz
2014/08/22 19:29:16
When I first read this, I was confused as to why e
Bob Nystrom
2014/08/25 17:40:00
Done.
|
| + if (!_compiledAsync) { |
| + var result = Process.runSync(dartBin, [ |
| + '--package-root=$_packageRoot/', |
| + path.join(testDirectory, '..', 'bin', 'async_compile.dart'), |
| + buildDir, |
| + '--silent' |
| + ]); |
| + stdout.write(result.stdout); |
| + stderr.write(result.stderr); |
| + if (result.exitCode != 0) fail("Async/await compiler failed."); |
| + |
| + _compiledAsync = true; |
| + } |
| + |
| + return path.join(buildDir, 'pub_async/bin/pub.dart'); |
| +} |
| + |
| /// Starts a Pub process and returns a [ScheduledProcess] that supports |
| /// interaction with that process. |
| /// |
| @@ -628,7 +659,10 @@ ScheduledProcess startPub({List args, Future<Uri> tokenEndpoint}) { |
| } |
| // Find the main pub entrypoint. |
| - var pubPath = path.join(testDirectory, '..', 'bin', 'pub.dart'); |
| + var pubPath = _getPubPath(dartBin); |
| + // TODO(rnystrom): Replace the above line with the following when #104 is |
| + // fixed. |
| + //var pubPath = path.join(testDirectory, '..', 'bin', 'pub.dart'); |
| var dartArgs = ['--package-root=$_packageRoot/', '--checked', pubPath, |
| '--verbose']; |