Refactor TestTargetProperties to use shared code to determine whether
an action is remotable. Also rename isLocal() to isRemotable() (and
invert call sides) to made the code easier to understand.

RELNOTES: None
PiperOrigin-RevId: 260706656
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ExecutionRequirements.java b/src/main/java/com/google/devtools/build/lib/actions/ExecutionRequirements.java
index 9f0645c..d7bb88a 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ExecutionRequirements.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ExecutionRequirements.java
@@ -19,6 +19,7 @@
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableMap;
 import com.google.devtools.build.lib.packages.Rule;
+import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -218,4 +219,10 @@
 
   /** Use this to request eager fetching of a single remote output into local memory. */
   public static final String REMOTE_EXECUTION_INLINE_OUTPUTS = "internal-inline-outputs";
+
+  public static boolean maybeExecutedRemotely(Set<String> executionRequirements) {
+    return !executionRequirements.contains(ExecutionRequirements.LOCAL)
+        && !executionRequirements.contains(ExecutionRequirements.NO_REMOTE)
+        && !executionRequirements.contains(ExecutionRequirements.NO_REMOTE_EXEC);
+  }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/actions/Spawns.java b/src/main/java/com/google/devtools/build/lib/actions/Spawns.java
index 6bd5ee6..d90cd1d 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/Spawns.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/Spawns.java
@@ -42,9 +42,7 @@
 
   /** Returns {@code true} if {@code spawn} may be executed remotely. */
   public static boolean mayBeExecutedRemotely(Spawn spawn) {
-    return !spawn.getExecutionInfo().containsKey(ExecutionRequirements.LOCAL)
-        && !spawn.getExecutionInfo().containsKey(ExecutionRequirements.NO_REMOTE)
-        && !spawn.getExecutionInfo().containsKey(ExecutionRequirements.NO_REMOTE_EXEC);
+    return ExecutionRequirements.maybeExecutedRemotely(spawn.getExecutionInfo().keySet());
   }
 
   /** Returns whether a Spawn can be executed in a sandbox environment. */
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/TestRunnerAction.java b/src/main/java/com/google/devtools/build/lib/analysis/test/TestRunnerAction.java
index 962dca3..f3f98c2 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/TestRunnerAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/TestRunnerAction.java
@@ -338,7 +338,7 @@
     fp.addString(testProperties.getSize().toString());
     fp.addString(testProperties.getTimeout().toString());
     fp.addStrings(testProperties.getTags());
-    fp.addInt(testProperties.isLocal() ? 1 : 0);
+    fp.addInt(testProperties.isRemotable() ? 1 : 0);
     fp.addInt(shardNum);
     fp.addInt(executionSettings.getTotalShards());
     fp.addInt(runNumber);
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/TestTargetProperties.java b/src/main/java/com/google/devtools/build/lib/analysis/test/TestTargetProperties.java
index 1351eb2..e7a8354 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/TestTargetProperties.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/TestTargetProperties.java
@@ -63,7 +63,7 @@
   private final TestSize size;
   private final TestTimeout timeout;
   private final List<String> tags;
-  private final boolean isLocal;
+  private final boolean isRemotable;
   private final boolean isFlaky;
   private final boolean isExternal;
   private final String language;
@@ -99,7 +99,7 @@
     ruleContext.getConfiguration().modifyExecutionInfo(executionInfo, TestRunnerAction.MNEMONIC);
     this.executionInfo = ImmutableMap.copyOf(executionInfo);
 
-    isLocal = executionInfo.containsKey(ExecutionRequirements.LOCAL);
+    isRemotable = ExecutionRequirements.maybeExecutedRemotely(executionInfo.keySet());
 
     language = TargetUtils.getRuleLanguage(rule);
   }
@@ -116,8 +116,8 @@
     return tags;
   }
 
-  public boolean isLocal() {
-    return isLocal;
+  public boolean isRemotable() {
+    return isRemotable;
   }
 
   public boolean isFlaky() {
diff --git a/src/test/java/com/google/devtools/build/lib/rules/test/SkylarkTestingModuleTest.java b/src/test/java/com/google/devtools/build/lib/rules/test/SkylarkTestingModuleTest.java
index d2bfd5b..f2a6a3d 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/test/SkylarkTestingModuleTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/test/SkylarkTestingModuleTest.java
@@ -105,6 +105,6 @@
     TestRunnerAction testAction = (TestRunnerAction) getGeneratingAction(
         TestProvider.getTestStatusArtifacts(skylarkTarget).get(0));
 
-    assertThat(testAction.getTestProperties().isLocal()).isTrue();
+    assertThat(testAction.getTestProperties().isRemotable()).isFalse();
   }
 }