aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/com/google')
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java93
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/android/ResourceFilterFactoryTest.java263
2 files changed, 50 insertions, 306 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 5c292fb7fe..d25b28db01 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
@@ -29,7 +29,6 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.common.collect.Streams;
-import com.google.common.eventbus.EventBus;
import com.google.common.truth.Truth;
import com.google.devtools.build.lib.actions.Action;
import com.google.devtools.build.lib.actions.Artifact;
@@ -1227,8 +1226,6 @@ public class AndroidBinaryTest extends AndroidBuildViewTestCase {
public void testFilteredResourcesInvalidResourceDir() throws Exception {
String badQualifierDir = "values-invalid-qualifier";
- useConfiguration("--experimental_android_resource_filtering_method", "filter_in_execution");
-
checkError(
"java/r/android",
"r",
@@ -1240,37 +1237,6 @@ public class AndroidBinaryTest extends AndroidBuildViewTestCase {
" resource_configuration_filters = ['en'])");
}
- @Test
- public void testFilteredResourcesFilteringDisabled() throws Exception {
- List<String> resources =
- ImmutableList.of("res/values/foo.xml", "res/values-en/foo.xml", "res/values-fr/foo.xml");
- String dir = "java/r/android";
-
- useConfiguration("--experimental_android_resource_filtering_method", "filter_in_execution");
-
- ConfiguredTarget binary =
- scratchConfiguredTarget(
- dir,
- "r",
- "android_binary(name = 'r',",
- " manifest = 'AndroidManifest.xml',",
- " resource_configuration_filters = ['', 'en, es, '],",
- " densities = ['hdpi, , ', 'xhdpi'],",
- " resource_files = ['" + Joiner.on("', '").join(resources) + "'])");
- ResourceContainer directResources = getResourceContainer(binary, /* transitive= */ false);
-
- // Validate that the AndroidResourceProvider for this binary contains all values.
- assertThat(resourceContentsPaths(dir, directResources)).containsExactlyElementsIn(resources);
-
- // Validate that the input to resource processing contains all values.
- assertThat(resourceInputPaths(dir, directResources)).containsAllIn(resources);
-
- // Validate that the filters are correctly passed to the resource processing action
- // This includes trimming whitespace and ignoring empty filters.
- assertThat(resourceArguments(directResources)).contains("en,es");
- assertThat(resourceArguments(directResources)).contains("hdpi,xhdpi");
- }
-
/** Test that resources are not filtered in analysis under aapt2. */
@Test
public void testFilteredResourcesFilteringAapt2() throws Exception {
@@ -1855,65 +1821,6 @@ public class AndroidBinaryTest extends AndroidBuildViewTestCase {
assertThat(resourceProcessingArgs).contains("--throwOnResourceConflict");
}
- @Test
- public void testFilteredTransitiveResourcesDynamicConfiguration() throws Exception {
- String enResource = "res/values-en/foo.xml";
- String unqualifiedResource = "res/values/foo.xml";
- String frResource = "res/values-fr/foo.xml";
-
- String dir = "java/r/android";
- scratch.file(
- dir + "/BUILD",
- "android_library(name = 'lib',",
- " manifest = 'AndroidManifest.xml',",
- " resource_files = [",
- " '" + enResource + "',",
- " '" + frResource + "',",
- " '" + unqualifiedResource + "',",
- "])",
- "android_binary(name = 'en',",
- " manifest = 'AndroidManifest.xml',",
- " resource_configuration_filters = ['en'],",
- " deps = [':lib'])");
-
- useConfiguration(
- "--experimental_android_resource_filtering_method",
- "filter_in_analysis_with_dynamic_configuration");
-
- ConfiguredTarget binary =
- Iterables.getOnlyElement(
- update(
- ImmutableList.of("//" + dir + ":en"),
- /* keepGoing= */ false,
- /* loadingPhaseThreads= */ 1,
- /* doAnalysis= */ true,
- new EventBus())
- .getTargetsToBuild());
-
- // Assert the resources were still filtered in analysis in the binary.
- String expectedQualifiedResource =
- binary.getLabel().toString().endsWith("en") ? enResource : frResource;
-
- assertThat(resourceContentsPaths(dir, getResourceContainer(binary, /* transitive=*/ true)))
- .containsExactly(expectedQualifiedResource, unqualifiedResource);
-
- ConfiguredTarget library = getDirectPrerequisite(binary, "//" + dir + ":lib");
-
- // Assert the resources were filtered in the library.
- // This is only possible if the filters are correctly being passed using dynamic
- // configuration.
- assertThat(resourceContentsPaths(dir, getResourceContainer(library)))
- .containsExactly(expectedQualifiedResource, unqualifiedResource);
-
- // assert the correct prefix is used for library outputs
- assertThat(
- library
- .getConfiguration()
- .getFragment(AndroidConfiguration.class)
- .getOutputDirectoryName())
- .contains("en_");
- }
-
/**
* Gets the paths of matching artifacts contained within a resource container
*
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/ResourceFilterFactoryTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/ResourceFilterFactoryTest.java
index 7564c5d376..e80c837259 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/ResourceFilterFactoryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/ResourceFilterFactoryTest.java
@@ -19,16 +19,12 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.common.truth.BooleanSubject;
import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.analysis.config.BuildOptions;
-import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.Order;
import com.google.devtools.build.lib.packages.AttributeMap;
import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
-import com.google.devtools.build.lib.rules.android.ResourceFilterFactory.AddDynamicallyConfiguredResourceFilteringTransition;
-import com.google.devtools.build.lib.rules.android.ResourceFilterFactory.FilterBehavior;
import com.google.devtools.build.lib.testutil.FakeAttributeMapper;
import java.util.ArrayList;
import java.util.List;
@@ -78,14 +74,14 @@ public class ResourceFilterFactoryTest extends ResourceTestBase {
testNoopFilter(
"en",
"hdpi",
- FilterBehavior.FILTER_IN_EXECUTION,
+ /* filterInAnalysis = */ false,
ImmutableList.of(
"values-en/foo.xml", "values/foo.xml", "values-hdpi/foo.png", "values-ldpi/foo.png"));
}
@Test
public void testFilterEmpty() throws Exception {
- testNoopFilter("", "", FilterBehavior.FILTER_IN_ANALYSIS, ImmutableList.<String>of());
+ testNoopFilter("", "", /* filterInAnalysis = */ true, ImmutableList.<String>of());
}
@Test
@@ -93,7 +89,7 @@ public class ResourceFilterFactoryTest extends ResourceTestBase {
testNoopFilter(
"en",
"xhdpi,xxhdpi",
- FilterBehavior.FILTER_IN_ANALYSIS,
+ /* filterInAnalysis = */ true,
ImmutableList.of("drawable/ic_clear.xml", "drawable-v21/ic_clear.xml"));
}
@@ -105,7 +101,7 @@ public class ResourceFilterFactoryTest extends ResourceTestBase {
testNoopFilter(
"v4",
"hdpi",
- FilterBehavior.FILTER_IN_ANALYSIS,
+ /* filterInAnalysis = */ true,
ImmutableList.of("drawable-hdpi-v4/foo.png", "drawable-hdpi-v11/foo.png"));
}
@@ -114,7 +110,7 @@ public class ResourceFilterFactoryTest extends ResourceTestBase {
testFilter(
"",
"hdpi,ldpi",
- FilterBehavior.FILTER_IN_ANALYSIS,
+ /* filterInAnalysis = */ true,
// If we add resources to the output list in density order, these resources will be
// rearranged.
ImmutableList.of(
@@ -133,7 +129,7 @@ public class ResourceFilterFactoryTest extends ResourceTestBase {
testFilter(
"en_US",
"",
- FilterBehavior.FILTER_IN_ANALYSIS,
+ /* filterInAnalysis = */ true,
ImmutableList.of("values-en/foo.xml", "values-en-rUS/foo.xml"),
ImmutableList.of("values-fr/foo.xml", "values-en-rCA/foo.xml"));
@@ -146,7 +142,7 @@ public class ResourceFilterFactoryTest extends ResourceTestBase {
testFilter(
"en_US-ldrtl",
"",
- FilterBehavior.FILTER_IN_ANALYSIS,
+ /* filterInAnalysis = */ true,
ImmutableList.of("values-en/foo.xml", "values-en-rUS/foo.xml"),
ImmutableList.of("values-fr/foo.xml", "values-en-rCA/foo.xml"));
@@ -159,7 +155,7 @@ public class ResourceFilterFactoryTest extends ResourceTestBase {
testFilter(
"mcc111-en_US",
"",
- FilterBehavior.FILTER_IN_ANALYSIS,
+ /* filterInAnalysis = */ true,
ImmutableList.of("values-en/foo.xml", "values-en-rUS/foo.xml"),
ImmutableList.of("values-fr/foo.xml", "values-en-rCA/foo.xml"));
@@ -172,7 +168,7 @@ public class ResourceFilterFactoryTest extends ResourceTestBase {
testFilter(
"mcc111-mnc111-en_US",
"",
- FilterBehavior.FILTER_IN_ANALYSIS,
+ /* filterInAnalysis = */ true,
ImmutableList.of("values-en/foo.xml", "values-en-rUS/foo.xml"),
ImmutableList.of("values-fr/foo.xml", "values-en-rCA/foo.xml"));
@@ -185,7 +181,7 @@ public class ResourceFilterFactoryTest extends ResourceTestBase {
testFilter(
"sr-Latn,sr-rLatn,sr_Latn,b+sr+Latn",
"",
- FilterBehavior.FILTER_IN_ANALYSIS,
+ /* filterInAnalysis = */ true,
ImmutableList.of(
"values-sr/foo.xml",
"values-b+sr+Latn/foo.xml",
@@ -203,7 +199,7 @@ public class ResourceFilterFactoryTest extends ResourceTestBase {
testNoopFilter(
"sr",
"",
- FilterBehavior.FILTER_IN_ANALYSIS,
+ /* filterInAnalysis = */ true,
ImmutableList.of(
"values-sr/foo.xml",
"values-b+sr+Latn/foo.xml",
@@ -220,7 +216,7 @@ public class ResourceFilterFactoryTest extends ResourceTestBase {
testFilter(
"es-419,es_419,b+es+419",
"",
- FilterBehavior.FILTER_IN_ANALYSIS,
+ /* filterInAnalysis = */ true,
ImmutableList.of("values-es/foo.xml", "values-b+es+419/foo.xml", "values-es-419/foo.xml"),
// Spanish with another region specified should be filtered out.
ImmutableList.of("values-es-rUS/foo.xml"));
@@ -234,7 +230,7 @@ public class ResourceFilterFactoryTest extends ResourceTestBase {
testNoopFilter(
"es",
"",
- FilterBehavior.FILTER_IN_ANALYSIS,
+ /* filterInAnalysis = */ true,
ImmutableList.of(
"values-es/foo.xml",
"values-b+es+419/foo.xml",
@@ -267,7 +263,7 @@ public class ResourceFilterFactoryTest extends ResourceTestBase {
ResourceFilterFactory filter =
new ResourceFilterFactory(
- ImmutableList.of("en"), ImmutableList.of(), FilterBehavior.FILTER_IN_ANALYSIS);
+ ImmutableList.of("en"), ImmutableList.of(), /* filterInAnalysis = */ true);
doFilter(filter, badResources);
assertThat(errorConsumer.getAndClearRuleWarnings()).containsExactlyElementsIn(expectedWarnings);
@@ -284,7 +280,7 @@ public class ResourceFilterFactoryTest extends ResourceTestBase {
// target
filter =
new ResourceFilterFactory(
- ImmutableList.of("en"), ImmutableList.of(), FilterBehavior.FILTER_IN_ANALYSIS);
+ ImmutableList.of("en"), ImmutableList.of(), /* filterInAnalysis = */ true);
doFilter(filter, badResources);
assertThat(errorConsumer.getAndClearRuleWarnings()).containsExactlyElementsIn(expectedWarnings);
errorConsumer.assertNoAttributeWarnings(
@@ -296,32 +292,22 @@ public class ResourceFilterFactoryTest extends ResourceTestBase {
testNoopFilter(
"en",
"hdpi",
- FilterBehavior.FILTER_IN_ANALYSIS,
+ /* filterInAnalysis = */ true,
ImmutableList.of(
"first-subdir/res/drawable-en-hdpi/foo.png",
"second-subdir/res/drawable-en-hdpi/foo.png"));
}
- @Test
- public void testFilterWithDynamicConfiguration() throws Exception {
- testFilter(
- "en",
- "hdpi",
- FilterBehavior.FILTER_IN_ANALYSIS_WITH_DYNAMIC_CONFIGURATION,
- ImmutableList.of("drawable-en-hdpi/foo.png"),
- ImmutableList.of("drawable-en-ldpi/foo.png", "drawable-fr-hdpi/foo.png"));
- }
-
private void testNoopFilter(
String resourceConfigurationFilters,
String densities,
- FilterBehavior filterBehavior,
+ boolean filterInAnalysis,
List<String> resources)
throws Exception {
testFilter(
resourceConfigurationFilters,
densities,
- filterBehavior,
+ filterInAnalysis,
resources,
ImmutableList.<String>of());
}
@@ -329,7 +315,7 @@ public class ResourceFilterFactoryTest extends ResourceTestBase {
private void testFilter(
String resourceConfigurationFilters,
String densities,
- FilterBehavior filterBehavior,
+ boolean filterInAnalysis,
List<String> resourcesToKeep,
List<String> resourcesToDiscard)
throws Exception {
@@ -346,7 +332,7 @@ public class ResourceFilterFactoryTest extends ResourceTestBase {
ImmutableList<Artifact> allArtifacts =
ImmutableList.copyOf(Iterables.concat(expectedResources, unexpectedResources));
ResourceFilterFactory resourceFilterFactory =
- makeResourceFilter(resourceConfigurationFilters, densities, filterBehavior);
+ makeResourceFilter(resourceConfigurationFilters, densities, filterInAnalysis);
ImmutableList<Artifact> filtered = doFilter(resourceFilterFactory, allArtifacts);
assertThat(filtered).containsExactlyElementsIn(expectedResources).inOrder();
@@ -392,7 +378,7 @@ public class ResourceFilterFactoryTest extends ResourceTestBase {
.build());
ResourceFilterFactory resourceFilterFactory =
- makeResourceFilter("en", "hdpi", FilterBehavior.FILTER_IN_ANALYSIS);
+ makeResourceFilter("en", "hdpi", /* filterInAnalysis = */ true);
ResourceFilter filter =
resourceFilterFactory.getResourceFilter(
errorConsumer, resourceDependencies, localResources);
@@ -447,44 +433,37 @@ public class ResourceFilterFactoryTest extends ResourceTestBase {
@Test
public void testIsPrefilteringFilterInExecution() throws Exception {
- assertIsPrefiltering(FilterBehavior.FILTER_IN_EXECUTION, false);
+ assertIsPrefiltering(/* filterInAnalysis = */ false, false);
}
@Test
public void testIsPrefilteringFilterInAnalysis() throws Exception {
- assertIsPrefiltering(FilterBehavior.FILTER_IN_ANALYSIS, true);
+ assertIsPrefiltering(/* filterInAnalysis = */ true, true);
}
- @Test
- public void testIsPrefilteringFilterInAnalysisWithDynamicConfiguration() throws Exception {
- assertIsPrefiltering(FilterBehavior.FILTER_IN_ANALYSIS_WITH_DYNAMIC_CONFIGURATION, true);
- }
-
- private void assertIsPrefiltering(FilterBehavior behavior, boolean expectWhenNonEmpty)
+ private void assertIsPrefiltering(boolean filterInAnalysis, boolean expectWhenNonEmpty)
throws Exception {
// Empty filters should never prefilter
- assertIsPrefiltering(false, false, behavior).isFalse();
+ assertIsPrefiltering(false, false, filterInAnalysis).isFalse();
// Prefiltering behavior should be the same regardless of which setting is set
- assertIsPrefiltering(true, false, behavior).isEqualTo(expectWhenNonEmpty);
- assertIsPrefiltering(false, true, behavior).isEqualTo(expectWhenNonEmpty);
- assertIsPrefiltering(true, true, behavior).isEqualTo(expectWhenNonEmpty);
+ assertIsPrefiltering(true, false, filterInAnalysis).isEqualTo(expectWhenNonEmpty);
+ assertIsPrefiltering(false, true, filterInAnalysis).isEqualTo(expectWhenNonEmpty);
+ assertIsPrefiltering(true, true, filterInAnalysis).isEqualTo(expectWhenNonEmpty);
}
private BooleanSubject assertIsPrefiltering(
- boolean hasConfigurationFilters, boolean hasDensities, FilterBehavior behavior)
+ boolean hasConfigurationFilters, boolean hasDensities, boolean filterInAnalysis)
throws Exception {
return assertThat(
makeResourceFilter(
- hasConfigurationFilters ? "en" : "", hasDensities ? "hdpi" : "", behavior)
+ hasConfigurationFilters ? "en" : "", hasDensities ? "hdpi" : "", filterInAnalysis)
.isPrefiltering());
}
@Test
public void testGetOutputDirectorySuffixEmpty() throws Exception {
- assertThat(
- makeResourceFilter("", "", FilterBehavior.FILTER_IN_ANALYSIS)
- .getOutputDirectorySuffix())
+ assertThat(makeResourceFilter("", "", /* filterInAnalysis = */ true).getOutputDirectorySuffix())
.isNull();
}
@@ -492,7 +471,7 @@ public class ResourceFilterFactoryTest extends ResourceTestBase {
public void testGetOutputDirectoryOnlyFilterConfigurations() throws Exception {
String configurationFilters = "en,es-rUS,fr";
assertThat(
- makeResourceFilter(configurationFilters, "", FilterBehavior.FILTER_IN_ANALYSIS)
+ makeResourceFilter(configurationFilters, "", /* filterInAnalysis = */ true)
.getOutputDirectorySuffix())
.isEqualTo(configurationFilters + "_");
}
@@ -501,7 +480,7 @@ public class ResourceFilterFactoryTest extends ResourceTestBase {
public void testGetOutputDirectoryOnlyDensities() throws Exception {
String densities = "hdpi,ldpi,xhdpi";
assertThat(
- makeResourceFilter("", densities, FilterBehavior.FILTER_IN_ANALYSIS)
+ makeResourceFilter("", densities, /* filterInAnalysis = */ true)
.getOutputDirectorySuffix())
.isEqualTo("_" + densities);
}
@@ -514,9 +493,9 @@ public class ResourceFilterFactoryTest extends ResourceTestBase {
public void testGetOutputDirectoryDensitiesAreDifferentFromDensityConfigurationFilters()
throws Exception {
ResourceFilterFactory configurationFilter =
- makeResourceFilter("hdpi", "", FilterBehavior.FILTER_IN_ANALYSIS);
+ makeResourceFilter("hdpi", "", /* filterInAnalysis = */ true);
ResourceFilterFactory densityFilter =
- makeResourceFilter("", "hdpi", FilterBehavior.FILTER_IN_ANALYSIS);
+ makeResourceFilter("", "hdpi", /* filterInAnalysis = */ true);
assertThat(configurationFilter.getOutputDirectorySuffix())
.isNotEqualTo(densityFilter.getOutputDirectorySuffix());
@@ -525,7 +504,7 @@ public class ResourceFilterFactoryTest extends ResourceTestBase {
@Test
public void testGetOutputDirectory() throws Exception {
assertThat(
- makeResourceFilter("en,fr-rCA", "hdpi,ldpi", FilterBehavior.FILTER_IN_ANALYSIS)
+ makeResourceFilter("en,fr-rCA", "hdpi,ldpi", /* filterInAnalysis = */ true)
.getOutputDirectorySuffix())
.isEqualTo("en,fr-rCA_hdpi,ldpi");
}
@@ -537,38 +516,38 @@ public class ResourceFilterFactoryTest extends ResourceTestBase {
@Test
public void testGetOutputDirectoryDifferentlyOrdered() throws Exception {
ResourceFilterFactory first =
- makeResourceFilter("en,fr", "hdpi,ldpi", FilterBehavior.FILTER_IN_ANALYSIS);
+ makeResourceFilter("en,fr", "hdpi,ldpi", /* filterInAnalysis = */ true);
ResourceFilterFactory second =
- makeResourceFilter("fr,en", "ldpi,hdpi", FilterBehavior.FILTER_IN_ANALYSIS);
+ makeResourceFilter("fr,en", "ldpi,hdpi", /* filterInAnalysis = */ true);
assertThat(first.getOutputDirectorySuffix()).isEqualTo(second.getOutputDirectorySuffix());
}
@Test
public void testGetOutputDirectoryDuplicated() throws Exception {
ResourceFilterFactory duplicated =
- makeResourceFilter("en,en", "hdpi,hdpi", FilterBehavior.FILTER_IN_ANALYSIS);
- ResourceFilterFactory normal =
- makeResourceFilter("en", "hdpi", FilterBehavior.FILTER_IN_ANALYSIS);
+ makeResourceFilter("en,en", "hdpi,hdpi", /* filterInAnalysis = */ true);
+ ResourceFilterFactory normal = makeResourceFilter("en", "hdpi", /* filterInAnalysis = */ true);
assertThat(duplicated.getOutputDirectorySuffix()).isEqualTo(normal.getOutputDirectorySuffix());
}
private ResourceFilterFactory makeResourceFilter(
- String resourceConfigurationFilters, String densities, FilterBehavior behavior)
- throws Exception {
+ String resourceConfigurationFilters, String densities, boolean filterInAnalysis) {
return makeResourceFilter(
- ImmutableList.of(resourceConfigurationFilters), ImmutableList.of(densities), behavior);
+ resourceConfigurationFilters.isEmpty()
+ ? ImmutableList.of()
+ : ImmutableList.of(resourceConfigurationFilters),
+ densities.isEmpty() ? ImmutableList.of() : ImmutableList.of(densities),
+ filterInAnalysis);
}
private ResourceFilterFactory makeResourceFilter(
ImmutableList<String> resourceConfigurationFilters,
ImmutableList<String> densities,
- FilterBehavior behavior)
- throws Exception {
+ boolean filterInAnalysis) {
- return ResourceFilterFactory.forBaseAndAttrs(
- ResourceFilterFactory.empty(behavior),
- getAttributeMap(resourceConfigurationFilters, densities));
+ return ResourceFilterFactory.from(
+ filterInAnalysis, getAttributeMap(resourceConfigurationFilters, densities));
}
private AttributeMap getAttributeMap(
@@ -600,150 +579,8 @@ public class ResourceFilterFactoryTest extends ResourceTestBase {
@Test
public void testWithAttrsFromAttrsNotSpecified() throws Exception {
assertThat(
- ResourceFilterFactory.forBaseAndAttrs(
- ResourceFilterFactory.empty(FilterBehavior.FILTER_IN_ANALYSIS),
- FakeAttributeMapper.empty())
+ ResourceFilterFactory.from(/* filterInAnalysis = */ true, FakeAttributeMapper.empty())
.hasFilters())
.isFalse();
}
-
- @Test
- public void testGetTopLevelTransitionFilterInExecution() throws Exception {
- assertThat(
- getTopLevelTransition(
- ImmutableList.of("en"),
- ImmutableList.of("hdpi"),
- FilterBehavior.FILTER_IN_EXECUTION,
- true))
- .isNull();
- }
-
- @Test
- public void testGetTopLevelTransitionFilterInAnalysis() throws Exception {
- assertThat(
- getTopLevelTransition(
- ImmutableList.of("en"),
- ImmutableList.of("hdpi"),
- FilterBehavior.FILTER_IN_ANALYSIS,
- true))
- .isNull();
- }
-
- @Test
- public void testGetTopLevelTransitionNotBinary() throws Exception {
- assertThat(
- getTopLevelTransition(
- ImmutableList.of("en"),
- ImmutableList.of("hdpi"),
- FilterBehavior.FILTER_IN_ANALYSIS_WITH_DYNAMIC_CONFIGURATION,
- false))
- .isSameAs(
- ResourceFilterFactory.REMOVE_DYNAMICALLY_CONFIGURED_RESOURCE_FILTERING_TRANSITION);
- }
-
- @Test
- public void testGetTopLevelTransitionNoFilters() throws Exception {
- assertThat(
- getTopLevelTransition(
- ImmutableList.<String>of(),
- ImmutableList.<String>of(),
- FilterBehavior.FILTER_IN_ANALYSIS_WITH_DYNAMIC_CONFIGURATION,
- true))
- .isSameAs(
- ResourceFilterFactory.REMOVE_DYNAMICALLY_CONFIGURED_RESOURCE_FILTERING_TRANSITION);
- }
-
- @Test
- public void testGetTopLevelTransition() throws Exception {
- ImmutableList<String> resourceConfigurationFilters = ImmutableList.of("en");
- ImmutableList<String> densities = ImmutableList.of("hdpi");
- PatchTransition transition =
- getTopLevelTransition(
- resourceConfigurationFilters,
- densities,
- FilterBehavior.FILTER_IN_ANALYSIS_WITH_DYNAMIC_CONFIGURATION,
- true);
-
- assertThat(transition).isInstanceOf(AddDynamicallyConfiguredResourceFilteringTransition.class);
-
- AddDynamicallyConfiguredResourceFilteringTransition addTransition =
- (AddDynamicallyConfiguredResourceFilteringTransition) transition;
- ResourceFilterFactory foundFilter =
- ResourceFilterFactory.forBaseAndAttrs(
- ResourceFilterFactory.empty(
- FilterBehavior.FILTER_IN_ANALYSIS_WITH_DYNAMIC_CONFIGURATION),
- addTransition.getAttrs());
-
- ResourceFilterFactory expectedFilter =
- makeResourceFilter(
- resourceConfigurationFilters,
- densities,
- FilterBehavior.FILTER_IN_ANALYSIS_WITH_DYNAMIC_CONFIGURATION);
- assertThat(foundFilter).isEqualTo(expectedFilter);
- }
-
- private PatchTransition getTopLevelTransition(
- ImmutableList<String> resourceConfigurationFilters,
- ImmutableList<String> densities,
- FilterBehavior behavior,
- boolean isBinary)
- throws Exception {
- AttributeMap attrs = getAttributeMap(resourceConfigurationFilters, densities);
- return makeResourceFilter("", "", behavior)
- .getTopLevelPatchTransition(isBinary ? "android_binary" : "android_library", attrs);
- }
-
- @Test
- public void testRemoveDynamicConfigurationTransition() throws Exception {
- assertPatchTransition(
- makeResourceFilter(
- "en", "ldpi", FilterBehavior.FILTER_IN_ANALYSIS_WITH_DYNAMIC_CONFIGURATION),
- ResourceFilterFactory.REMOVE_DYNAMICALLY_CONFIGURED_RESOURCE_FILTERING_TRANSITION,
- ResourceFilterFactory.empty(FilterBehavior.FILTER_IN_ANALYSIS));
- }
-
- @Test
- public void testAddDynamicConfigurationTransitionDynamicConfiguration() throws Exception {
- ImmutableList<String> resourceConfigurationFilters = ImmutableList.of("en", "es-rUS", "fr");
- ImmutableList<String> densities = ImmutableList.of("ldpi", "hdpi");
-
- AttributeMap attrs = getAttributeMap(resourceConfigurationFilters, densities);
-
- assertPatchTransition(
- ResourceFilterFactory.empty(FilterBehavior.FILTER_IN_ANALYSIS_WITH_DYNAMIC_CONFIGURATION),
- new ResourceFilterFactory.AddDynamicallyConfiguredResourceFilteringTransition(attrs),
- makeResourceFilter(
- resourceConfigurationFilters,
- densities,
- FilterBehavior.FILTER_IN_ANALYSIS_WITH_DYNAMIC_CONFIGURATION));
- }
-
- private void assertPatchTransition(
- ResourceFilterFactory oldResourceFilterFactory,
- PatchTransition transition,
- ResourceFilterFactory expectedNewResourceFilterFactory) {
- AndroidConfiguration.Options oldAndroidOptions = getAndroidOptions(oldResourceFilterFactory);
-
- BuildOptions oldOptions = BuildOptions.builder().add(oldAndroidOptions).build();
- BuildOptions newOptions = transition.apply(oldOptions);
-
- // The old options should not have been changed
- assertThat(oldAndroidOptions.resourceFilterFactory).isSameAs(oldResourceFilterFactory);
- assertThat(oldAndroidOptions).isEqualTo(getAndroidOptions(oldResourceFilterFactory));
-
- // Besides the ResourceFilterFactory, the new options should be the same as the old ones
- assertThat(newOptions.getOptions()).hasSize(1);
- AndroidConfiguration.Options newAndroidOptions =
- newOptions.get(AndroidConfiguration.Options.class);
- assertThat(newAndroidOptions).isEqualTo(getAndroidOptions(expectedNewResourceFilterFactory));
- }
-
- private AndroidConfiguration.Options getAndroidOptions(
- ResourceFilterFactory resourceFilterFactory) {
- AndroidConfiguration.Options androidOptions =
- (AndroidConfiguration.Options) new AndroidConfiguration.Options().getDefault();
- androidOptions.resourceFilterFactory = resourceFilterFactory;
-
- return androidOptions;
- }
}