From 024b5b0ce8d958e97c4224574e35529e7fafbc38 Mon Sep 17 00:00:00 2001 From: Sam Rawlins Date: Thu, 20 Jan 2022 14:41:17 -0800 Subject: [PATCH] Add an option to skip unreachable SDK libraries --- lib/src/model/package_builder.dart | 22 ++++++++++++++++++---- test/end2end/dartdoc_test.dart | 3 ++- test/mustachio/renderers_output_test.dart | 3 ++- test/warnings_test.dart | 3 ++- 4 files changed, 24 insertions(+), 7 deletions(-) diff --git a/lib/src/model/package_builder.dart b/lib/src/model/package_builder.dart index 9c1a5bd917..20af7c5267 100644 --- a/lib/src/model/package_builder.dart +++ b/lib/src/model/package_builder.dart @@ -33,6 +33,7 @@ import 'package:dartdoc/src/package_meta.dart' import 'package:dartdoc/src/quiver.dart' as quiver; import 'package:dartdoc/src/render/renderer_factory.dart'; import 'package:dartdoc/src/special_elements.dart'; +import 'package:meta/meta.dart'; import 'package:path/path.dart' as path show Context; /// Everything you need to instantiate a PackageGraph object for documenting. @@ -49,7 +50,9 @@ class PubPackageBuilder implements PackageBuilder { final PackageConfigProvider packageConfigProvider; PubPackageBuilder( - this.config, this.packageMetaProvider, this.packageConfigProvider); + this.config, this.packageMetaProvider, this.packageConfigProvider, + {@visibleForTesting skipUnreachableSdkLibraries = false}) + : _skipUnreachableSdkLibraries = skipUnreachableSdkLibraries; @override Future buildPackageGraph() async { @@ -131,7 +134,7 @@ class PubPackageBuilder implements PackageBuilder { ); /// Returns an Iterable with the SDK files we should parse. - Iterable getSdkFilesToDocument() sync* { + Iterable _getSdkFilesToDocument() sync* { for (var sdkLib in sdk.sdkLibraries) { var source = sdk.mapDartUri(sdkLib.shortName)!; yield source.fullName; @@ -175,6 +178,15 @@ class PubPackageBuilder implements PackageBuilder { } } + /// Whether to skip unreachable libraries when gathering all of the libraries + /// for the package graph. + /// + /// **TESTING ONLY** + /// + /// When generating dartdoc for any package, this flag should be `false`. This + /// is used in tests to dramatically speed up unit tests. + final bool _skipUnreachableSdkLibraries; + /// Parses libraries with the analyzer and invokes [addLibrary] with each /// result. /// @@ -219,7 +231,9 @@ class PubPackageBuilder implements PackageBuilder { // for that package. for (var meta in current.difference(lastPass)) { if (meta.isSdk) { - files.addAll(getSdkFilesToDocument()); + if (!_skipUnreachableSdkLibraries) { + files.addAll(_getSdkFilesToDocument()); + } } else { files.addAll(await findFilesToDocumentInPackage(meta.dir.path, autoIncludeDependencies: false, filterExcludes: false) @@ -330,7 +344,7 @@ class PubPackageBuilder implements PackageBuilder { Future> _getFiles() async { Iterable files; if (config.topLevelPackageMeta.isSdk) { - files = getSdkFilesToDocument(); + files = _getSdkFilesToDocument(); } else { files = await findFilesToDocumentInPackage(config.inputDir, autoIncludeDependencies: config.autoIncludeDependencies) diff --git a/test/end2end/dartdoc_test.dart b/test/end2end/dartdoc_test.dart index aa9c239a98..1b21917965 100644 --- a/test/end2end/dartdoc_test.dart +++ b/test/end2end/dartdoc_test.dart @@ -106,7 +106,8 @@ void main() { return await Dartdoc.fromContext( context, PubPackageBuilder( - context, pubPackageMetaProvider, PhysicalPackageConfigProvider()), + context, pubPackageMetaProvider, PhysicalPackageConfigProvider(), + skipUnreachableSdkLibraries: true), ); } diff --git a/test/mustachio/renderers_output_test.dart b/test/mustachio/renderers_output_test.dart index 148d76e596..7a8dd95588 100644 --- a/test/mustachio/renderers_output_test.dart +++ b/test/mustachio/renderers_output_test.dart @@ -48,7 +48,8 @@ void main() { var dartdoc = await Dartdoc.fromContext( context, PubPackageBuilder( - context, pubPackageMetaProvider, PhysicalPackageConfigProvider()), + context, pubPackageMetaProvider, PhysicalPackageConfigProvider(), + skipUnreachableSdkLibraries: true), ); var packageGraph = await dartdoc.packageBuilder.buildPackageGraph(); diff --git a/test/warnings_test.dart b/test/warnings_test.dart index 3e7aabe60e..e4558cbb2a 100644 --- a/test/warnings_test.dart +++ b/test/warnings_test.dart @@ -237,7 +237,8 @@ class Lib2Class {} var dartdoc = await Dartdoc.fromContext( context, PubPackageBuilder( - context, pubPackageMetaProvider, PhysicalPackageConfigProvider()), + context, pubPackageMetaProvider, PhysicalPackageConfigProvider(), + skipUnreachableSdkLibraries: true), ); var packageGraph = await dartdoc.packageBuilder.buildPackageGraph();