Make the existing tests for the test command work with Skymeld.

Most of the changes in this CL concern what we print to the console in various cases.

PiperOrigin-RevId: 446964183
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/AnalysisAndExecutionPhaseRunner.java b/src/main/java/com/google/devtools/build/lib/buildtool/AnalysisAndExecutionPhaseRunner.java
index 5309790..f9d03c8 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/AnalysisAndExecutionPhaseRunner.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/AnalysisAndExecutionPhaseRunner.java
@@ -38,6 +38,7 @@
 import com.google.devtools.build.lib.server.FailureDetails.BuildConfiguration.Code;
 import com.google.devtools.build.lib.server.FailureDetails.FailureDetail;
 import com.google.devtools.build.lib.skyframe.BuildInfoCollectionFunction;
+import com.google.devtools.build.lib.skyframe.BuildResultListener;
 import com.google.devtools.build.lib.skyframe.PrecomputedValue;
 import com.google.devtools.build.lib.skyframe.TargetPatternPhaseValue;
 import com.google.devtools.build.lib.util.AbruptExitException;
@@ -114,7 +115,9 @@
             runAnalysisAndExecutionPhase(
                 env, request, loadingResult, buildOptions, request.getMultiCpus());
       }
-      // TODO(b/199053098) Report targets.
+      BuildResultListener buildResultListener = env.getBuildResultListener();
+      AnalysisPhaseRunner.reportTargets(
+          env, buildResultListener.getAnalyzedTargets(), buildResultListener.getAnalyzedTests());
 
     } else {
       env.getReporter().handle(Event.progress("Loading complete."));
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/AnalysisPhaseRunner.java b/src/main/java/com/google/devtools/build/lib/buildtool/AnalysisPhaseRunner.java
index b74834c..2a461f4 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/AnalysisPhaseRunner.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/AnalysisPhaseRunner.java
@@ -134,7 +134,7 @@
         module.afterAnalysis(env, request, buildOptions, analysisResult);
       }
 
-      reportTargets(env, analysisResult);
+      reportTargets(env, analysisResult.getTargetsToBuild(), analysisResult.getTargetsToTest());
 
       for (ConfiguredTarget target : analysisResult.getTargetsToSkip()) {
         BuildConfigurationValue config =
@@ -274,9 +274,10 @@
     return analysisResult;
   }
 
-  private static void reportTargets(CommandEnvironment env, AnalysisResult analysisResult) {
-    Collection<ConfiguredTarget> targetsToBuild = analysisResult.getTargetsToBuild();
-    Collection<ConfiguredTarget> targetsToTest = analysisResult.getTargetsToTest();
+  static void reportTargets(
+      CommandEnvironment env,
+      Collection<ConfiguredTarget> targetsToBuild,
+      Collection<ConfiguredTarget> targetsToTest) {
     if (targetsToTest != null) {
       int testCount = targetsToTest.size();
       int targetCount = targetsToBuild.size() - testCount;
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java b/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java
index 4990aab..b9cc320 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java
@@ -214,32 +214,49 @@
           }
 
           // TODO(b/199053098): implement support for --nobuild.
-          AnalysisAndExecutionResult analysisAndExecutionResult =
-              AnalysisAndExecutionPhaseRunner.execute(env, request, buildOptions, loadingResult);
-
-          BuildResultListener buildResultListener =
-              Preconditions.checkNotNull(env.getBuildResultListener());
-          result.setBuildConfigurationCollection(
-              analysisAndExecutionResult.getConfigurationCollection());
-          result.setActualTargets(buildResultListener.getAnalyzedTargets());
-          result.setTestTargets(buildResultListener.getAnalyzedTests());
-          try (SilentCloseable c = Profiler.instance().profile("Show results")) {
-            result.setSuccessfulTargets(
-                ExecutionTool.determineSuccessfulTargets(
-                    buildResultListener.getAnalyzedTargets(),
-                    buildResultListener.getBuiltTargets()));
-            result.setSuccessfulAspects(
-                ExecutionTool.determineSuccessfulAspects(
-                    buildResultListener.getAnalyzedAspects().keySet(),
-                    buildResultListener.getBuiltAspects()));
-            result.setSkippedTargets(buildResultListener.getSkippedTargets());
+          AnalysisAndExecutionResult analysisAndExecutionResult;
+          boolean buildCompleted = false;
+          try {
+            analysisAndExecutionResult =
+                AnalysisAndExecutionPhaseRunner.execute(env, request, buildOptions, loadingResult);
+            buildCompleted = true;
+            result.setBuildConfigurationCollection(
+                analysisAndExecutionResult.getConfigurationCollection());
+          } catch (InvalidConfigurationException
+              | TargetParsingException
+              | LoadingFailedException
+              | ViewCreationFailedException
+              | BuildFailedException
+              | TestExecException e) {
+            // These are non-catastrophic.
+            buildCompleted = true;
+            throw e;
+          } finally {
+            BuildResultListener buildResultListener =
+                Preconditions.checkNotNull(env.getBuildResultListener());
+            result.setActualTargets(buildResultListener.getAnalyzedTargets());
+            result.setTestTargets(buildResultListener.getAnalyzedTests());
+            try (SilentCloseable c = Profiler.instance().profile("Show results")) {
+              result.setSuccessfulTargets(
+                  ExecutionTool.determineSuccessfulTargets(
+                      buildResultListener.getAnalyzedTargets(),
+                      buildResultListener.getBuiltTargets()));
+              result.setSuccessfulAspects(
+                  ExecutionTool.determineSuccessfulAspects(
+                      buildResultListener.getAnalyzedAspects().keySet(),
+                      buildResultListener.getBuiltAspects()));
+              result.setSkippedTargets(buildResultListener.getSkippedTargets());
+              if (buildCompleted) {
+                getReporter().handle(Event.progress("Building complete."));
+              }
             BuildResultPrinter buildResultPrinter = new BuildResultPrinter(env);
-            buildResultPrinter.showBuildResult(
-                request,
-                result,
-                buildResultListener.getAnalyzedTargets(),
-                buildResultListener.getSkippedTargets(),
-                buildResultListener.getAnalyzedAspects());
+              buildResultPrinter.showBuildResult(
+                  request,
+                  result,
+                  buildResultListener.getAnalyzedTargets(),
+                  buildResultListener.getSkippedTargets(),
+                  buildResultListener.getAnalyzedAspects());
+            }
           }
           FailureDetail delayedFailureDetail = analysisAndExecutionResult.getFailureDetail();
           if (delayedFailureDetail != null) {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/BUILD b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/BUILD
index f8f6c30..ba072c4 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/BUILD
@@ -1,5 +1,5 @@
 load("@rules_java//java:defs.bzl", "java_library", "java_plugin")
-load("@rules_pkg//:pkg.bzl", "pkg_tar")
+load("//tools/build_defs/pkg:pkg.bzl", "pkg_tar")
 
 package(default_visibility = ["//src:__subpackages__"])