aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test
diff options
context:
space:
mode:
authorGravatar asteinb <asteinb@google.com>2018-03-29 10:02:27 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-29 10:03:42 -0700
commitf2b66aa31b0a3addb2f3712c6232f4c8c65b55db (patch)
tree776071ffff4d398bd7e72dbf9efaa92f6f2207cb /src/test
parentdbe1ed769d4c957d7b8aea2c9c92febfc26f022d (diff)
Rename LocalResourceContainer to AndroidResources and remove asset code from it
As part of decoupling Android resources and assets, rename LocalResourceContainer to AndroidResources and remove asset code from it. Some general asset and manfiest code still remains and will be dealt with in future changes. Remove LocalResourceContainer from the ParsingActionBuilder, since it's always used to build the ResourceContainer that is subsequently passed in. RELNOTES: none PiperOrigin-RevId: 190945260
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/android/AarImportTest.java12
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java4
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/android/AndroidLibraryTest.java4
-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/BUILD4
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/android/ResourceFilterFactoryTest.java39
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();
}
}