aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2017-11-30 16:30:20 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2017-11-30 16:32:14 -0800
commit3c5581d8fac727ad3e2dc97558c57546da0bd096 (patch)
treef6afa2f7215d2a3ef41a0a787d5264631a358735
parent944d4f754446dba33a83b003035fbae32f855bd0 (diff)
Properly enforce one version for android_robolectric_test targets by respecting the one version for java test flag, and enforcing one version on the _deploy.jar
RELNOTES: n/a PiperOrigin-RevId: 177525487
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java13
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/android/AbstractAndroidLocalTestTest.java30
2 files changed, 39 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java
index f76c01b928..0ddfa733e2 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java
@@ -257,15 +257,20 @@ public abstract class AndroidLocalTestBase implements RuleConfiguredTargetFactor
javaExecutable);
Artifact oneVersionOutputArtifact = null;
- OneVersionEnforcementLevel oneVersionEnforcementLevel =
- ruleContext.getFragment(JavaConfiguration.class).oneVersionEnforcementLevel();
- if (oneVersionEnforcementLevel != OneVersionEnforcementLevel.OFF) {
+ JavaConfiguration javaConfig = ruleContext.getFragment(JavaConfiguration.class);
+ OneVersionEnforcementLevel oneVersionEnforcementLevel = javaConfig.oneVersionEnforcementLevel();
+
+ boolean doOneVersionEnforcement =
+ oneVersionEnforcementLevel != OneVersionEnforcementLevel.OFF
+ && javaConfig.enforceOneVersionOnJavaTests();
+ JavaToolchainProvider javaToolchain = JavaToolchainProvider.from(ruleContext);
+ if (doOneVersionEnforcement) {
oneVersionOutputArtifact =
OneVersionCheckActionBuilder.newBuilder()
.withEnforcementLevel(oneVersionEnforcementLevel)
.outputArtifact(
ruleContext.getImplicitOutputArtifact(JavaSemantics.JAVA_ONE_VERSION_ARTIFACT))
- .useToolchain(JavaToolchainProvider.from(ruleContext))
+ .useToolchain(javaToolchain)
.checkJars(
NestedSetBuilder.fromNestedSet(helper.getAttributes().getRuntimeClassPath())
.add(classJar)
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AbstractAndroidLocalTestTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/AbstractAndroidLocalTestTest.java
index 0c790c63e0..a626c2b0c0 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/AbstractAndroidLocalTestTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/AbstractAndroidLocalTestTest.java
@@ -96,6 +96,36 @@ public abstract class AbstractAndroidLocalTestTest extends BuildViewTestCase {
}
@Test
+ public void testOneVersionEnforcement_excludesWhenFlagIsOff() throws Exception {
+ useConfiguration(
+ "--experimental_one_version_enforcement=error",
+ "--one_version_enforcement_on_java_tests=false");
+
+ writeFile(
+ "java/test/resource/BUILD",
+ "android_local_test(name = 'dummyTest',",
+ " srcs = ['test.java'],",
+ " deps = [':dummyLibraryOne', ':dummyLibraryTwo'])",
+ "",
+ "android_library(name = 'dummyLibraryOne',",
+ " srcs = ['libraryOne.java'])",
+ "",
+ "android_library(name = 'dummyLibraryTwo',",
+ " srcs = ['libraryTwo.java'],",
+ " deps = [':dummyLibraryThree'])",
+ "",
+ "android_library(name = 'dummyLibraryThree',",
+ " srcs = ['libraryThree.java'])",
+ "");
+
+ ConfiguredTarget thingToTest = getConfiguredTarget("//java/test/resource:dummyTest");
+
+ assertThat(
+ prettyArtifactNames(getOutputGroup(thingToTest, OutputGroupProvider.HIDDEN_TOP_LEVEL)))
+ .doesNotContain("java/test/resource/dummyTest-one-version.txt");
+ }
+
+ @Test
public void testCollectCodeCoverageWorks() throws Exception {
writeFile("java/test/BUILD",
"android_local_test(name = 'dummyTest',",