@@ -209,6 +209,10 @@ void analyze() async {
209209 );
210210}
211211
212+ @Task ('analyze, test, and self-test dartdoc' )
213+ @Depends (analyze, checkBuild, test, testDartdoc)
214+ void buildbotNoPublish () => null ;
215+
212216@Task ('analyze, test, and self-test dartdoc' )
213217@Depends (analyze, checkBuild, test, testDartdoc, tryPublish)
214218void buildbot () => null ;
@@ -362,6 +366,51 @@ Future<String> createComparisonDartdoc() async {
362366 return dartdocClean.path;
363367}
364368
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+
365414Future <List <Map >> _buildSdkDocs (String sdkDocsPath, Future <String > futureCwd,
366415 [String label]) async {
367416 if (label == null ) label = '' ;
0 commit comments