switch tool tests to build runner (#28759)

diff --git a/dev/bots/test.dart b/dev/bots/test.dart
index 74e32e2..08fe050 100644
--- a/dev/bots/test.dart
+++ b/dev/bots/test.dart
@@ -143,8 +143,9 @@
 Future<void> _runToolTests() async {
   await _runSmokeTests();
 
-  await _pubRunTest(
+  await _buildRunnerTest(
     path.join(flutterRoot, 'packages', 'flutter_tools'),
+    flutterRoot,
     enableFlutterToolAsserts: true,
   );
 
@@ -306,6 +307,41 @@
   print('${bold}DONE: Coverage collection successful.$reset');
 }
 
+Future<void> _buildRunnerTest(
+  String workingDirectory,
+  String flutterRoot, {
+   String testPath,
+   bool enableFlutterToolAsserts = false,
+  }
+) {
+  final List<String> args = <String>['run', 'build_runner', 'test', '--', '-rcompact', '-j1'];
+  if (!hasColor) {
+    args.add('--no-color');
+  }
+  if (testPath != null) {
+    args.add(testPath);
+  }
+  final Map<String, String> pubEnvironment = <String, String>{
+    'FLUTTER_ROOT': flutterRoot,
+  };
+  if (Directory(pubCache).existsSync()) {
+    pubEnvironment['PUB_CACHE'] = pubCache;
+  }
+  if (enableFlutterToolAsserts) {
+    // If an existing env variable exists append to it, but only if
+    // it doesn't appear to already include enable-asserts.
+    String toolsArgs = Platform.environment['FLUTTER_TOOL_ARGS'] ?? '';
+    if (!toolsArgs.contains('--enable-asserts'))
+        toolsArgs += ' --enable-asserts';
+    pubEnvironment['FLUTTER_TOOL_ARGS'] = toolsArgs.trim();
+  }
+  return runCommand(
+    pub, args,
+    workingDirectory: workingDirectory,
+    environment: pubEnvironment,
+  );
+}
+
 Future<void> _pubRunTest(
   String workingDirectory, {
   String testPath,