Add a localOnly attribute to TestSpec to make it easier to split tests into parts that can run via remote execution and those that can only run on the local machine (e.g. due to needing extended permissione).

--
MOS_MIGRATED_REVID=102565161
diff --git a/src/test/java/com/google/devtools/build/lib/testutil/BlazeTestSuiteBuilder.java b/src/test/java/com/google/devtools/build/lib/testutil/BlazeTestSuiteBuilder.java
index d2f36a6..d311c89 100644
--- a/src/test/java/com/google/devtools/build/lib/testutil/BlazeTestSuiteBuilder.java
+++ b/src/test/java/com/google/devtools/build/lib/testutil/BlazeTestSuiteBuilder.java
@@ -53,6 +53,15 @@
     }
   };
 
+  /** A predicate that succeeds only for non-local-only tests. */
+  public static final Predicate<Class<?>> TEST_IS_LOCAL_ONLY =
+      new Predicate<Class<?>>() {
+        @Override
+        public boolean apply(Class<?> testClass) {
+          return Suite.isLocalOnly(testClass);
+        }
+      };
+
   private static Predicate<Class<?>> hasSize(final Suite size) {
     return new Predicate<Class<?>>() {
       @Override
diff --git a/src/test/java/com/google/devtools/build/lib/testutil/Suite.java b/src/test/java/com/google/devtools/build/lib/testutil/Suite.java
index 43590d4..8c936b6 100644
--- a/src/test/java/com/google/devtools/build/lib/testutil/Suite.java
+++ b/src/test/java/com/google/devtools/build/lib/testutil/Suite.java
@@ -68,6 +68,14 @@
   }
 
   /**
+   * Given a class, determine if it can run in a remote execution environment or on the local
+   * machine only.
+   */
+  public static boolean isLocalOnly(Class<?> clazz) {
+    return getAnnotationElementOrDefault(clazz, "localOnly");
+  }
+
+  /**
    * Returns the value of the given element in the {@link TestSpec} annotation of the given class,
    * or the default value of that element if the class doesn't have a {@link TestSpec} annotation.
    */
diff --git a/src/test/java/com/google/devtools/build/lib/testutil/TestSpec.java b/src/test/java/com/google/devtools/build/lib/testutil/TestSpec.java
index 0d793f7..7147904 100644
--- a/src/test/java/com/google/devtools/build/lib/testutil/TestSpec.java
+++ b/src/test/java/com/google/devtools/build/lib/testutil/TestSpec.java
@@ -45,4 +45,10 @@
    * code's correctness. If this is the case, the test should be fixed as soon as possible.
    */
   boolean flaky() default false;
+
+  /**
+   * True, if the test cannot run in a remote execution environment and has to run on the local
+   * machine.
+   */
+  boolean localOnly() default false;
 }