@@ -33,6 +33,7 @@ import 'package:dartdoc/src/package_meta.dart'
33
33
import 'package:dartdoc/src/quiver.dart' as quiver;
34
34
import 'package:dartdoc/src/render/renderer_factory.dart' ;
35
35
import 'package:dartdoc/src/special_elements.dart' ;
36
+ import 'package:meta/meta.dart' ;
36
37
import 'package:path/path.dart' as path show Context;
37
38
38
39
/// Everything you need to instantiate a PackageGraph object for documenting.
@@ -49,7 +50,9 @@ class PubPackageBuilder implements PackageBuilder {
49
50
final PackageConfigProvider packageConfigProvider;
50
51
51
52
PubPackageBuilder (
52
- this .config, this .packageMetaProvider, this .packageConfigProvider);
53
+ this .config, this .packageMetaProvider, this .packageConfigProvider,
54
+ {@visibleForTesting skipUnreachableSdkLibraries = false })
55
+ : _skipUnreachableSdkLibraries = skipUnreachableSdkLibraries;
53
56
54
57
@override
55
58
Future <PackageGraph > buildPackageGraph () async {
@@ -131,7 +134,7 @@ class PubPackageBuilder implements PackageBuilder {
131
134
);
132
135
133
136
/// Returns an Iterable with the SDK files we should parse.
134
- Iterable <String > getSdkFilesToDocument () sync * {
137
+ Iterable <String > _getSdkFilesToDocument () sync * {
135
138
for (var sdkLib in sdk.sdkLibraries) {
136
139
var source = sdk.mapDartUri (sdkLib.shortName)! ;
137
140
yield source.fullName;
@@ -175,6 +178,15 @@ class PubPackageBuilder implements PackageBuilder {
175
178
}
176
179
}
177
180
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
+
178
190
/// Parses libraries with the analyzer and invokes [addLibrary] with each
179
191
/// result.
180
192
///
@@ -219,7 +231,9 @@ class PubPackageBuilder implements PackageBuilder {
219
231
// for that package.
220
232
for (var meta in current.difference (lastPass)) {
221
233
if (meta.isSdk) {
222
- files.addAll (getSdkFilesToDocument ());
234
+ if (! _skipUnreachableSdkLibraries) {
235
+ files.addAll (_getSdkFilesToDocument ());
236
+ }
223
237
} else {
224
238
files.addAll (await findFilesToDocumentInPackage (meta.dir.path,
225
239
autoIncludeDependencies: false , filterExcludes: false )
@@ -330,7 +344,7 @@ class PubPackageBuilder implements PackageBuilder {
330
344
Future <Set <String >> _getFiles () async {
331
345
Iterable <String > files;
332
346
if (config.topLevelPackageMeta.isSdk) {
333
- files = getSdkFilesToDocument ();
347
+ files = _getSdkFilesToDocument ();
334
348
} else {
335
349
files = await findFilesToDocumentInPackage (config.inputDir,
336
350
autoIncludeDependencies: config.autoIncludeDependencies)
0 commit comments