diff options
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/rules/android/AarImportTest.java | 12 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java | 4 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/rules/android/AndroidLibraryTest.java | 4 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/rules/android/AndroidResourcesTest.java (renamed from src/test/java/com/google/devtools/build/lib/rules/android/LocalResourceContainerTest.java) | 64 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/rules/android/BUILD | 4 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/rules/android/ResourceFilterFactoryTest.java | 39 |
6 files changed, 76 insertions, 51 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AarImportTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/AarImportTest.java index 7a17eeaf52..a861b18517 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/android/AarImportTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/android/AarImportTest.java @@ -89,11 +89,13 @@ public class AarImportTest extends BuildViewTestCase { ResourceContainer resourceContainer = directResources.iterator().next(); assertThat(resourceContainer.getManifest()).isNotNull(); - Artifact resourceTreeArtifact = Iterables.getOnlyElement(resourceContainer.getResources()); + Artifact resourceTreeArtifact = + Iterables.getOnlyElement(resourceContainer.getResources().getResources()); assertThat(resourceTreeArtifact.isTreeArtifact()).isTrue(); assertThat(resourceTreeArtifact.getExecPathString()).endsWith("_aar/unzipped/resources/foo"); - Artifact assetsTreeArtifact = Iterables.getOnlyElement(resourceContainer.getAssets()); + Artifact assetsTreeArtifact = + Iterables.getOnlyElement(resourceContainer.getAssets().getAssets()); assertThat(assetsTreeArtifact.isTreeArtifact()).isTrue(); assertThat(assetsTreeArtifact.getExecPathString()).endsWith("_aar/unzipped/assets/foo"); } @@ -107,8 +109,8 @@ public class AarImportTest extends BuildViewTestCase { .toList() .get(0); - Artifact resourceTreeArtifact = resourceContainer.getResources().get(0); - Artifact assetsTreeArtifact = resourceContainer.getAssets().get(0); + Artifact resourceTreeArtifact = resourceContainer.getResources().getResources().get(0); + Artifact assetsTreeArtifact = resourceContainer.getAssets().getAssets().get(0); Artifact aarResourcesExtractor = getHostConfiguredTarget( ruleClassProvider.getToolsRepository() + "//tools/android:aar_resources_extractor") @@ -326,7 +328,7 @@ public class AarImportTest extends BuildViewTestCase { .getManifest() .getRootRelativePathString(); } - + @Test public void testTransitiveExports() throws Exception { assertThat(getConfiguredTarget("//a:bar").get(JavaInfo.PROVIDER).getTransitiveExports()) 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 9b81ffcd66..499da948b7 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 @@ -2635,7 +2635,7 @@ public class AndroidBinaryTest extends AndroidBuildViewTestCase { checkError("java/android/resources", "r", "'java/android/resources/res/somefile.xml' is not in the expected resource directory " + "structure of <resource directory>/{" - + Joiner.on(',').join(LocalResourceContainer.RESOURCE_DIRECTORY_TYPES) + "}", + + Joiner.on(',').join(AndroidResources.RESOURCE_DIRECTORY_TYPES) + "}", "android_binary(name = 'r',", " manifest = 'AndroidManifest.xml',", " resource_files = ['res/somefile.xml', 'r/t/f/m/raw/fold']", @@ -2649,7 +2649,7 @@ public class AndroidBinaryTest extends AndroidBuildViewTestCase { "r", "'java/android/resources/res/other/somefile.xml' is not in the expected resource directory " + "structure of <resource directory>/{" - + Joiner.on(',').join(LocalResourceContainer.RESOURCE_DIRECTORY_TYPES) + "}", + + Joiner.on(',').join(AndroidResources.RESOURCE_DIRECTORY_TYPES) + "}", "android_binary(name = 'r',", " manifest = 'AndroidManifest.xml',", " resource_files = ['res/other/somefile.xml', 'r/t/f/m/raw/fold']", diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidLibraryTest.java index e9bbb6e7de..72c27bcd5a 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidLibraryTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidLibraryTest.java @@ -806,7 +806,7 @@ public class AndroidLibraryTest extends AndroidBuildViewTestCase { checkError("java/android", "r", "'java/android/res/somefile.xml' is not in the expected resource directory structure of" + " <resource directory>/{" - + Joiner.on(',').join(LocalResourceContainer.RESOURCE_DIRECTORY_TYPES) + "}", + + Joiner.on(',').join(AndroidResources.RESOURCE_DIRECTORY_TYPES) + "}", "android_library(name = 'r',", " manifest = 'AndroidManifest.xml',", " resource_files = ['res/somefile.xml', 'r/t/f/m/raw/fold']", @@ -818,7 +818,7 @@ public class AndroidLibraryTest extends AndroidBuildViewTestCase { checkError("java/android", "r", "'java/android/res/other/somefile.xml' is not in the expected resource directory structure" + " of <resource directory>/{" - + Joiner.on(',').join(LocalResourceContainer.RESOURCE_DIRECTORY_TYPES) + "}", + + Joiner.on(',').join(AndroidResources.RESOURCE_DIRECTORY_TYPES) + "}", "android_library(name = 'r',", " manifest = 'AndroidManifest.xml',", " resource_files = ['res/other/somefile.xml', 'r/t/f/m/raw/fold']", diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/LocalResourceContainerTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidResourcesTest.java index 550f86beb6..056970f322 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/android/LocalResourceContainerTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidResourcesTest.java @@ -18,17 +18,19 @@ import static com.google.common.truth.Truth.assertWithMessage; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Iterables; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; import com.google.devtools.build.lib.vfs.PathFragment; +import java.util.Optional; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; -/** Tests {@link LocalResourceContainer} */ +/** Tests {@link AndroidResourcesTest} */ @RunWith(JUnit4.class) -public class LocalResourceContainerTest extends ResourceTestBase { +public class AndroidResourcesTest extends ResourceTestBase { private static final PathFragment DEFAULT_RESOURCE_ROOT = PathFragment.create(RESOURCE_ROOT); private static final ImmutableList<PathFragment> RESOURCES_ROOTS = ImmutableList.of(DEFAULT_RESOURCE_ROOT); @@ -84,7 +86,7 @@ public class LocalResourceContainerTest extends ResourceTestBase { private ImmutableList<PathFragment> getResourceRoots(ImmutableList<Artifact> artifacts) throws Exception { - return LocalResourceContainer.getResourceRoots(errorConsumer, artifacts, "resource_files"); + return AndroidResources.getResourceRoots(errorConsumer, artifacts, "resource_files"); } @Test @@ -112,36 +114,58 @@ public class LocalResourceContainerTest extends ResourceTestBase { ImmutableList.of(keptResource)); } + @Test + public void testFilterIsDependency() throws Exception { + Artifact keptResource = getResource("values-en/foo.xml"); + assertFilter( + ImmutableList.of(keptResource, getResource("drawable/bar.png")), + ImmutableList.of(keptResource), + /* isDependency = */ true); + } + private void assertFilter( ImmutableList<Artifact> unfilteredResources, ImmutableList<Artifact> filteredResources) throws Exception { + assertFilter(unfilteredResources, filteredResources, /* isDependency = */ false); + } + + private void assertFilter( + ImmutableList<Artifact> unfilteredResources, + ImmutableList<Artifact> filteredResources, + boolean isDependency) + throws Exception { ImmutableList<PathFragment> unfilteredResourcesRoots = getResourceRoots(unfilteredResources); - LocalResourceContainer unfiltered = - new LocalResourceContainer( - unfilteredResources, - unfilteredResourcesRoots, - unfilteredResources, - unfilteredResourcesRoots); + AndroidResources unfiltered = + new AndroidResources(unfilteredResources, unfilteredResourcesRoots); + + ImmutableList.Builder<Artifact> filteredDepsBuilder = ImmutableList.builder(); ResourceFilter fakeFilter = - ResourceFilter.of(ImmutableSet.copyOf(filteredResources), (artifact) -> {}); + ResourceFilter.of(ImmutableSet.copyOf(filteredResources), filteredDepsBuilder::add); - LocalResourceContainer filtered = unfiltered.filter(errorConsumer, fakeFilter); + Optional<AndroidResources> filtered = unfiltered.maybeFilter(fakeFilter, isDependency); - if (unfilteredResources.equals(filteredResources)) { - // The filtering was a no-op; the original object, not a copy, should be returned - assertThat(filtered).isSameAs(unfiltered); + if (filteredResources.equals(unfilteredResources)) { + // We expect filtering to have been a no-op + assertThat(filtered.isPresent()).isFalse(); } else { // The resources and their roots should be filtered - assertThat(filtered.getResources()).containsExactlyElementsIn(filteredResources).inOrder(); - assertThat(filtered.getResourceRoots()) + assertThat(filtered.get().getResources()) + .containsExactlyElementsIn(filteredResources) + .inOrder(); + assertThat(filtered.get().getResourceRoots()) .containsExactlyElementsIn(getResourceRoots(filteredResources)) .inOrder(); + } - // The assets and their roots should not be filtered; the original objects, not a copy, should - // be returned. - assertThat(filtered.getAssets()).isSameAs(unfiltered.getAssets()); - assertThat(filtered.getAssetRoots()).isSameAs(unfiltered.getAssetRoots()); + if (!isDependency) { + // The filter should not record any filtered dependencies + assertThat(filteredDepsBuilder.build()).isEmpty(); + } else { + // The filtered dependencies should be exactly the list of filtered resources + assertThat(unfilteredResources) + .containsExactlyElementsIn( + Iterables.concat(filteredDepsBuilder.build(), filteredResources)); } } } diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/BUILD b/src/test/java/com/google/devtools/build/lib/rules/android/BUILD index b2ad32d9ff..6bc33e4aaa 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/android/BUILD +++ b/src/test/java/com/google/devtools/build/lib/rules/android/BUILD @@ -104,8 +104,8 @@ java_test( ) java_test( - name = "LocalResourceContainerTest", - srcs = ["LocalResourceContainerTest.java"], + name = "AndroidResourcesTest", + srcs = ["AndroidResourcesTest.java"], deps = [ ":ResourceTestBase", "//src/main/java/com/google/devtools/build/lib:android-rules", 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 3aa3be15e5..0ddd905060 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 @@ -60,9 +60,7 @@ public class ResourceFilterFactoryTest extends ResourceTestBase { manifest.getOwnerLabel().getPackageName(), "resourceContainer_" + resources.hashCode()); return ResourceContainer.builder() - .setResources(resources) - .setResourcesRoots( - LocalResourceContainer.getResourceRoots(errorConsumer, resources, "resource_files")) + .setResources(AndroidResources.forResources(errorConsumer, resources, "resource_files")) .setLabel(label) .setManifestExported(false) .setManifest(manifest) @@ -354,9 +352,11 @@ public class ResourceFilterFactoryTest extends ResourceTestBase { Artifact transitiveResourceToDiscard = getResource("transitive/drawable-en-ldpi/transitive.png"); - LocalResourceContainer localResources = - LocalResourceContainer.forResources( - errorConsumer, ImmutableList.of(localResourceToKeep, localResourceToDiscard)); + AndroidResources localResources = + AndroidResources.forResources( + errorConsumer, + ImmutableList.of(localResourceToKeep, localResourceToDiscard), + "resource_files"); ResourceDependencies resourceDependencies = ResourceDependencies.empty() @@ -383,7 +383,7 @@ public class ResourceFilterFactoryTest extends ResourceTestBase { resourceFilterFactory.getResourceFilter( errorConsumer, resourceDependencies, localResources); - assertThat(localResources.filter(errorConsumer, filter).getResources()) + assertThat(localResources.filterLocalResources(filter).getResources()) .containsExactly(localResourceToKeep); ResourceDependencies filteredResourceDeps = resourceDependencies.filter(filter); @@ -401,13 +401,13 @@ public class ResourceFilterFactoryTest extends ResourceTestBase { filteredResourceDeps.getDirectResourceContainers().toList(); assertThat(directContainers).hasSize(2); - ResourceContainer directToDiscard = directContainers.get(0); + AndroidResources directToDiscard = directContainers.get(0).getResources(); assertThat(directToDiscard.getResources()).isEmpty(); - assertThat(directToDiscard.getResourcesRoots()).isEmpty(); + assertThat(directToDiscard.getResourceRoots()).isEmpty(); - ResourceContainer directToKeep = directContainers.get(1); + AndroidResources directToKeep = directContainers.get(1).getResources(); assertThat(directToKeep.getResources()).containsExactly(directResourceToKeep); - assertThat(directToKeep.getResourcesRoots()) + assertThat(directToKeep.getResourceRoots()) .containsExactly( directResourceToKeep.getExecPath().getParentDirectory().getParentDirectory()); @@ -415,13 +415,13 @@ public class ResourceFilterFactoryTest extends ResourceTestBase { filteredResourceDeps.getTransitiveResourceContainers().toList(); assertThat(transitiveContainers).hasSize(2); - ResourceContainer transitiveToDiscard = transitiveContainers.get(0); + AndroidResources transitiveToDiscard = transitiveContainers.get(0).getResources(); assertThat(transitiveToDiscard.getResources()).isEmpty(); - assertThat(transitiveToDiscard.getResourcesRoots()).isEmpty(); + assertThat(transitiveToDiscard.getResourceRoots()).isEmpty(); - ResourceContainer transitiveToKeep = transitiveContainers.get(1); + AndroidResources transitiveToKeep = transitiveContainers.get(1).getResources(); assertThat(transitiveToKeep.getResources()).containsExactly(transitiveResourceToKeep); - assertThat(transitiveToKeep.getResourcesRoots()) + assertThat(transitiveToKeep.getResourceRoots()) .containsExactly( transitiveResourceToKeep.getExecPath().getParentDirectory().getParentDirectory()); @@ -492,17 +492,16 @@ public class ResourceFilterFactoryTest extends ResourceTestBase { private ImmutableList<Artifact> doFilter( ResourceFilterFactory resourceFilterFactory, ImmutableList<Artifact> artifacts) throws RuleErrorException { - LocalResourceContainer localResourceContainer = - LocalResourceContainer.forResources(errorConsumer, artifacts); + AndroidResources localResources = + AndroidResources.forResources(errorConsumer, artifacts, "resource_files"); ResourceDependencies resourceDeps = ResourceDependencies.empty(); ResourceFilter filter = - resourceFilterFactory.getResourceFilter( - errorConsumer, resourceDeps, localResourceContainer); + resourceFilterFactory.getResourceFilter(errorConsumer, resourceDeps, localResources); assertThat(resourceDeps.filter(filter)).isSameAs(resourceDeps); - return localResourceContainer.filter(errorConsumer, filter).getResources(); + return localResources.filterLocalResources(filter).getResources(); } } |