aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/com/google/devtools')
-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();
}
}