[pigeon] cleaned up run_test.sh (#325)

cleaned up run_test.sh, allowed you to specify what you want to run
diff --git a/packages/pigeon/lib/dart_generator.dart b/packages/pigeon/lib/dart_generator.dart
index 95f92f4..41c1dcb 100644
--- a/packages/pigeon/lib/dart_generator.dart
+++ b/packages/pigeon/lib/dart_generator.dart
@@ -137,8 +137,8 @@
               final String emptyReturnStatement = isMockHandler
                   ? 'return <Object$nullTag, Object$nullTag>{};'
                   : func.returnType == 'void'
-                  ? 'return;'
-                  : 'return null;';
+                      ? 'return;'
+                      : 'return null;';
               String call;
               if (argType == 'void') {
                 indent.writeln('// ignore message');
diff --git a/packages/pigeon/run_tests.sh b/packages/pigeon/run_tests.sh
index d99e2e4..bc6ce58 100755
--- a/packages/pigeon/run_tests.sh
+++ b/packages/pigeon/run_tests.sh
@@ -1,3 +1,4 @@
+#!/bin/bash
 ###############################################################################
 # run_tests.sh
 #
@@ -6,22 +7,7 @@
 ###############################################################################
 
 # exit when any command fails
-set -ex
-
-JAVA_LINTER=checkstyle-8.41-all.jar
-JAVA_FORMATTER=google-java-format-1.3-all-deps.jar
-GOOGLE_CHECKS=google_checks.xml
-GOOGLE_CHECKS_VERSION=7190c47ca5515ad8cb827bc4065ae7664d2766c1
-JAVA_ERROR_PRONE=error_prone_core-2.5.1-with-dependencies.jar
-DATAFLOW_SHADED=dataflow-shaded-3.7.1.jar
-JFORMAT_STRING=jFormatString-3.0.0.jar
-JAVA_VERSION=$(java -version 2>&1 | head -1 | cut -d'"' -f2 | sed '/^1\./s///' | cut -d'.' -f1)
-JAVAC_JAR=javac-9+181-r4173-1.jar
-if [ $JAVA_VERSION == "8" ]; then
-  JAVAC_BOOTCLASSPATH="-J-Xbootclasspath/p:ci/$JAVAC_JAR"
-else
-  JAVAC_BOOTCLASSPATH=
-fi
+set -e
 
 # TODO(blasten): Enable on stable when possible.
 # https://github.com/flutter/flutter/issues/75187
@@ -36,8 +22,23 @@
 flutter_bin=$(dirname $flutter)
 framework_path="$flutter_bin/cache/artifacts/engine/ios/"
 
+java_linter=checkstyle-8.41-all.jar
+java_formatter=google-java-format-1.3-all-deps.jar
+google_checks=google_checks.xml
+google_checks_version=7190c47ca5515ad8cb827bc4065ae7664d2766c1
+java_error_prone=error_prone_core-2.5.1-with-dependencies.jar
+dataflow_shaded=dataflow-shaded-3.7.1.jar
+jformat_string=jFormatString-3.0.0.jar
+java_version=$(java -version 2>&1 | head -1 | cut -d'"' -f2 | sed '/^1\./s///' | cut -d'.' -f1)
+javac_jar=javac-9+181-r4173-1.jar
+if [ $java_version == "8" ]; then
+  javac_bootclasspath="-J-Xbootclasspath/p:ci/$javac_jar"
+else
+  javac_bootclasspath=
+fi
+
 ###############################################################################
-# Functions
+# Helper Functions
 ###############################################################################
 
 # Create a temporary directory in a way that works on both Linux and macOS.
@@ -49,9 +50,10 @@
 
 # test_pigeon_ios(<path to pigeon file>)
 #
-# Compiles the pigeon file to a temp directory and attempts to compile the code
-# and runs the dart analyzer on the generated dart code.
+# Compiles the pigeon file to a temp directory and attempts to compile the objc
+# code.
 test_pigeon_ios() {
+  echo "test_pigeon_ios($1)"
   temp_dir=$(mktmpdir)
 
   pub run pigeon \
@@ -76,8 +78,10 @@
 
 # test_pigeon_android(<path to pigeon file>)
 #
-# Compiles the pigeon file to a temp directory and attempts to compile the code.
+# Compiles the pigeon file to a temp directory and attempts to compile the java
+# code.
 test_pigeon_android() {
+  echo "test_pigeon_android($1)"
   temp_dir=$(mktmpdir)
 
   pub run pigeon \
@@ -86,12 +90,12 @@
     --java_out $temp_dir/Pigeon.java \
     --java_package foo
 
-  java -jar ci/$JAVA_FORMATTER --replace "$temp_dir/Pigeon.java"
-  java -jar ci/$JAVA_LINTER -c "ci/$GOOGLE_CHECKS" "$temp_dir/Pigeon.java"
+  java -jar ci/$java_formatter --replace "$temp_dir/Pigeon.java"
+  java -jar ci/$java_linter -c "ci/$google_checks" "$temp_dir/Pigeon.java"
   if ! javac \
-    $JAVAC_BOOTCLASSPATH \
+    $javac_bootclasspath \
     -XDcompilePolicy=simple \
-    -processorpath "ci/$JAVA_ERROR_PRONE:ci/$DATAFLOW_SHADED:ci/$JFORMAT_STRING" \
+    -processorpath "ci/$java_error_prone:ci/$dataflow_shaded:ci/$jformat_string" \
     '-Xplugin:ErrorProne -Xep:CatchingUnchecked:ERROR' \
     -classpath "$flutter_bin/cache/artifacts/engine/android-x64/flutter.jar" \
     $temp_dir/Pigeon.java; then
@@ -99,182 +103,327 @@
     exit 1
   fi
 
-  dartfmt -w $temp_dir/pigeon.dart
-  dartanalyzer $temp_dir/pigeon.dart --fatal-infos --fatal-warnings --packages ./e2e_tests/test_objc/.packages
-
   rm -rf $temp_dir
 }
 
 # test_null_safe_dart(<path to pigeon file>)
 #
 # Compiles the pigeon file to a temp directory and attempts to run the dart
-# analyzer on it with null safety turned on.
-test_null_safe_dart() {
-  temp_dir=$(mktmpdir)
+# analyzer on it with and without null safety turned on.
+test_pigeon_dart() {
+  echo "test_pigeon_dart($1)"
+  temp_dir_1=$(mktmpdir)
+  temp_dir_2=$(mktmpdir)
 
   pub run pigeon \
     --input $1 \
-    --dart_out $temp_dir/pigeon.dart
+    --dart_out $temp_dir_1/pigeon.dart &
+  null_safe_gen_pid=$!
 
-  dartanalyzer $temp_dir/pigeon.dart --fatal-infos --fatal-warnings --packages ./e2e_tests/test_objc/.packages
-  rm -rf $temp_dir
+  pub run pigeon \
+    --no-dart_null_safety \
+    --input $1 \
+    --dart_out $temp_dir_2/pigeon.dart &
+  non_null_safe_gen_pid=$!
+
+  wait $null_safe_gen_pid
+  wait $non_null_safe_gen_pid
+
+  # `./e2e_tests/test_objc/.packages` is used to get access to Flutter since
+  # Pigeon doesn't depend on Flutter.
+  dartanalyzer $temp_dir_1/pigeon.dart --fatal-infos --fatal-warnings --packages ./e2e_tests/test_objc/.packages &
+  null_safe_analyze_pid=$!
+  dartanalyzer $temp_dir_2/pigeon.dart --fatal-infos --fatal-warnings --packages ./e2e_tests/test_objc/.packages &
+  non_null_safe_analyze_pid=$!
+
+  wait $null_safe_analyze_pid
+  wait $non_null_safe_analyze_pid
+
+  rm -rf $temp_dir_1
+  rm -rf $temp_dir_2
+}
+
+print_usage() {
+  echo "usage: ./run_tests.sh [-l] [-t test_name]
+
+flags:
+  -t test_name: Run only specified test.
+  -l          : List available tests.
+"
 }
 
 ###############################################################################
-# Get java linter / formatter
+# Stages
 ###############################################################################
-if [ ! -f "ci/$JAVA_LINTER" ]; then
-  curl -L https://github.com/checkstyle/checkstyle/releases/download/checkstyle-8.41/$JAVA_LINTER > "ci/$JAVA_LINTER"
-fi
-if [ ! -f "ci/$JAVA_FORMATTER" ]; then
-  curl -L https://github.com/google/google-java-format/releases/download/google-java-format-1.3/$JAVA_FORMATTER > "ci/$JAVA_FORMATTER"
-fi
-if [ ! -f "ci/$GOOGLE_CHECKS" ]; then
-  curl -L https://raw.githubusercontent.com/checkstyle/checkstyle/$GOOGLE_CHECKS_VERSION/src/main/resources/$GOOGLE_CHECKS > "ci/$GOOGLE_CHECKS"
-fi
-if [ ! -f "ci/$JAVA_ERROR_PRONE" ]; then
-  curl https://repo1.maven.org/maven2/com/google/errorprone/error_prone_core/2.5.1/$JAVA_ERROR_PRONE > "ci/$JAVA_ERROR_PRONE"
-fi
-if [ ! -f "ci/$DATAFLOW_SHADED" ]; then
-  curl https://repo1.maven.org/maven2/org/checkerframework/dataflow-shaded/3.7.1/$DATAFLOW_SHADED > "ci/$DATAFLOW_SHADED"
-fi
-if [ ! -f "ci/$JFORMAT_STRING" ]; then
-  curl https://repo1.maven.org/maven2/com/google/code/findbugs/jFormatString/3.0.0/$JFORMAT_STRING > "ci/$JFORMAT_STRING"
-fi
-if [ ! -f "ci/$JAVAC_JAR" ]; then
-  curl https://repo1.maven.org/maven2/com/google/errorprone/javac/9+181-r4173-1/$JAVAC_JAR > "ci/$JAVAC_JAR"
-fi
+get_java_linter_formatter() {
+  if [ ! -f "ci/$java_linter" ]; then
+    curl -L https://github.com/checkstyle/checkstyle/releases/download/checkstyle-8.41/$java_linter >"ci/$java_linter"
+  fi
+  if [ ! -f "ci/$java_formatter" ]; then
+    curl -L https://github.com/google/google-java-format/releases/download/google-java-format-1.3/$java_formatter >"ci/$java_formatter"
+  fi
+  if [ ! -f "ci/$google_checks" ]; then
+    curl -L https://raw.githubusercontent.com/checkstyle/checkstyle/$google_checks_version/src/main/resources/$google_checks >"ci/$google_checks"
+  fi
+  if [ ! -f "ci/$java_error_prone" ]; then
+    curl https://repo1.maven.org/maven2/com/google/errorprone/error_prone_core/2.5.1/$java_error_prone >"ci/$java_error_prone"
+  fi
+  if [ ! -f "ci/$dataflow_shaded" ]; then
+    curl https://repo1.maven.org/maven2/org/checkerframework/dataflow-shaded/3.7.1/$dataflow_shaded >"ci/$dataflow_shaded"
+  fi
+  if [ ! -f "ci/$jformat_string" ]; then
+    curl https://repo1.maven.org/maven2/com/google/code/findbugs/jFormatString/3.0.0/$jformat_string >"ci/$jformat_string"
+  fi
+  if [ ! -f "ci/$javac_jar" ]; then
+    curl https://repo1.maven.org/maven2/com/google/errorprone/javac/9+181-r4173-1/$javac_jar >"ci/$javac_jar"
+  fi
+}
 
+run_dart_unittests() {
+  dart analyze bin
+  dart analyze lib
+  dart test
+}
 
-###############################################################################
-# Dart analysis and unit tests
-###############################################################################
-pub get
-dart analyze bin
-dart analyze lib
-dart test
+test_running_without_arguments() {
+  pub run pigeon 1>/dev/null
+}
 
-###############################################################################
-# Execute without arguments test
-###############################################################################
-pub run pigeon 1> /dev/null
-
-###############################################################################
-# Run unit tests on generated Dart code.
-###############################################################################
-pushd $PWD
-pub run pigeon \
+run_flutter_unittests() {
+  pushd $PWD
+  pub run pigeon \
     --input pigeons/message.dart \
     --dart_out platform_tests/flutter_null_safe_unit_tests/lib/null_safe_pigeon.dart
-cd platform_tests/flutter_null_safe_unit_tests
-flutter pub get
-flutter test test/null_safe_test.dart 
-popd
+  cd platform_tests/flutter_null_safe_unit_tests
+  flutter pub get
+  flutter test test/null_safe_test.dart
+  popd
+}
 
-###############################################################################
-# Mock handler flutter tests.
-###############################################################################
-pushd $PWD
-pub run pigeon \
-  --input pigeons/message.dart \
-  --dart_out mock_handler_tester/test/message.dart \
-  --dart_test_out mock_handler_tester/test/test.dart
-dartfmt -w mock_handler_tester/test/message.dart
-dartfmt -w mock_handler_tester/test/test.dart
-cd mock_handler_tester
-flutter test
-popd
+run_mock_handler_tests() {
+  pushd $PWD
+  pub run pigeon \
+    --input pigeons/message.dart \
+    --dart_out mock_handler_tester/test/message.dart \
+    --dart_test_out mock_handler_tester/test/test.dart
+  dartfmt -w mock_handler_tester/test/message.dart
+  dartfmt -w mock_handler_tester/test/test.dart
+  cd mock_handler_tester
+  flutter test
+  popd
+}
 
-###############################################################################
-# Compilation tests (Code is generated and compiled)
-###############################################################################
-# Make sure the artifacts are present.
-flutter precache
-# Make sure flutter dependencies are available.
-pushd $PWD
-cd e2e_tests/test_objc/
-flutter pub get
-popd
-test_pigeon_ios ./pigeons/async_handlers.dart
-test_null_safe_dart ./pigeons/message.dart
-test_pigeon_android ./pigeons/voidflutter.dart
-test_pigeon_android ./pigeons/voidhost.dart
-test_pigeon_android ./pigeons/host2flutter.dart
-test_pigeon_android ./pigeons/message.dart
-test_pigeon_android ./pigeons/void_arg_host.dart
-test_pigeon_android ./pigeons/void_arg_flutter.dart
-test_pigeon_android ./pigeons/list.dart
-test_pigeon_android ./pigeons/all_datatypes.dart
-test_pigeon_android ./pigeons/async_handlers.dart
-test_pigeon_ios ./pigeons/message.dart
-test_pigeon_ios ./pigeons/host2flutter.dart
-test_pigeon_ios ./pigeons/voidhost.dart
-test_pigeon_ios ./pigeons/voidflutter.dart
-test_pigeon_ios ./pigeons/void_arg_host.dart
-test_pigeon_ios ./pigeons/void_arg_flutter.dart
-test_pigeon_ios ./pigeons/list.dart
-test_pigeon_ios ./pigeons/all_datatypes.dart
+run_dart_compilation_tests() {
+  # Make sure the artifacts are present.
+  flutter precache
+  # Make sure flutter dependencies are available.
+  pushd $PWD
+  cd e2e_tests/test_objc/
+  flutter pub get
+  popd
+  test_pigeon_dart ./pigeons/all_datatypes.dart
+  test_pigeon_dart ./pigeons/async_handlers.dart
+  test_pigeon_dart ./pigeons/host2flutter.dart
+  test_pigeon_dart ./pigeons/list.dart
+  test_pigeon_dart ./pigeons/message.dart
+  test_pigeon_dart ./pigeons/void_arg_flutter.dart
+  test_pigeon_dart ./pigeons/void_arg_host.dart
+  test_pigeon_dart ./pigeons/voidflutter.dart
+  test_pigeon_dart ./pigeons/voidhost.dart
+}
 
-###############################################################################
-# iOS unit tests on generated code.
-###############################################################################
-pub run pigeon \
-  --no-dart_null_safety \
-  --input pigeons/message.dart \
-  --dart_out /dev/null \
-  --objc_header_out platform_tests/ios_unit_tests/ios/Runner/messages.h \
-  --objc_source_out platform_tests/ios_unit_tests/ios/Runner/messages.m
-pub run pigeon \
-  --no-dart_null_safety \
-  --input pigeons/async_handlers.dart \
-  --dart_out /dev/null \
-  --objc_header_out platform_tests/ios_unit_tests/ios/Runner/async_handlers.h \
-  --objc_source_out platform_tests/ios_unit_tests/ios/Runner/async_handlers.m
-clang-format -i platform_tests/ios_unit_tests/ios/Runner/messages.h
-clang-format -i platform_tests/ios_unit_tests/ios/Runner/messages.m
-clang-format -i platform_tests/ios_unit_tests/ios/Runner/async_handlers.h
-clang-format -i platform_tests/ios_unit_tests/ios/Runner/async_handlers.m
-pushd $PWD
-cd platform_tests/ios_unit_tests
-flutter build ios --simulator
-cd ios
-xcodebuild \
+run_java_compilation_tests() {
+  # Make sure the artifacts are present.
+  flutter precache
+  # Make sure flutter dependencies are available.
+  pushd $PWD
+  # We use e2e_tests/test_objc in order to get access to Flutter.
+  cd e2e_tests/test_objc/
+  flutter pub get
+  popd
+  test_pigeon_android ./pigeons/all_datatypes.dart
+  test_pigeon_android ./pigeons/async_handlers.dart
+  test_pigeon_android ./pigeons/host2flutter.dart
+  test_pigeon_android ./pigeons/list.dart
+  test_pigeon_android ./pigeons/message.dart
+  test_pigeon_android ./pigeons/void_arg_flutter.dart
+  test_pigeon_android ./pigeons/void_arg_host.dart
+  test_pigeon_android ./pigeons/voidflutter.dart
+  test_pigeon_android ./pigeons/voidhost.dart
+}
+
+run_objc_compilation_tests() {
+  # Make sure the artifacts are present.
+  flutter precache
+
+  test_pigeon_ios ./pigeons/all_datatypes.dart
+  test_pigeon_ios ./pigeons/async_handlers.dart
+  test_pigeon_ios ./pigeons/host2flutter.dart
+  test_pigeon_ios ./pigeons/list.dart
+  test_pigeon_ios ./pigeons/message.dart
+  test_pigeon_ios ./pigeons/void_arg_flutter.dart
+  test_pigeon_ios ./pigeons/void_arg_host.dart
+  test_pigeon_ios ./pigeons/voidflutter.dart
+  test_pigeon_ios ./pigeons/voidhost.dart
+}
+
+run_ios_unittests() {
+  pub run pigeon \
+    --no-dart_null_safety \
+    --input pigeons/message.dart \
+    --dart_out /dev/null \
+    --objc_header_out platform_tests/ios_unit_tests/ios/Runner/messages.h \
+    --objc_source_out platform_tests/ios_unit_tests/ios/Runner/messages.m
+  pub run pigeon \
+    --no-dart_null_safety \
+    --input pigeons/async_handlers.dart \
+    --dart_out /dev/null \
+    --objc_header_out platform_tests/ios_unit_tests/ios/Runner/async_handlers.h \
+    --objc_source_out platform_tests/ios_unit_tests/ios/Runner/async_handlers.m
+  clang-format -i platform_tests/ios_unit_tests/ios/Runner/messages.h
+  clang-format -i platform_tests/ios_unit_tests/ios/Runner/messages.m
+  clang-format -i platform_tests/ios_unit_tests/ios/Runner/async_handlers.h
+  clang-format -i platform_tests/ios_unit_tests/ios/Runner/async_handlers.m
+  pushd $PWD
+  cd platform_tests/ios_unit_tests
+  flutter build ios --simulator
+  cd ios
+  xcodebuild \
     -workspace Runner.xcworkspace \
     -scheme RunnerTests \
     -sdk iphonesimulator \
     -destination 'platform=iOS Simulator,name=iPhone 8' \
     test
-popd
+  popd
+}
+
+run_ios_e2e_tests() {
+  DARTLE_H="e2e_tests/test_objc/ios/Runner/dartle.h"
+  DARTLE_M="e2e_tests/test_objc/ios/Runner/dartle.m"
+  DARTLE_DART="e2e_tests/test_objc/lib/dartle.dart"
+  PIGEON_JAVA="e2e_tests/test_objc/android/app/src/main/java/io/flutter/plugins/Pigeon.java"
+  pub run pigeon \
+    --input pigeons/message.dart \
+    --dart_out $DARTLE_DART \
+    --objc_header_out $DARTLE_H \
+    --objc_source_out $DARTLE_M \
+    --java_out $PIGEON_JAVA
+  dartfmt -w $DARTLE_DART
+
+  pushd $PWD
+  cd e2e_tests/test_objc
+  flutter build ios -t test_driver/e2e_test.dart --simulator
+  cd ios
+  xcodebuild \
+    -workspace Runner.xcworkspace \
+    -scheme RunnerTests \
+    -sdk iphonesimulator \
+    -destination 'platform=iOS Simulator,name=iPhone 8' \
+    test
+  popd
+}
+
+run_formatter() {
+  cd ../..
+  pub global activate flutter_plugin_tools && pub global run flutter_plugin_tools format 2>/dev/null
+}
 
 ###############################################################################
-# End-to-end (e2e) integration tests.
+# main
 ###############################################################################
-DARTLE_H="e2e_tests/test_objc/ios/Runner/dartle.h"
-DARTLE_M="e2e_tests/test_objc/ios/Runner/dartle.m"
-DARTLE_DART="e2e_tests/test_objc/lib/dartle.dart"
-PIGEON_JAVA="e2e_tests/test_objc/android/app/src/main/java/io/flutter/plugins/Pigeon.java"
-pub run pigeon \
-  --input pigeons/message.dart \
-  --dart_out $DARTLE_DART \
-  --objc_header_out $DARTLE_H \
-  --objc_source_out $DARTLE_M \
-  --java_out $PIGEON_JAVA
-dartfmt -w $DARTLE_DART
+should_run_dart_compilation_tests=true
+should_run_dart_unittests=true
+should_run_flutter_unittests=true
+should_run_formatter=true
+should_run_ios_e2e_tests=true
+should_run_ios_unittests=true
+should_run_java_compilation_tests=true
+should_run_mock_handler_tests=true
+should_run_objc_compilation_tests=true
+while getopts "t:l?h" opt; do
+  case $opt in
+  t)
+    should_run_dart_compilation_tests=false
+    should_run_dart_unittests=false
+    should_run_flutter_unittests=false
+    should_run_formatter=false
+    should_run_ios_e2e_tests=false
+    should_run_ios_unittests=false
+    should_run_java_compilation_tests=false
+    should_run_mock_handler_tests=false
+    should_run_objc_compilation_tests=false
+    case $OPTARG in
+    dart_compilation_tests) should_run_dart_compilation_tests=true ;;
+    dart_unittests) should_run_dart_unittests=true ;;
+    flutter_unittests) should_run_flutter_unittests=true ;;
+    ios_e2e_tests) should_run_ios_e2e_tests=true ;;
+    ios_unittests) should_run_ios_unittests=true ;;
+    java_compilation_tests) should_run_java_compilation_tests=true ;;
+    mock_handler_tests) should_run_mock_handler_tests=true ;;
+    objc_compilation_tests) should_run_objc_compilation_tests=true ;;
+    *)
+      echo "unrecognized test: $OPTARG"
+      exit 1
+      ;;
+    esac
+    ;;
+  l)
+    echo "available tests for -t:
+  dart_compilation_tests - Compilation tests on generated Dart code.
+  dart_unittests         - Unit tests on and analysis on Pigeon's implementation.
+  flutter_unittests      - Unit tests on generated Dart code.
+  ios_e2e_tests          - End-to-end objc tests run on iOS Simulator
+  ios_unittests          - Unit tests on generated Objc code.
+  java_compilation_tests - Compilation tests on generated Java code.
+  mock_handler_tests     - Unit tests on generated Dart mock handler code.
+  objc_compilation_tests - Compilation tests on generated Objc code.
+  "
+    exit 1
+    ;;
+  \h)
+    print_usage
+    exit 1
+    ;;
+  \?)
+    print_usage
+    exit 1
+    ;;
+  ?)
+    print_usage
+    exit 1
+    ;;
+  esac
+done
 
