Allow test strategies to treat exclusive tests as regular parallel tests.

PiperOrigin-RevId: 292337914
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisResult.java b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisResult.java
index 01a490b..c4aedce 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisResult.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisResult.java
@@ -17,6 +17,7 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.ImmutableSortedSet;
+import com.google.common.collect.Sets;
 import com.google.devtools.build.lib.actions.ActionGraph;
 import com.google.devtools.build.lib.actions.PackageRoots;
 import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection;
@@ -167,4 +168,27 @@
   public ImmutableSortedSet<String> getNonSymlinkedDirectoriesUnderExecRoot() {
     return nonSymlinkedDirectoriesUnderExecRoot;
   }
+
+  /**
+   * Returns an equivalent {@link AnalysisResult}, except with exclusive tests treated as parallel
+   * tests.
+   */
+  public AnalysisResult withExclusiveTestsAsParallelTests() {
+    return new AnalysisResult(
+        configurations,
+        targetsToBuild,
+        aspects,
+        targetsToTest,
+        targetsToSkip,
+        error,
+        actionGraph,
+        topLevelArtifactsToOwnerLabels,
+        Sets.union(parallelTests, exclusiveTests).immutableCopy(),
+        /*exclusiveTests=*/ ImmutableSet.of(),
+        topLevelContext,
+        packageRoots,
+        workspaceName,
+        topLevelTargetsWithConfigs,
+        nonSymlinkedDirectoriesUnderExecRoot);
+  }
 }