diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java | 25 |
1 files changed, 16 insertions, 9 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 ad084013fc..338f878963 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 @@ -65,6 +65,7 @@ import com.google.devtools.build.lib.util.OS; import com.google.devtools.build.lib.vfs.PathFragment; import java.util.ArrayList; import java.util.List; +import javax.annotation.Nullable; /** A base implementation for the "android_local_test" rule. */ public abstract class AndroidLocalTestBase implements RuleConfiguredTargetFactory { @@ -82,8 +83,7 @@ public abstract class AndroidLocalTestBase implements RuleConfiguredTargetFactor // Use the regular Java javacopts. Enforcing android-compatible Java // (-source 7 -target 7 and no TWR) is unnecessary for robolectric tests // since they run on a JVM, not an android device. - JavaTargetAttributes.Builder attributesBuilder = - getJavaTargetAttributes(ruleContext, javaCommon); + JavaTargetAttributes.Builder attributesBuilder = javaCommon.initCommon(); // Create the final merged manifest ResourceDependencies resourceDependencies = @@ -351,7 +351,6 @@ public abstract class AndroidLocalTestBase implements RuleConfiguredTargetFactor private void compileResourceJar( RuleContext ruleContext, ResourceApk resourceApk, Artifact resourceClassJar) throws InterruptedException, RuleErrorException { - if (resourceApk.getResourceJavaClassJar() == null) { new RClassGeneratorActionBuilder(ruleContext) .targetAaptVersion(AndroidAaptVersion.chooseTargetAaptVersion(ruleContext)) @@ -435,6 +434,12 @@ public abstract class AndroidLocalTestBase implements RuleConfiguredTargetFactor if (ruleContext.isAttrDefined("$robolectric", LABEL_LIST)) { depsForRunfiles.addAll(ruleContext.getPrerequisites("$robolectric", Mode.TARGET)); } + + Artifact androidAllJarsPropertiesFile = getAndroidAllJarsPropertiesFile(ruleContext); + if (androidAllJarsPropertiesFile != null) { + builder.addArtifact(androidAllJarsPropertiesFile); + } + depsForRunfiles.addAll(ruleContext.getPrerequisites("runtime_deps", Mode.TARGET)); builder.addArtifacts(getRuntimeJarsForTargets(getAndCheckTestSupport(ruleContext))); @@ -520,12 +525,9 @@ public abstract class AndroidLocalTestBase implements RuleConfiguredTargetFactor /** Get AndroidSemantics */ protected abstract AndroidSemantics createAndroidSemantics(); - /** Get JavaTargetAttributes Builder */ - protected abstract JavaTargetAttributes.Builder getJavaTargetAttributes( - RuleContext ruleContext, JavaCommon javaCommon); - /** Set test and robolectric specific jvm flags */ - protected abstract ImmutableList<String> getJvmFlags(RuleContext ruleContext, String testClass); + protected abstract ImmutableList<String> getJvmFlags(RuleContext ruleContext, String testClass) + throws RuleErrorException; /** Return the testrunner main class */ protected abstract String getMainClass( @@ -536,7 +538,7 @@ public abstract class AndroidLocalTestBase implements RuleConfiguredTargetFactor Artifact instrumentationMetadata, JavaCompilationArtifacts.Builder javaArtifactsBuilder, JavaTargetAttributes.Builder attributesBuilder) - throws InterruptedException; + throws InterruptedException, RuleErrorException; /** * Add compilation dependencies to the java compilation helper. @@ -553,4 +555,9 @@ public abstract class AndroidLocalTestBase implements RuleConfiguredTargetFactor /** Get the testrunner from the rule */ protected abstract TransitiveInfoCollection getAndCheckTestSupport(RuleContext ruleContext) throws RuleErrorException; + + /** Get the android-all jars properties file from the deps */ + @Nullable + protected abstract Artifact getAndroidAllJarsPropertiesFile(RuleContext ruleContext) + throws RuleErrorException; } |