| Index: sdk/lib/_internal/dartdoc/test/dartdoc_test.dart
|
| diff --git a/sdk/lib/_internal/dartdoc/test/dartdoc_test.dart b/sdk/lib/_internal/dartdoc/test/dartdoc_test.dart
|
| index e588aa5aa6aad5ce5572b6e7339f2f102c5d7284..e5b67872a54093312f97b4c7dcde43e81fc9ad95 100644
|
| --- a/sdk/lib/_internal/dartdoc/test/dartdoc_test.dart
|
| +++ b/sdk/lib/_internal/dartdoc/test/dartdoc_test.dart
|
| @@ -7,16 +7,15 @@ library dartdocTests;
|
|
|
| import 'dart:async';
|
| import 'dart:io';
|
| -import '../../../../../pkg/pathos/lib/path.dart' as path;
|
| +
|
| +import 'package:pathos/path.dart' as path;
|
| +import 'package:unittest/unittest.dart';
|
|
|
| // TODO(rnystrom): Use "package:" URL (#4968).
|
| import '../lib/dartdoc.dart' as dd;
|
| import '../lib/markdown.dart';
|
| import 'markdown_test.dart';
|
|
|
| -// TODO(rnystrom): Better path to unittest.
|
| -import '../../../../../pkg/unittest/lib/unittest.dart';
|
| -
|
| // Pretty test config with --human
|
| import '../../../../../utils/tests/pub/command_line_config.dart';
|
|
|
| @@ -237,11 +236,8 @@ void _testRunDartDoc(List<String> libraryPaths, void eval(ProcessResult)) {
|
| expect(_runDartdoc(libraryPaths).then(eval), completes);
|
| }
|
|
|
| -/// Runs dartdoc with the libraryPaths provided, and completes to dartdoc's
|
| -/// ProcessResult.
|
| -Future<ProcessResult> _runDartdoc(List<String> libraryPaths) {
|
| - var dartBin = new Options().executable;
|
| -
|
| +/// The path to the root directory of the dartdoc entrypoint.
|
| +String get _dartdocDir {
|
| var dir = path.absolute(new Options().script);
|
| while (path.basename(dir) != 'dartdoc') {
|
| if (!path.absolute(dir).contains('dartdoc') || dir == path.dirname(dir)) {
|
| @@ -249,9 +245,40 @@ Future<ProcessResult> _runDartdoc(List<String> libraryPaths) {
|
| }
|
| dir = path.dirname(dir);
|
| }
|
| - var dartdoc = path.join(path.absolute(dir), 'bin/dartdoc.dart');
|
| + return path.absolute(dir);
|
| +}
|
| +
|
| +/// The path to use for the package root for subprocesses.
|
| +String get _packageRoot {
|
| + var sdkVersionPath = path.join(_dartdocDir, '..', '..', '..', 'version');
|
| + if (new File(sdkVersionPath).existsSync()) {
|
| + // It looks like dartdoc is being run from the SDK, so we should set the
|
| + // package root to the SDK's packages directory.
|
| + return path.absolute(path.join(_dartdocDir, '..', '..', '..', 'packages'));
|
| + }
|
| +
|
| + // It looks like Dartdoc is being run from the Dart repo, so the package root
|
| + // is in the build output directory. We can find that directory relative to
|
| + // the Dart executable, but that could be in one of two places: in
|
| + // "$BUILD/dart" or "$BUILD/dart-sdk/bin/dart".
|
| + var executableDir = path.dirname(new Options().executable);
|
| + if (new Directory(path.join(executableDir, 'dart-sdk')).existsSync()) {
|
| + // The executable is in "$BUILD/dart".
|
| + return path.absolute(path.join(executableDir, 'packages'));
|
| + } else {
|
| + // The executable is in "$BUILD/dart-sdk/bin/dart".
|
| + return path.absolute(path.join(executableDir, '..', '..', 'packages'));
|
| + }
|
| +}
|
| +
|
| +/// Runs dartdoc with the libraryPaths provided, and completes to dartdoc's
|
| +/// ProcessResult.
|
| +Future<ProcessResult> _runDartdoc(List<String> libraryPaths) {
|
| + var dartBin = new Options().executable;
|
| +
|
| + var dartdoc = path.join(_dartdocDir, 'bin/dartdoc.dart');
|
|
|
| - final runArgs = [dartdoc];
|
| + final runArgs = ['--package-root=$_packageRoot/', dartdoc];
|
|
|
| // Turn relative libraryPaths to absolute ones.
|
| runArgs.addAll(libraryPaths
|
|
|