aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar Philipp Wollermann <philwo@google.com>2015-09-08 16:57:53 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2015-09-08 17:26:47 +0000
commitfcf34fd17b16b42ed1180b6961b8531f26f82cf2 (patch)
tree64751818871215b352cc28536651ea1081d4fe9c /src/test/java/com/google/devtools/build/lib
parent3fd49d60855807501ccf544f4a31b974d28aaf53 (diff)
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
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib')
-rw-r--r--src/test/java/com/google/devtools/build/lib/testutil/BlazeTestSuiteBuilder.java9
-rw-r--r--src/test/java/com/google/devtools/build/lib/testutil/Suite.java8
-rw-r--r--src/test/java/com/google/devtools/build/lib/testutil/TestSpec.java6
3 files changed, 23 insertions, 0 deletions
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 d2f36a6cd5..d311c89821 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 @@ public class BlazeTestSuiteBuilder {
}
};
+ /** 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 43590d463c..8c936b64bd 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 @@ public enum Suite {
}
/**
+ * 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 0d793f7145..71479048da 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 @@ public @interface TestSpec {
* 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;
}