3
3
// BSD-style license that can be found in the LICENSE file.
4
4
5
5
import 'package:analyzer/file_system/memory_file_system.dart' ;
6
+ import 'package:dartdoc/src/dartdoc.dart' ;
7
+ import 'package:dartdoc/src/logging.dart' ;
6
8
import 'package:dartdoc/src/model/model.dart' ;
7
9
import 'package:dartdoc/src/package_config_provider.dart' ;
8
10
import 'package:dartdoc/src/package_meta.dart' ;
9
11
import 'package:meta/meta.dart' ;
12
+ import 'package:path/path.dart' as path;
10
13
11
14
import 'src/test_descriptor_utils.dart' as d;
12
15
import 'src/utils.dart' ;
@@ -25,7 +28,7 @@ abstract class DartdocTestBase {
25
28
late final PackageMetaProvider packageMetaProvider;
26
29
late final MemoryResourceProvider resourceProvider;
27
30
late final FakePackageConfigProvider packageConfigProvider;
28
- late final String packagePath;
31
+ late String packagePath;
29
32
30
33
String get libraryName;
31
34
@@ -42,15 +45,20 @@ abstract class DartdocTestBase {
42
45
43
46
bool get skipUnreachableSdkLibraries => true ;
44
47
48
+ late StringBuffer outBuffer;
49
+ late StringBuffer errBuffer;
50
+
45
51
@mustCallSuper
46
52
Future <void > setUp () async {
53
+ outBuffer = StringBuffer ();
54
+ errBuffer = StringBuffer ();
47
55
packageMetaProvider = testPackageMetaProvider;
48
56
resourceProvider =
49
57
packageMetaProvider.resourceProvider as MemoryResourceProvider ;
50
- await setUpPackage (libraryName );
58
+ await _setUpPackage ( );
51
59
}
52
60
53
- Future <void > setUpPackage ( String name ) async {
61
+ Future <void > _setUpPackage ( ) async {
54
62
var pubspec = d.buildPubspecText (sdkConstraint: sdkConstraint);
55
63
String ? analysisOptions;
56
64
if (experiments.isNotEmpty) {
@@ -60,7 +68,7 @@ analyzer:
60
68
''' ;
61
69
}
62
70
packagePath = await d.createPackage (
63
- name ,
71
+ libraryName ,
64
72
pubspec: pubspec,
65
73
analysisOptions: analysisOptions,
66
74
resourceProvider: resourceProvider,
@@ -69,7 +77,7 @@ analyzer:
69
77
packageConfigProvider =
70
78
getTestPackageConfigProvider (packageMetaProvider.defaultSdkDir.path);
71
79
packageConfigProvider.addPackageToConfigFor (
72
- packagePath, name , Uri .file ('$packagePath /' ));
80
+ packagePath, libraryName , Uri .file ('$packagePath /' ));
73
81
}
74
82
75
83
Future <PackageGraph > _bootPackageFromFiles (Iterable <d.Descriptor > files,
@@ -158,4 +166,41 @@ $libraryContent
158
166
.libraries
159
167
.named (libraryName);
160
168
}
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
+ }
161
206
}
0 commit comments