@@ -117,6 +117,9 @@ Directory get flutterDir => _flutterDir ??= createTempSync('flutter');
117117Directory get testPackage =>
118118 Directory (path.joinAll (['testing' , 'test_package' ]));
119119
120+ Directory get testPackageExperiments =>
121+ Directory (path.joinAll (['testing' , 'test_package_experiments' ]));
122+
120123Directory get pluginPackage =>
121124 Directory (path.joinAll (['testing' , 'test_package_flutter_plugin' ]));
122125
@@ -125,6 +128,11 @@ Directory _testPackageDocsDir;
125128Directory get testPackageDocsDir =>
126129 _testPackageDocsDir ?? = createTempSync ('test_package' );
127130
131+ Directory _testPackageExperimentsDocsDir;
132+ Directory get testPackageExperimentsDocsDir =>
133+ _testPackageExperimentsDocsDir ?? =
134+ createTempSync ('test_package_experiments' );
135+
128136Directory _pluginPackageDocsDir;
129137
130138Directory get pluginPackageDocsDir =>
@@ -497,15 +505,14 @@ Future<List<Map>> _buildSdkDocs(String sdkDocsPath, Future<String> futureCwd,
497505 workingDirectory: cwd);
498506}
499507
500- Future <List <Map >> _buildTestPackageDocs (
501- String outputDir, Future <String > futureCwd,
502- [String label]) async {
503- label ?? = '' ;
508+ Future <List <Map >> _buildTestPackageDocs (String outputDir, String cwd,
509+ {List <String > params, String label = '' , String testPackagePath}) async {
504510 if (label != '' ) label = '-$label ' ;
511+ testPackagePath ?? = testPackage.absolute.path;
512+ params ?? = [];
505513 var launcher = SubprocessLauncher ('build-test-package-docs$label ' );
506514 Future testPackagePubGet = launcher.runStreamed (sdkBin ('pub' ), ['get' ],
507- workingDirectory: testPackage.absolute.path);
508- var cwd = await futureCwd;
515+ workingDirectory: testPackagePath);
509516 Future dartdocPubGet =
510517 launcher.runStreamed (sdkBin ('pub' ), ['get' ], workingDirectory: cwd);
511518 await Future .wait ([testPackagePubGet, dartdocPubGet]);
@@ -522,16 +529,33 @@ Future<List<Map>> _buildTestPackageDocs(
522529 '--json' ,
523530 '--link-to-remote' ,
524531 '--pretty-index-json' ,
532+ ...params,
525533 ...extraDartdocParameters,
526534 ],
527- workingDirectory: testPackage.absolute.path);
535+ workingDirectory: testPackagePath);
536+ }
537+
538+ @Task ('Build generated test package docs from the experiment test package' )
539+ @Depends (clean)
540+ Future <void > buildTestExperimentsPackageDocs () async {
541+ await _buildTestPackageDocs (
542+ testPackageExperimentsDocsDir.absolute.path, Directory .current.path,
543+ testPackagePath: testPackageExperiments.absolute.path,
544+ params: ['--enable-experiment' , 'non-nullable' , '--no-link-to-remote' ]);
545+ }
546+
547+ @Task ('Serve experimental test package on port 8003.' )
548+ @Depends (buildTestExperimentsPackageDocs)
549+ Future <void > serveTestExperimentsPackageDocs () async {
550+ await _serveDocsFrom (testPackageExperimentsDocsDir.absolute.path, 8003 ,
551+ 'test-package-docs-experiments' );
528552}
529553
530554@Task ('Build generated test package docs (with inherited docs and source code)' )
531555@Depends (clean)
532556Future <void > buildTestPackageDocs () async {
533557 await _buildTestPackageDocs (
534- testPackageDocsDir.absolute.path, Future . value ( Directory .current.path) );
558+ testPackageDocsDir.absolute.path, Directory .current.path);
535559}
536560
537561@Task ('Serve test package docs locally with dhttpd on port 8002' )
@@ -549,11 +573,16 @@ Future<void> serveTestPackageDocs() async {
549573 ]);
550574}
551575
576+ bool _serveReady = false ;
577+
552578Future <void > _serveDocsFrom (String servePath, int port, String context) async {
553579 log ('launching dhttpd on port $port for $context ' );
554580 var launcher = SubprocessLauncher (context);
555- await launcher.runStreamed (sdkBin ('pub' ), ['get' ]);
556- await launcher.runStreamed (sdkBin ('pub' ), ['global' , 'activate' , 'dhttpd' ]);
581+ if (! _serveReady) {
582+ await launcher.runStreamed (sdkBin ('pub' ), ['get' ]);
583+ await launcher.runStreamed (sdkBin ('pub' ), ['global' , 'activate' , 'dhttpd' ]);
584+ _serveReady = true ;
585+ }
557586 await launcher.runStreamed (
558587 sdkBin ('pub' ), ['run' , 'dhttpd' , '--port' , '$port ' , '--path' , servePath]);
559588}
0 commit comments