diff options
author | asteinb <asteinb@google.com> | 2018-04-18 07:02:03 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-04-18 07:03:44 -0700 |
commit | 6f91ca6e4619f25a33945f57cb29a83c6a917fc8 (patch) | |
tree | 07a43da30f0539db4370e320018b29b2dcf167d7 /src/test/java/com/google/devtools/build/lib/rules | |
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')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/rules/android/AndroidResourcesTest.java | 38 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/rules/android/ResourceTestBase.java | 3 |
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 { |