diff options
author | 2018-04-18 07:02:03 -0700 | |
---|---|---|
committer | 2018-04-18 07:03:44 -0700 | |
commit | 6f91ca6e4619f25a33945f57cb29a83c6a917fc8 (patch) | |
tree | 07a43da30f0539db4370e320018b29b2dcf167d7 /src/test/java/com/google/devtools/build/lib/rules/android/AndroidResourcesTest.java | |
parent | 5938de7e9ecb41e17e6fa5cf91a911c626862c45 (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/android/AndroidResourcesTest.java')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/rules/android/AndroidResourcesTest.java | 38 |
1 files changed, 34 insertions, 4 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); } |