aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com
diff options
context:
space:
mode:
authorGravatar asteinb <asteinb@google.com>2018-04-13 13:28:45 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-04-13 13:30:30 -0700
commit8b47bc0c5f489424d39e5ae4f41f8a192a890bad (patch)
treef92c6784cfd7cd9874c77a49c78ec1d9c9010e3d /src/test/java/com
parentb7c367947d13ac88a526965e4c056fd0e4427d72 (diff)
Allow validation action to run just against resources
This is the last step of decoupling assets and resources for the basic android_library path, but more work still needs to be done in future changes (for additional library features like aar exporting, and for top-level targets like android_binary). RELNOTES: none PiperOrigin-RevId: 192815261
Diffstat (limited to 'src/test/java/com')
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/android/AndroidResourcesTest.java91
1 files changed, 85 insertions, 6 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 15c7eb8b88..f599a43ab8 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
@@ -46,7 +46,14 @@ public class AndroidResourcesTest extends ResourceTestBase {
ImmutableList.of(DEFAULT_RESOURCE_ROOT);
private static final ImmutableSet<String> TOOL_FILENAMES =
- ImmutableSet.of("aapt2", "empty.sh", "android_blaze.jar", "android.jar");
+ ImmutableSet.of(
+ "static_aapt_tool",
+ "aapt.static",
+ "aapt",
+ "aapt2",
+ "empty.sh",
+ "android_blaze.jar",
+ "android.jar");
@Before
@Test
@@ -320,6 +327,70 @@ public class AndroidResourcesTest extends ResourceTestBase {
/* outputs = */ ImmutableList.of(merged.getMergedResources()));
}
+ @Test
+ public void testValidateAapt() throws Exception {
+ useConfiguration("--android_aapt=aapt");
+ RuleContext ruleContext = getRuleContext(/* useDataBinding = */ false);
+
+ MergedAndroidResources merged = makeMergedResources(ruleContext);
+ ValidatedAndroidResources validated = merged.validate(ruleContext);
+
+ // Inherited values should be equal
+ assertThat(merged).isEqualTo(new MergedAndroidResources(validated));
+
+ // aapt artifacts should be generated
+ assertActionArtifacts(
+ ruleContext,
+ /* inputs = */ ImmutableList.of(validated.getMergedResources(), validated.getManifest()),
+ /* outputs = */ ImmutableList.of(
+ validated.getRTxt(), validated.getSourceJar(), validated.getApk()));
+
+ // aapt2 artifacts should not be generated
+ assertThat(validated.getCompiledSymbols()).isNull();
+ assertThat(validated.getAapt2RTxt()).isNull();
+ assertThat(validated.getAapt2SourceJar()).isNull();
+ assertThat(validated.getStaticLibrary()).isNull();
+ }
+
+ @Test
+ public void testValidateAapt2() throws Exception {
+ mockAndroidSdkWithAapt2();
+ useConfiguration("--android_sdk=//sdk:sdk", "--android_aapt=aapt2");
+ RuleContext ruleContext = getRuleContext(/* useDataBinding = */ false);
+
+ MergedAndroidResources merged = makeMergedResources(ruleContext);
+ ValidatedAndroidResources validated = merged.validate(ruleContext);
+
+ // Inherited values should be equal
+ assertThat(merged).isEqualTo(new MergedAndroidResources(validated));
+
+ // aapt artifacts should be generated
+ assertActionArtifacts(
+ ruleContext,
+ /* inputs = */ ImmutableList.of(validated.getMergedResources(), validated.getManifest()),
+ /* outputs = */ ImmutableList.of(
+ validated.getRTxt(), validated.getSourceJar(), validated.getApk()));
+
+ // aapt2 artifacts should be recorded
+ assertThat(validated.getCompiledSymbols()).isNotNull();
+ assertThat(validated.getAapt2RTxt()).isNotNull();
+ assertThat(validated.getAapt2SourceJar()).isNotNull();
+ assertThat(validated.getStaticLibrary()).isNotNull();
+
+ // Compile the resources into compiled symbols files
+ assertActionArtifacts(
+ ruleContext,
+ /* inputs = */ validated.getResources(),
+ /* outputs = */ ImmutableList.of(validated.getCompiledSymbols()));
+
+ // Use the compiled symbols and manifest to build aapt2 packaging outputs
+ assertActionArtifacts(
+ ruleContext,
+ /* inputs = */ ImmutableList.of(validated.getCompiledSymbols(), validated.getManifest()),
+ /* outputs = */ ImmutableList.of(
+ validated.getAapt2RTxt(), validated.getAapt2SourceJar(), validated.getStaticLibrary()));
+ }
+
/**
* Assets that the action used to generate the given outputs has the expected inputs and outputs.
*/
@@ -361,9 +432,7 @@ public class AndroidResourcesTest extends ResourceTestBase {
AndroidResources raw =
new AndroidResources(
resources, AndroidResources.getResourceRoots(ruleContext, resources, "resource_files"));
- StampedAndroidManifest manifest =
- new AndroidManifest(getManifest(), "some.java.pkg", /* exported = */ true)
- .stamp(ruleContext);
+ StampedAndroidManifest manifest = getManifest();
ParsedAndroidResources parsed = raw.parse(ruleContext, manifest);
@@ -376,8 +445,18 @@ public class AndroidResourcesTest extends ResourceTestBase {
return parsed;
}
- private Artifact getManifest() {
- return getResource("some/path/AndroidManifest.xml");
+ private MergedAndroidResources makeMergedResources(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);
+ }
+
+ private StampedAndroidManifest getManifest() {
+ return new StampedAndroidManifest(
+ getResource("some/path/AndroidManifest.xml"), "some.java.pkg", /* exported = */ true);
}
/** Gets a dummy rule context object by creating a dummy target. */