diff options
author | 2017-08-21 18:48:13 +0200 | |
---|---|---|
committer | 2017-08-22 09:13:27 +0200 | |
commit | d795133a34fd2a61177be3febb9c61c83b10f3c2 (patch) | |
tree | 5213503e8af0891bb796d87b325d9b671a60aaf8 /src/test/java/com | |
parent | 3ff87f79c6a579272532bc676acdf924db1e8b59 (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.java | 18 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/rules/android/ResourceFilterTest.java | 22 |
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)); + } } |