diff options
author | 2015-09-08 16:57:53 +0000 | |
---|---|---|
committer | 2015-09-08 17:26:47 +0000 | |
commit | fcf34fd17b16b42ed1180b6961b8531f26f82cf2 (patch) | |
tree | 64751818871215b352cc28536651ea1081d4fe9c /src/test/java/com/google/devtools/build/lib | |
parent | 3fd49d60855807501ccf544f4a31b974d28aaf53 (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')
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; } |