@@ -209,6 +209,10 @@ void analyze() async {
209
209
);
210
210
}
211
211
212
+ @Task ('analyze, test, and self-test dartdoc' )
213
+ @Depends (analyze, checkBuild, test, testDartdoc)
214
+ void buildbotNoPublish () => null ;
215
+
212
216
@Task ('analyze, test, and self-test dartdoc' )
213
217
@Depends (analyze, checkBuild, test, testDartdoc, tryPublish)
214
218
void buildbot () => null ;
@@ -362,6 +366,51 @@ Future<String> createComparisonDartdoc() async {
362
366
return dartdocClean.path;
363
367
}
364
368
369
+ /// Helper function to create a clean version of dartdoc (based on the current
370
+ /// directory, assumed to be a git repository), configured to use the head
371
+ /// version of the Dart SDK for analyzer, front-end, and kernel.
372
+ Future <String > createSdkDartdoc () async {
373
+ var launcher = new SubprocessLauncher ('create-sdk-dartdoc' );
374
+ Directory dartdocSdk = Directory .systemTemp.createTempSync ('dartdoc-sdk' );
375
+ await launcher
376
+ .runStreamed ('git' , ['clone' , Directory .current.path, dartdocSdk.path]);
377
+ await launcher.runStreamed ('git' , ['checkout' ],
378
+ workingDirectory: dartdocSdk.path);
379
+
380
+ Directory sdkClone = Directory .systemTemp.createTempSync ('sdk-checkout' );
381
+ await launcher.runStreamed ('git' , [
382
+ 'clone' ,
383
+ '--depth' ,
384
+ '1' ,
385
+ 'https://github.com/dart-lang/sdk.git' ,
386
+ sdkClone.path
387
+ ]);
388
+ File dartdocPubspec = new File (pathLib.join (dartdocSdk.path, 'pubspec.yaml' ));
389
+ dartdocPubspec.writeAsStringSync ('''
390
+ dependency_overrides:
391
+ analyzer:
392
+ path: '${sdkClone .path }/pkg/analyzer'
393
+ front_end:
394
+ path: '${sdkClone .path }/pkg/front_end'
395
+ kernel:
396
+ path: '${sdkClone .path }/pkg/kernel'
397
+ ''' , mode: FileMode .append);
398
+
399
+ await launcher.runStreamed (sdkBin ('pub' ), ['get' ],
400
+ workingDirectory: dartdocSdk.path);
401
+ return dartdocSdk.path;
402
+ }
403
+
404
+ @Task ('Run grind tasks with the analyzer SDK.' )
405
+ Future <void > testWithAnalyzerSdk () async {
406
+ var launcher = new SubprocessLauncher ('test-with-analyzer-sdk' );
407
+ var sdkDartdoc = await createSdkDartdoc ();
408
+ final String defaultGrindParameter =
409
+ Platform .environment['DARTDOC_GRIND_STEP' ] ?? 'test' ;
410
+ await launcher.runStreamed (sdkBin ('pub' ), ['run' , 'grinder' , defaultGrindParameter],
411
+ workingDirectory: sdkDartdoc);
412
+ }
413
+
365
414
Future <List <Map >> _buildSdkDocs (String sdkDocsPath, Future <String > futureCwd,
366
415
[String label]) async {
367
416
if (label == null ) label = '' ;
0 commit comments