aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google
diff options
context:
space:
mode:
authorGravatar asteinb <asteinb@google.com>2018-03-21 09:59:36 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-21 10:00:53 -0700
commita3ba00e61f81163f90b1edee4a076c7e7d877e4c (patch)
tree8003dfd74637957201b77e119c32ba15202e69e9 /src/test/java/com/google
parent3e84222da4a2e87943cd794f93975bace16d0880 (diff)
Remove support for dynamically configured resource filtering
Dynamically configured resource filtering was never turned on, as dynamic configuration turned out to be too slow. While we're at it, do a bit of related cleanup (remove the unused flag that controlled resource filtering in analysis, and switch from a now-two-valued enum to a boolean to specify whether resources should be filtered in analysis). RELNOTES: none PiperOrigin-RevId: 189923588
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;
- }
}