aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar asteinb <asteinb@google.com>2018-04-13 14:35:12 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-04-13 14:37:04 -0700
commite4e8e9ef4e4e56b7abfa5bdb20182c983e8247d3 (patch)
tree8f5819b393b9b77d33f8f7aa442dd95775bdce17 /src/test/java/com/google/devtools/build/lib
parentab136c0b099a325edbab5d2939f74b6cabc4f5ab (diff)
Filter ValidatedAndroidResources
Transitive ValidatedAndroidResource objects will, in future reviews, be used in resource processing (replacing transitive ResourceContainers). To support this, we must be able to filter these objects. RELNOTES: none PiperOrigin-RevId: 192825260
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib')
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/android/AndroidResourcesTest.java52
1 files changed, 47 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 f599a43ab8..042c677062 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
@@ -142,6 +142,41 @@ public class AndroidResourcesTest extends ResourceTestBase {
/* isDependency = */ true);
}
+ @Test
+ public void testFilterValidatedNoop() throws Exception {
+ ImmutableList<Artifact> resources = getResources("values-en/foo.xml", "values-es/bar.xml");
+ assertFilterValidated(resources, resources);
+ }
+
+ @Test
+ public void testFilterValidated() throws Exception {
+ Artifact keptResource = getResource("values-en/foo.xml");
+ assertFilterValidated(
+ ImmutableList.of(keptResource, getResource("drawable/bar.png")),
+ ImmutableList.of(keptResource));
+ }
+
+ private void assertFilterValidated(
+ ImmutableList<Artifact> unfilteredResources, ImmutableList<Artifact> filteredResources)
+ throws Exception {
+ RuleContext ruleContext = getRuleContext(/* useDataBinding = */ false);
+ ValidatedAndroidResources unfiltered =
+ new AndroidResources(unfilteredResources, getResourceRoots(unfilteredResources))
+ .process(ruleContext, getManifest(), /* neverlink = */ false);
+ Optional<? extends AndroidResources> maybeFiltered =
+ assertFilter(unfiltered, filteredResources, /* isDependency = */ true);
+
+ if (maybeFiltered.isPresent()) {
+ AndroidResources filtered = maybeFiltered.get();
+ assertThat(filtered instanceof ValidatedAndroidResources).isTrue();
+ ValidatedAndroidResources validated = (ValidatedAndroidResources) filtered;
+
+ // Validate fields related to validation are unchanged
+ assertThat(validated.getRTxt()).isEqualTo(unfiltered.getRTxt());
+ assertThat(validated.getAapt2RTxt()).isEqualTo(unfiltered.getAapt2RTxt());
+ }
+ }
+
private void assertFilter(
ImmutableList<Artifact> unfilteredResources, ImmutableList<Artifact> filteredResources)
throws Exception {
@@ -153,19 +188,24 @@ public class AndroidResourcesTest extends ResourceTestBase {
ImmutableList<Artifact> filteredResources,
boolean isDependency)
throws Exception {
- ImmutableList<PathFragment> unfilteredResourcesRoots = getResourceRoots(unfilteredResources);
AndroidResources unfiltered =
- new AndroidResources(unfilteredResources, unfilteredResourcesRoots);
+ new AndroidResources(unfilteredResources, getResourceRoots(unfilteredResources));
+ assertFilter(unfiltered, filteredResources, isDependency);
+ }
+
+ private Optional<? extends AndroidResources> assertFilter(
+ AndroidResources unfiltered, ImmutableList<Artifact> filteredResources, boolean isDependency)
+ throws Exception {
ImmutableList.Builder<Artifact> filteredDepsBuilder = ImmutableList.builder();
ResourceFilter fakeFilter =
ResourceFilter.of(ImmutableSet.copyOf(filteredResources), filteredDepsBuilder::add);
- Optional<AndroidResources> filtered =
+ Optional<? extends AndroidResources> filtered =
unfiltered.maybeFilter(errorConsumer, fakeFilter, isDependency);
- if (filteredResources.equals(unfilteredResources)) {
+ if (filteredResources.equals(unfiltered.getResources())) {
// We expect filtering to have been a no-op
assertThat(filtered.isPresent()).isFalse();
} else {
@@ -183,10 +223,12 @@ public class AndroidResourcesTest extends ResourceTestBase {
assertThat(filteredDepsBuilder.build()).isEmpty();
} else {
// The filtered dependencies should be exactly the list of filtered resources
- assertThat(unfilteredResources)
+ assertThat(unfiltered.getResources())
.containsExactlyElementsIn(
Iterables.concat(filteredDepsBuilder.build(), filteredResources));
}
+
+ return filtered;
}
@Test