Chromium Code Reviews| Index: lib/src/io.dart |
| diff --git a/lib/src/io.dart b/lib/src/io.dart |
| index 92259fd5ae34c57933b145c9d785d1cb39332505..fbd4608d71e44c15ec45988c01d326a9d83af4aa 100644 |
| --- a/lib/src/io.dart |
| +++ b/lib/src/io.dart |
| @@ -493,11 +493,16 @@ final bool runningFromTest = Platform.script.path.endsWith('.test.snapshot'); |
| final bool runningFromSdk = |
| !runningFromTest && Platform.script.path.endsWith('.snapshot'); |
| +/// A regular expression to match the script path of a pub script running from |
| +/// source in the Dart repo. |
| +final _dartRepoRegExp = new RegExp( |
| + r"/third_party/pkg_tested/pub/(bin/pub.dart|test/.*_test.dart)$"); |
|
Bob Nystrom
2015/05/29 20:15:55
".dart" -> "\.dart".
nweiz
2015/05/29 20:33:32
Done.
|
| + |
| /// Whether pub is running from source in the Dart repo. |
| /// |
| /// This can happen when building Observatory, for example. |
| final bool runningFromDartRepo = |
| - Platform.script.path.endsWith('/third_party/pkg_tested/pub/bin/pub.dart'); |
| + Platform.script.path.contains(_dartRepoRegExp); |
| /// Resolves [target] relative to the path to pub's `asset` directory. |
| String assetPath(String target) => runningFromSdk |
| @@ -546,9 +551,11 @@ final String dartRepoRoot = (() { |
| throw new StateError("Not running from source in the Dart repo."); |
| } |
| - // In the Dart repo, the script is in "third_party/pkg_tested/pub/bin". |
| - return path.dirname(path.dirname(path.dirname(path.dirname(path.dirname( |
| - path.fromUri(Platform.script)))))); |
| + // Get the URL of the repo root in a way that works when either both running |
| + // as a test or as a pub executable. |
| + var url = Platform.script.replace( |
| + path: Platform.script.path.replaceAll(_dartRepoRegExp, '')); |
| + return path.fromUri(url); |
| })(); |
| /// A line-by-line stream of standard input. |