Skip to content

Commit ddbfaa5

Browse files
authored
Add an option to skip unreachable SDK libraries (#2912)
1 parent a3e4026 commit ddbfaa5

File tree

4 files changed

+24
-7
lines changed

4 files changed

+24
-7
lines changed

lib/src/model/package_builder.dart

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import 'package:dartdoc/src/package_meta.dart'
3333
import 'package:dartdoc/src/quiver.dart' as quiver;
3434
import 'package:dartdoc/src/render/renderer_factory.dart';
3535
import 'package:dartdoc/src/special_elements.dart';
36+
import 'package:meta/meta.dart';
3637
import 'package:path/path.dart' as path show Context;
3738

3839
/// Everything you need to instantiate a PackageGraph object for documenting.
@@ -49,7 +50,9 @@ class PubPackageBuilder implements PackageBuilder {
4950
final PackageConfigProvider packageConfigProvider;
5051

5152
PubPackageBuilder(
52-
this.config, this.packageMetaProvider, this.packageConfigProvider);
53+
this.config, this.packageMetaProvider, this.packageConfigProvider,
54+
{@visibleForTesting skipUnreachableSdkLibraries = false})
55+
: _skipUnreachableSdkLibraries = skipUnreachableSdkLibraries;
5356

5457
@override
5558
Future<PackageGraph> buildPackageGraph() async {
@@ -131,7 +134,7 @@ class PubPackageBuilder implements PackageBuilder {
131134
);
132135

133136
/// Returns an Iterable with the SDK files we should parse.
134-
Iterable<String> getSdkFilesToDocument() sync* {
137+
Iterable<String> _getSdkFilesToDocument() sync* {
135138
for (var sdkLib in sdk.sdkLibraries) {
136139
var source = sdk.mapDartUri(sdkLib.shortName)!;
137140
yield source.fullName;
@@ -175,6 +178,15 @@ class PubPackageBuilder implements PackageBuilder {
175178
}
176179
}
177180

181+
/// Whether to skip unreachable libraries when gathering all of the libraries
182+
/// for the package graph.
183+
///
184+
/// **TESTING ONLY**
185+
///
186+
/// When generating dartdoc for any package, this flag should be `false`. This
187+
/// is used in tests to dramatically speed up unit tests.
188+
final bool _skipUnreachableSdkLibraries;
189+
178190
/// Parses libraries with the analyzer and invokes [addLibrary] with each
179191
/// result.
180192
///
@@ -219,7 +231,9 @@ class PubPackageBuilder implements PackageBuilder {
219231
// for that package.
220232
for (var meta in current.difference(lastPass)) {
221233
if (meta.isSdk) {
222-
files.addAll(getSdkFilesToDocument());
234+
if (!_skipUnreachableSdkLibraries) {
235+
files.addAll(_getSdkFilesToDocument());
236+
}
223237
} else {
224238
files.addAll(await findFilesToDocumentInPackage(meta.dir.path,
225239
autoIncludeDependencies: false, filterExcludes: false)
@@ -330,7 +344,7 @@ class PubPackageBuilder implements PackageBuilder {
330344
Future<Set<String>> _getFiles() async {
331345
Iterable<String> files;
332346
if (config.topLevelPackageMeta.isSdk) {
333-
files = getSdkFilesToDocument();
347+
files = _getSdkFilesToDocument();
334348
} else {
335349
files = await findFilesToDocumentInPackage(config.inputDir,
336350
autoIncludeDependencies: config.autoIncludeDependencies)

test/end2end/dartdoc_test.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,8 @@ void main() {
106106
return await Dartdoc.fromContext(
107107
context,
108108
PubPackageBuilder(
109-
context, pubPackageMetaProvider, PhysicalPackageConfigProvider()),
109+
context, pubPackageMetaProvider, PhysicalPackageConfigProvider(),
110+
skipUnreachableSdkLibraries: true),
110111
);
111112
}
112113

test/mustachio/renderers_output_test.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ void main() {
4848
var dartdoc = await Dartdoc.fromContext(
4949
context,
5050
PubPackageBuilder(
51-
context, pubPackageMetaProvider, PhysicalPackageConfigProvider()),
51+
context, pubPackageMetaProvider, PhysicalPackageConfigProvider(),
52+
skipUnreachableSdkLibraries: true),
5253
);
5354

5455
var packageGraph = await dartdoc.packageBuilder.buildPackageGraph();

test/warnings_test.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,8 @@ class Lib2Class {}
237237
var dartdoc = await Dartdoc.fromContext(
238238
context,
239239
PubPackageBuilder(
240-
context, pubPackageMetaProvider, PhysicalPackageConfigProvider()),
240+
context, pubPackageMetaProvider, PhysicalPackageConfigProvider(),
241+
skipUnreachableSdkLibraries: true),
241242
);
242243

243244
var packageGraph = await dartdoc.packageBuilder.buildPackageGraph();

0 commit comments

Comments
 (0)