33// BSD-style license that can be found in the LICENSE file.
44
55import 'package:analyzer/file_system/memory_file_system.dart' ;
6+ import 'package:dartdoc/src/dartdoc.dart' ;
7+ import 'package:dartdoc/src/logging.dart' ;
68import 'package:dartdoc/src/model/model.dart' ;
79import 'package:dartdoc/src/package_config_provider.dart' ;
810import 'package:dartdoc/src/package_meta.dart' ;
911import 'package:meta/meta.dart' ;
12+ import 'package:path/path.dart' as path;
1013
1114import 'src/test_descriptor_utils.dart' as d;
1215import 'src/utils.dart' ;
@@ -25,7 +28,7 @@ abstract class DartdocTestBase {
2528 late final PackageMetaProvider packageMetaProvider;
2629 late final MemoryResourceProvider resourceProvider;
2730 late final FakePackageConfigProvider packageConfigProvider;
28- late final String packagePath;
31+ late String packagePath;
2932
3033 String get libraryName;
3134
@@ -42,15 +45,20 @@ abstract class DartdocTestBase {
4245
4346 bool get skipUnreachableSdkLibraries => true ;
4447
48+ late StringBuffer outBuffer;
49+ late StringBuffer errBuffer;
50+
4551 @mustCallSuper
4652 Future <void > setUp () async {
53+ outBuffer = StringBuffer ();
54+ errBuffer = StringBuffer ();
4755 packageMetaProvider = testPackageMetaProvider;
4856 resourceProvider =
4957 packageMetaProvider.resourceProvider as MemoryResourceProvider ;
50- await setUpPackage (libraryName );
58+ await _setUpPackage ( );
5159 }
5260
53- Future <void > setUpPackage ( String name ) async {
61+ Future <void > _setUpPackage ( ) async {
5462 var pubspec = d.buildPubspecText (sdkConstraint: sdkConstraint);
5563 String ? analysisOptions;
5664 if (experiments.isNotEmpty) {
@@ -60,7 +68,7 @@ analyzer:
6068''' ;
6169 }
6270 packagePath = await d.createPackage (
63- name ,
71+ libraryName ,
6472 pubspec: pubspec,
6573 analysisOptions: analysisOptions,
6674 resourceProvider: resourceProvider,
@@ -69,7 +77,7 @@ analyzer:
6977 packageConfigProvider =
7078 getTestPackageConfigProvider (packageMetaProvider.defaultSdkDir.path);
7179 packageConfigProvider.addPackageToConfigFor (
72- packagePath, name , Uri .file ('$packagePath /' ));
80+ packagePath, libraryName , Uri .file ('$packagePath /' ));
7381 }
7482
7583 Future <PackageGraph > _bootPackageFromFiles (Iterable <d.Descriptor > files,
@@ -158,4 +166,41 @@ $libraryContent
158166 .libraries
159167 .named (libraryName);
160168 }
169+
170+ Future <Dartdoc > buildDartdoc ({
171+ List <String > excludeLibraries = const [],
172+ List <String > additionalArguments = const [],
173+ bool skipUnreachableSdkLibraries = true ,
174+ bool useJson = false ,
175+ }) async {
176+ final dir = resourceProvider.getFolder (resourceProvider.pathContext
177+ .absolute (resourceProvider.pathContext.normalize (packagePath)));
178+ final context = await generatorContextFromArgv ([
179+ '--input' ,
180+ dir.path,
181+ '--output' ,
182+ path.join (packagePath, 'doc' ),
183+ '--sdk-dir' ,
184+ packageMetaProvider.defaultSdkDir.path,
185+ '--exclude' ,
186+ excludeLibraries.join (',' ),
187+ '--allow-tools' ,
188+ '--no-link-to-remote' ,
189+ ...additionalArguments,
190+ ], packageMetaProvider);
191+ final packageBuilder = PubPackageBuilder (
192+ context,
193+ packageMetaProvider,
194+ packageConfigProvider,
195+ skipUnreachableSdkLibraries: skipUnreachableSdkLibraries,
196+ );
197+ startLogging (
198+ isJson: useJson,
199+ isQuiet: true ,
200+ showProgress: true ,
201+ outSink: outBuffer,
202+ errSink: errBuffer,
203+ );
204+ return await Dartdoc .fromContext (context, packageBuilder);
205+ }
161206}
0 commit comments