aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2017-08-21 18:48:13 +0200
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2017-08-22 09:13:27 +0200
commitd795133a34fd2a61177be3febb9c61c83b10f3c2 (patch)
tree5213503e8af0891bb796d87b325d9b671a60aaf8 /src/test/java/com
parent3ff87f79c6a579272532bc676acdf924db1e8b59 (diff)
Resource filtering properly handles pseudolocales
Pseudolocalized resources are generated by aapt in response to their locales being passed to aapt. However, when filtering in analysis, we attempted to save time by not passing any filters to aapt. Fix this by passing the filters if pseudolocales were specified. RELNOTES: none PiperOrigin-RevId: 165939670
Diffstat (limited to 'src/test/java/com')
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java18
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/android/ResourceFilterTest.java22
2 files changed, 40 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java
index 862111a971..9295234d76 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java
@@ -1582,6 +1582,24 @@ public class AndroidBinaryTest extends AndroidBuildViewTestCase {
}
@Test
+ public void testFilterResourcesPseudolocalesPropagated() throws Exception {
+ String dir = "java/r/android";
+ ConfiguredTarget binary =
+ scratchConfiguredTarget(
+ dir,
+ "bin",
+ "android_binary(name = 'bin',",
+ " resource_files = glob(['res/**']),",
+ " resource_configuration_filters = ['en', 'en-rXA', 'ar-rXB'],",
+ " manifest = 'AndroidManifest.xml')");
+
+ List<String> resourceProcessingArgs =
+ getGeneratingSpawnActionArgs(getResourceContainer(binary).getRTxt());
+
+ assertThat(resourceProcessingArgs).containsAllOf("--resourceConfigs", "ar-rXB,en,en-rXA");
+ }
+
+ @Test
public void testThrowOnResourceConflictFlagGetsPropagated() throws Exception {
scratch.file(
"java/r/android/BUILD",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/ResourceFilterTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/ResourceFilterTest.java
index 2fc4e372db..0ad6a662fd 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/ResourceFilterTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/ResourceFilterTest.java
@@ -697,4 +697,26 @@ public class ResourceFilterTest extends ResourceTestBase {
return androidOptions;
}
+
+ @Test
+ public void testHasPseudolocationFilters() throws Exception {
+ // Basic pseudolocation filters
+ for (String filter : ImmutableList.of("en_XA", "en-rXA", "ar_XB", "ar-rXB")) {
+ assertHasPseudolocationFilters(filter).isTrue();
+ }
+
+ // Additional qualifiers should not mask whether pseudolocation filters are used
+ assertHasPseudolocationFilters("en-rXA-port").isTrue();
+
+ // Without pseudolocation, even though the locale is similar
+ for (String filter : ImmutableList.of("", "en", "ar", "en-rUS")) {
+ assertHasPseudolocationFilters(filter).isFalse();
+ }
+ }
+
+ private BooleanSubject assertHasPseudolocationFilters(String filters) throws Exception {
+ return assertThat(
+ makeResourceFilter(filters, "", FilterBehavior.FILTER_IN_ANALYSIS)
+ .shouldPropagateConfigs(errorConsumer));
+ }
}