Misc CI cleanup (#2913)

Co-authored-by: Sam Rawlins <srawlins@google.com>
diff --git a/analysis_options_presubmit.yaml b/analysis_options_presubmit.yaml
index f2bb88a..578bdec 100644
--- a/analysis_options_presubmit.yaml
+++ b/analysis_options_presubmit.yaml
@@ -10,8 +10,6 @@
     ### Extra ignores for presubmit
     deprecated_member_use: ignore
     deprecated_member_use_from_same_package: ignore
-    ### Temporary presubmit ignore for NNBD migration
-    import_of_legacy_library_into_null_safe: ignore
   language:
     strict-raw-types: true
   exclude:
diff --git a/tool/grind.dart b/tool/grind.dart
index 5f748fb..42536e6 100644
--- a/tool/grind.dart
+++ b/tool/grind.dart
@@ -174,42 +174,6 @@
   ]);
 }
 
-// TODO(jcollins-g): make a library out of this
-final FilePath _pkgDir = FilePath('lib/src/third_party/pkg');
-final FilePath _mustache4dartDir =
-    FilePath('lib/src/third_party/pkg/mustache4dart');
-final RegExp _mustache4dartPatches =
-    RegExp(r'^\d\d\d-mustache4dart-.*[.]patch$');
-
-@Task('Update third_party forks')
-void updateThirdParty() async {
-  run('rm', arguments: ['-rf', _mustache4dartDir.path]);
-  Directory(_pkgDir.path).createSync(recursive: true);
-  run('git', arguments: [
-    'clone',
-    '--branch',
-    'v2.1.2',
-    '--depth=1',
-    'git@github.com:valotas/mustache4dart',
-    _mustache4dartDir.path,
-  ]);
-  run('rm', arguments: ['-rf', path.join(_mustache4dartDir.path, '.git')]);
-  for (var patchFileName in Directory(_pkgDir.path)
-      .listSync()
-      .map((e) => path.basename(e.path))
-      .where(_mustache4dartPatches.hasMatch)
-      .toList()
-    ..sort()) {
-    run('patch',
-        arguments: [
-          '-p0',
-          '-i',
-          patchFileName,
-        ],
-        workingDirectory: _pkgDir.path);
-  }
-}
-
 @Task('Analyze dartdoc to ensure there are no errors and warnings')
 @Depends(analyzeTestPackages)
 void analyze() async {
@@ -448,7 +412,7 @@
       .runStreamed('git', ['clone', Directory.current.path, dartdocClean.path]);
   await launcher.runStreamed('git', ['checkout', dartdocOriginalBranch],
       workingDirectory: dartdocClean.path);
-  await launcher.runStreamed(sdkBin('pub'), ['get'],
+  await launcher.runStreamed(sdkBin('dart'), ['pub', 'get'],
       workingDirectory: dartdocClean.path);
   return dartdocClean.path;
 }
@@ -499,7 +463,7 @@
   meta:
     path: '${sdkClone.path}/pkg/meta'
 ''', mode: FileMode.append);
-  await launcher.runStreamed(sdkBin('pub'), ['get'],
+  await launcher.runStreamed(sdkBin('dart'), ['pub', 'get'],
       workingDirectory: dartdocSdk.path);
   return dartdocSdk.path;
 }
@@ -515,7 +479,7 @@
   // analyzer 3.0.0.
   try {
     await launcher.runStreamed(
-        sdkBin('pub'), ['run', 'grinder', defaultGrindParameter],
+        sdkBin('dart'), ['pub', 'run', 'grinder', defaultGrindParameter],
         workingDirectory: sdkDartdoc);
   } catch (e, st) {
     print('Warning: SDK analyzer job threw "$e":\n$st');
@@ -528,7 +492,8 @@
   if (label != '') label = '-$label';
   var launcher = SubprocessLauncher('build-sdk-docs$label');
   var cwd = await futureCwd;
-  await launcher.runStreamed(sdkBin('pub'), ['get'], workingDirectory: cwd);
+  await launcher.runStreamed(sdkBin('dart'), ['pub', 'get'],
+      workingDirectory: cwd);
   return await launcher.runStreamed(
       Platform.resolvedExecutable,
       [
@@ -552,10 +517,10 @@
   if (label != '') label = '-$label';
   testPackagePath ??= testPackage.absolute.path;
   var launcher = SubprocessLauncher('build-test-package-docs$label');
-  var testPackagePubGet = launcher.runStreamed(sdkBin('pub'), ['get'],
+  var testPackagePubGet = launcher.runStreamed(sdkBin('dart'), ['pub', 'get'],
       workingDirectory: testPackagePath);
-  var dartdocPubGet =
-      launcher.runStreamed(sdkBin('pub'), ['get'], workingDirectory: cwd);
+  var dartdocPubGet = launcher.runStreamed(sdkBin('dart'), ['pub', 'get'],
+      workingDirectory: cwd);
   await Future.wait([testPackagePubGet, dartdocPubGet]);
   return await launcher.runStreamed(
       Platform.resolvedExecutable,
@@ -626,7 +591,8 @@
 Future<void> startTestPackageDocsServer() async {
   log('launching dhttpd on port 8002 for SDK');
   var launcher = SubprocessLauncher('serve-test-package-docs');
-  await launcher.runStreamed(sdkBin('pub'), [
+  await launcher.runStreamed(sdkBin('dart'), [
+    'pub',
     'global',
     'run',
     'dhttpd',
@@ -643,12 +609,21 @@
   log('launching dhttpd on port $port for $context');
   var launcher = SubprocessLauncher(context);
   if (!_serveReady) {
-    await launcher.runStreamed(sdkBin('pub'), ['get']);
-    await launcher.runStreamed(sdkBin('pub'), ['global', 'activate', 'dhttpd']);
+    await launcher.runStreamed(sdkBin('dart'), ['pub', 'get']);
+    await launcher
+        .runStreamed(sdkBin('dart'), ['pub', 'global', 'activate', 'dhttpd']);
     _serveReady = true;
   }
-  await launcher.runStreamed(sdkBin('pub'),
-      ['global', 'run', 'dhttpd', '--port', '$port', '--path', servePath]);
+  await launcher.runStreamed(sdkBin('dart'), [
+    'pub',
+    'global',
+    'run',
+    'dhttpd',
+    '--port',
+    '$port',
+    '--path',
+    servePath
+  ]);
 }
 
 @Task('Serve generated SDK docs locally with dhttpd on port 8000')
@@ -656,7 +631,8 @@
 Future<void> serveSdkDocs() async {
   log('launching dhttpd on port 8000 for SDK');
   var launcher = SubprocessLauncher('serve-sdk-docs');
-  await launcher.runStreamed(sdkBin('pub'), [
+  await launcher.runStreamed(sdkBin('dart'), [
+    'pub',
     'global',
     'run',
     'dhttpd',
@@ -697,8 +673,9 @@
 
   if (Platform.environment['SERVE_FLUTTER'] == '1') {
     var launcher = SubprocessLauncher('serve-flutter-docs');
-    await launcher.runStreamed(sdkBin('pub'), ['get']);
-    var original = launcher.runStreamed(sdkBin('pub'), [
+    await launcher.runStreamed(sdkBin('dart'), ['pub', 'get']);
+    var original = launcher.runStreamed(sdkBin('dart'), [
+      'pub',
       'global',
       'run',
       'dhttpd',
@@ -707,7 +684,8 @@
       '--path',
       path.join(originalDartdocFlutter.absolute.path, 'dev', 'docs', 'doc'),
     ]);
-    var current = launcher.runStreamed(sdkBin('pub'), [
+    var current = launcher.runStreamed(sdkBin('dart'), [
+      'pub',
       'global',
       'run',
       'dhttpd',
@@ -725,8 +703,9 @@
 Future<void> serveFlutterDocs() async {
   log('launching dhttpd on port 8001 for Flutter');
   var launcher = SubprocessLauncher('serve-flutter-docs');
-  await launcher.runStreamed(sdkBin('pub'), ['get']);
-  await launcher.runStreamed(sdkBin('pub'), [
+  await launcher.runStreamed(sdkBin('dart'), ['pub', 'get']);
+  await launcher.runStreamed(sdkBin('dart'), [
+    'pub',
     'global',
     'run',
     'dhttpd',
@@ -742,8 +721,9 @@
 Future<void> serveLanguageTestDocs() async {
   log('launching dhttpd on port 8004 for language tests');
   var launcher = SubprocessLauncher('serve-language-test-docs');
-  await launcher.runStreamed(sdkBin('pub'), ['get']);
-  await launcher.runStreamed(sdkBin('pub'), [
+  await launcher.runStreamed(sdkBin('dart'), ['pub', 'get']);
+  await launcher.runStreamed(sdkBin('dart'), [
+    'pub',
     'global',
     'run',
     'dhttpd',
@@ -1031,8 +1011,8 @@
 @Task('Rebuild generated files')
 Future<void> build() async {
   var launcher = SubprocessLauncher('build');
-  await launcher.runStreamed(sdkBin('pub'),
-      ['run', 'build_runner', 'build', '--delete-conflicting-outputs']);
+  await launcher.runStreamed(sdkBin('dart'),
+      ['pub', 'run', 'build_runner', 'build', '--delete-conflicting-outputs']);
 
   // TODO(jcollins-g): port to build system?
   var version = _getPackageVersion();
@@ -1094,27 +1074,27 @@
 @Depends(checkChangelogHasVersion)
 Future<void> tryPublish() async {
   var launcher = SubprocessLauncher('try-publish');
-  await launcher.runStreamed(sdkBin('pub'), ['publish', '-n']);
+  await launcher.runStreamed(sdkBin('dart'), ['pub', 'publish', '-n']);
 }
 
 @Task('Run a smoke test, only')
 @Depends(clean)
 Future<void> smokeTest() async {
-  await testDart2(smokeTestFiles);
+  await testDart(smokeTestFiles);
   await testFutures.tasksComplete;
 }
 
 @Task('Run non-smoke tests, only')
 @Depends(clean)
 Future<void> longTest() async {
-  await testDart2(testFiles);
+  await testDart(testFiles);
   await testFutures.tasksComplete;
 }
 
 @Task('Run all the tests.')
 @Depends(clean)
 Future<void> test() async {
-  await testDart2(smokeTestFiles.followedBy(testFiles));
+  await testDart(smokeTestFiles.followedBy(testFiles));
   await testFutures.tasksComplete;
 }
 
@@ -1142,21 +1122,21 @@
     .listSync(recursive: true)
     .whereType<File>()
     .where((e) => path.basename(e.path) == 'model_test.dart')
-    .toList();
+    .toList(growable: false);
 
 List<File> get testFiles => Directory('test')
     .listSync(recursive: true)
     .whereType<File>()
     .where((e) => e.path.endsWith('test.dart'))
     .where((e) => path.basename(e.path) != 'model_test.dart')
-    .toList();
+    .toList(growable: false);
 
-Future<void> testDart2(Iterable<File> tests) async {
+Future<void> testDart(Iterable<File> tests) async {
   var parameters = <String>['--enable-asserts'];
 
   for (var dartFile in tests) {
     await testFutures.add(() =>
-        CoverageSubprocessLauncher('dart2-${path.basename(dartFile.path)}')
+        CoverageSubprocessLauncher('dart-${path.basename(dartFile.path)}')
             .runStreamed(Platform.resolvedExecutable,
                 <String>[...parameters, dartFile.path]));
   }
@@ -1252,11 +1232,9 @@
 @Task('Validate the SDK doc build.')
 @Depends(buildSdkDocs)
 void validateSdkDocs() {
-  // TODO(jcollins-g): Remove flexibility in library counts once dev build
-  // includes https://dart-review.googlesource.com/c/sdk/+/93160
-  const expectedLibCounts = {0, 1};
-  const expectedSubLibCount = {18, 19, 20};
-  const expectedTotalCount = {18, 19, 20};
+  const expectedLibCounts = 0;
+  const expectedSubLibCount = {18, 19};
+  const expectedTotalCount = {18, 19};
   var indexHtml = joinFile(_sdkDocsDir, ['index.html']);
   if (!indexHtml.existsSync()) {
     fail('no index.html found for SDK docs');
@@ -1264,7 +1242,7 @@
   log('found index.html');
   var indexContents = indexHtml.readAsStringSync();
   var foundLibs = _findCount(indexContents, '  <li><a href="dart-');
-  if (!expectedLibCounts.contains(foundLibs)) {
+  if (expectedLibCounts != foundLibs) {
     fail('expected $expectedLibCounts "dart:" index.html entries, found '
         '$foundLibs');
   }
diff --git a/tool/travis.sh b/tool/travis.sh
index 0650bc3..0d91351 100755
--- a/tool/travis.sh
+++ b/tool/travis.sh
@@ -7,41 +7,34 @@
 # Fast fail the script on failures, and echo commands as they execute.
 set -ex
 
-# add globally activated packages to the path
-export PATH="$PATH":"~/.pub-cache/bin"
 DART_VERSION=`dart --version 2>&1 | awk '{print $4}'`
 # Do not run coverage on non-dev builds or non-Linux platforms.
 if ! echo "${DART_VERSION}" | grep -q dev || ! uname | grep -q Linux ; then
   unset COVERAGE_TOKEN
 fi
-# workaround for dart-lang/sdk#44027
-mkdir -p ~/.dart
 
 if [ "$DARTDOC_BOT" = "sdk-docs" ]; then
   # Build the SDK docs
   # silence stdout but echo stderr
   echo ""
   echo "Building and validating SDK docs..."
-  pub run grinder validate-sdk-docs
+  dart pub run grinder validate-sdk-docs
   echo "SDK docs process finished"
 elif [ "$DARTDOC_BOT" = "flutter" ]; then
   echo "Running flutter dartdoc bot"
-  pub run grinder validate-flutter-docs
+  dart pub run grinder validate-flutter-docs
 elif [ "$DARTDOC_BOT" = "packages" ]; then
   echo "Running packages dartdoc bot"
-  PACKAGE_NAME=angular PACKAGE_VERSION=">=7.0.0" DARTDOC_PARAMS="--include=angular" pub run grinder build-pub-package
-  PACKAGE_NAME=access PACKAGE_VERSION=">=1.0.1+2" pub run grinder build-pub-package
+  PACKAGE_NAME=angular PACKAGE_VERSION=">=7.0.0" DARTDOC_PARAMS="--include=angular" dart pub run grinder build-pub-package
+  PACKAGE_NAME=access PACKAGE_VERSION=">=1.0.1+2" dart pub run grinder build-pub-package
   # Negative test for flutter_plugin_tools, make sure right error message is displayed.
-  PACKAGE_NAME=flutter_plugin_tools PACKAGE_VERSION=">=0.0.14+1" pub run grinder build-pub-package 2>&1 | grep "warning: package:flutter_plugin_tools has no documentable libraries"
-  PACKAGE_NAME=shelf_exception_handler PACKAGE_VERSION=">=0.2.0" pub run grinder build-pub-package
+  PACKAGE_NAME=flutter_plugin_tools PACKAGE_VERSION=">=0.0.14+1" dart pub run grinder build-pub-package 2>&1 | grep "warning: package:flutter_plugin_tools has no documentable libraries"
+  PACKAGE_NAME=shelf_exception_handler PACKAGE_VERSION=">=0.2.0" dart pub run grinder build-pub-package
 elif [ "$DARTDOC_BOT" = "sdk-analyzer" ]; then
   echo "Running all tests against the SDK analyzer"
   unset COVERAGE_TOKEN
-  pub run grinder test-with-analyzer-sdk
-elif [ "$DARTDOC_BOT" = "nnbd" ]; then
-  echo "Running main dartdoc bot excluding publish test"
-  pub run grinder buildbot-no-publish
+  dart pub run grinder test-with-analyzer-sdk
 else
   echo "Running main dartdoc bot"
-  pub run grinder buildbot
+  dart pub run grinder buildbot
 fi