-pushd $PWD
-cd e2e_tests/test_objc
-flutter build ios -t test_driver/e2e_test.dart --simulator
-cd ios
-xcodebuild \
-  -workspace Runner.xcworkspace \
-  -scheme RunnerTests \
-  -sdk iphonesimulator \
-  -destination 'platform=iOS Simulator,name=iPhone 8' \
-  test
-popd
-
-###############################################################################
-# Run the formatter on generated code.
-###############################################################################
-cd ../..
-pub global activate flutter_plugin_tools && pub global run flutter_plugin_tools format
+if [ "$should_run_java_compilation_tests" = true ]; then
+  get_java_linter_formatter
+fi
+pub get
+test_running_without_arguments
+if [ "$should_run_dart_unittests" = true ]; then
+  run_dart_unittests
+fi
+if [ "$should_run_flutter_unittests" = true ]; then
+  run_flutter_unittests
+fi
+if [ "$should_run_mock_handler_tests" = true ]; then
+  run_mock_handler_tests
+fi
+if [ "$should_run_dart_compilation_tests" = true ]; then
+  run_dart_compilation_tests
+fi
+if [ "$should_run_java_compilation_tests" = true ]; then
+  run_java_compilation_tests
+fi
+if [ "$should_run_objc_compilation_tests" = true ]; then
+  run_objc_compilation_tests
+fi
+if [ "$should_run_ios_unittests" = true ]; then
+  run_ios_unittests
+fi
+if [ "$should_run_ios_e2e_tests" = true ]; then
+  run_ios_e2e_tests
+fi
+if [ "$should_run_formatter" = true ]; then
+  run_formatter
+fi