diff options
author | 2017-11-30 16:30:20 -0800 | |
---|---|---|
committer | 2017-11-30 16:32:14 -0800 | |
commit | 3c5581d8fac727ad3e2dc97558c57546da0bd096 (patch) | |
tree | f6afa2f7215d2a3ef41a0a787d5264631a358735 | |
parent | 944d4f754446dba33a83b003035fbae32f855bd0 (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.java | 13 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/rules/android/AbstractAndroidLocalTestTest.java | 30 |
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',", |