aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/rules
diff options
context:
space:
mode:
authorGravatar asteinb <asteinb@google.com>2018-04-18 07:02:03 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-04-18 07:03:44 -0700
commit6f91ca6e4619f25a33945f57cb29a83c6a917fc8 (patch)
tree07a43da30f0539db4370e320018b29b2dcf167d7 /src/test/java/com/google/devtools/build/lib/rules
parent5938de7e9ecb41e17e6fa5cf91a911c626862c45 (diff)
Create pipeline for monolithic data processing with decoupled classes
The AndroidResourceProcessingAction does all of asset parsing and merging and all of resource parsing, merging, and validation except for R class generation, all in one action. Add class to wrap the intermediate output of this action. It can trigger R class generation to create a full ValidatedAndroidResources object. RELNOTES: none PiperOrigin-RevId: 193350591
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/rules')
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/android/AndroidResourcesTest.java38
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/android/ResourceTestBase.java3
2 files changed, 36 insertions, 5 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidResourcesTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidResourcesTest.java
index 5a008e4a70..916d2804b6 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidResourcesTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidResourcesTest.java
@@ -415,6 +415,32 @@ public class AndroidResourcesTest extends ResourceTestBase {
validated.getAapt2RTxt(), validated.getAapt2SourceJar(), validated.getStaticLibrary()));
}
+ @Test
+ public void testGenerateRClass() throws Exception {
+ RuleContext ruleContext = getRuleContext(/* useDataBinding = */ false);
+ Artifact rTxt = ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_R_TXT);
+ ProcessedAndroidManifest manifest = getManifest();
+
+ ProcessedAndroidData processedData =
+ ProcessedAndroidData.of(
+ makeParsedResources(ruleContext),
+ AndroidAssets.from(ruleContext).process(ruleContext, /* neverlink = */ false),
+ manifest,
+ rTxt,
+ ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_JAVA_SOURCE_JAR),
+ ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_RESOURCES_APK),
+ /* dataBindingInfoZip = */ null,
+ ResourceDependencies.fromRuleDeps(ruleContext, /* neverlink = */ false));
+
+ ValidatedAndroidResources validated = processedData.generateRClass(ruleContext);
+
+ // An action to generate the R.class file should be registered.
+ assertActionArtifacts(
+ ruleContext,
+ /* inputs = */ ImmutableList.of(rTxt, manifest.getManifest()),
+ /* outputs = */ ImmutableList.of(validated.getClassJar()));
+ }
+
/**
* Validates that a parse action was invoked correctly. Returns the {@link ParsedAndroidResources}
* for further validation.
@@ -439,15 +465,19 @@ public class AndroidResourcesTest extends ResourceTestBase {
private MergedAndroidResources makeMergedResources(RuleContext ruleContext)
throws RuleErrorException, InterruptedException {
+ return makeParsedResources(ruleContext).merge(ruleContext, /* neverlink = */ true);
+ }
+
+ private ParsedAndroidResources makeParsedResources(RuleContext ruleContext)
+ throws RuleErrorException, InterruptedException {
ImmutableList<Artifact> resources = getResources("values-en/foo.xml", "drawable-hdpi/bar.png");
return new AndroidResources(
resources, AndroidResources.getResourceRoots(ruleContext, resources, "resource_files"))
- .parse(ruleContext, getManifest())
- .merge(ruleContext, /* neverlink = */ true);
+ .parse(ruleContext, getManifest());
}
- private StampedAndroidManifest getManifest() {
- return new StampedAndroidManifest(
+ private ProcessedAndroidManifest getManifest() {
+ return new ProcessedAndroidManifest(
getResource("some/path/AndroidManifest.xml"), "some.java.pkg", /* exported = */ true);
}
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/ResourceTestBase.java b/src/test/java/com/google/devtools/build/lib/rules/android/ResourceTestBase.java
index 50d92b0fa7..21310bd344 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/ResourceTestBase.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/ResourceTestBase.java
@@ -59,7 +59,8 @@ public abstract class ResourceTestBase extends AndroidBuildViewTestCase {
"aapt2",
"empty.sh",
"android_blaze.jar",
- "android.jar");
+ "android.jar",
+ "ResourceProcessorBusyBox_deploy.jar");
private static final ArtifactOwner OWNER = () -> {
try {