aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java3
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/android/AndroidBuildViewTestCase.java10
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/android/BUILD1
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/android/ResourceFilterFactoryTest.java35
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/android/ResourceTestBase.java58
5 files changed, 66 insertions, 41 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 06e603b901..38d691b39d 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
@@ -1849,8 +1849,7 @@ public class AndroidBinaryTest extends AndroidBuildViewTestCase {
* Gets the paths of matching artifacts that are used as input to resource processing
*
* @param dir the directory to look for artifacts in
- * @param resource the ResourceContainer output from the resource processing that uses these
- * artifacts as inputs
+ * @param resource the output from the resource processing that uses these artifacts as inputs
* @return the paths to all artifacts used as inputs to resource processing that are contained
* within the given directory, relative to that directory.
*/
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBuildViewTestCase.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBuildViewTestCase.java
index f269d3dd80..a360befaac 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBuildViewTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBuildViewTestCase.java
@@ -124,15 +124,15 @@ public abstract class AndroidBuildViewTestCase extends BuildViewTestCase {
return getGeneratingSpawnAction(resource.getApk());
}
- protected static ResourceContainer getResourceContainer(ConfiguredTarget target) {
- return getResourceContainer(target, /* transitive= */ false);
+ protected static ValidatedAndroidResources getValidatedResources(ConfiguredTarget target) {
+ return getValidatedResources(target, /* transitive= */ false);
}
- protected static ResourceContainer getResourceContainer(
+ protected static ValidatedAndroidResources getValidatedResources(
ConfiguredTarget target, boolean transitive) {
ValidatedAndroidData validated = getValidatedData(target, transitive);
- assertThat(validated).isInstanceOf(ResourceContainer.class);
- return (ResourceContainer) validated;
+ assertThat(validated).isInstanceOf(ValidatedAndroidResources.class);
+ return (ValidatedAndroidResources) validated;
}
protected static ValidatedAndroidData getValidatedData(ConfiguredTarget target) {
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 b04f6061cf..d7c256c228 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
@@ -141,6 +141,7 @@ java_library(
srcs = ["ResourceTestBase.java"],
deps = [
":AndroidBuildViewTestCase",
+ "//src/main/java/com/google/devtools/build/lib:android-rules",
"//src/main/java/com/google/devtools/build/lib:build-base",
"//src/main/java/com/google/devtools/build/lib:events",
"//src/main/java/com/google/devtools/build/lib:packages-internal",
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 1793e42b14..5ab028a7cd 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,7 +19,6 @@ 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.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;
@@ -39,34 +38,22 @@ import org.junit.runners.JUnit4;
@RunWith(JUnit4.class)
public class ResourceFilterFactoryTest extends ResourceTestBase {
- private NestedSet<ValidatedAndroidData> getResourceContainers(
- ImmutableList<Artifact>... resources) throws Exception {
+ private NestedSet<ValidatedAndroidData> getResources(ImmutableList<Artifact>... resources)
+ throws Exception {
NestedSetBuilder<ValidatedAndroidData> builder = NestedSetBuilder.naiveLinkOrder();
for (ImmutableList<Artifact> resourceList : resources) {
- builder.add(getResourceContainer(resourceList));
+ builder.add(getResources(resourceList));
}
return builder.build();
}
- private ResourceContainer getResourceContainer(ImmutableList<Artifact> resources)
+ private ValidatedAndroidResources getResources(ImmutableList<Artifact> resources)
throws Exception {
- // Get dummy objects for irrelevant values required by the builder.
- Artifact manifest = getResource("manifest");
-
- // Include a hashCode of the resources in the label. A hack in ResourceContainer currently means
- // that class has a limited hashCode method that doesn't take resources into account.
- // TODO(bazel-team): Remove this hack once that one no longer exists.
- Label label =
- Label.create(
- manifest.getOwnerLabel().getPackageName(), "resourceContainer_" + resources.hashCode());
-
- return ResourceContainer.builder()
- .setAndroidResources(
- AndroidResources.forResources(errorConsumer, resources, "resource_files"))
- .setLabel(label)
- .setManifestExported(false)
- .setManifest(manifest)
- .build();
+ return makeValidatedResourcesFor(
+ resources,
+ /* includeAapt2Outs = */ true,
+ new ProcessedAndroidManifest(getOutput("manifest"), "com.some.pkg", /* exported = */ false),
+ ResourceDependencies.empty());
}
@Test
@@ -363,10 +350,10 @@ public class ResourceFilterFactoryTest extends ResourceTestBase {
ResourceDependencies resourceDependencies =
ResourceDependencies.empty()
.withResources(
- getResourceContainers(
+ getResources(
ImmutableList.of(transitiveResourceToDiscard),
ImmutableList.of(transitiveResourceToKeep)),
- getResourceContainers(
+ getResources(
ImmutableList.of(directResourceToDiscard),
ImmutableList.of(directResourceToKeep)),
new NestedSetBuilder<Artifact>(Order.NAIVE_LINK_ORDER)
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/ResourceTestBase.java b/src/test/java/com/google/devtools/build/lib/rules/android/ResourceTestBase.java
index dad6ee04fe..073a2e4030 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/ResourceTestBase.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/ResourceTestBase.java
@@ -34,6 +34,7 @@ import com.google.devtools.build.lib.cmdline.LabelSyntaxException;
import com.google.devtools.build.lib.events.ExtendedEventHandler;
import com.google.devtools.build.lib.events.StoredEventHandler;
import com.google.devtools.build.lib.packages.AbstractRuleErrorConsumer;
+import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
import com.google.devtools.build.lib.packages.RuleErrorConsumer;
import com.google.devtools.build.lib.skyframe.ConfiguredTargetKey;
import com.google.devtools.build.lib.vfs.FileSystem;
@@ -62,14 +63,15 @@ public abstract class ResourceTestBase extends AndroidBuildViewTestCase {
"android.jar",
"ResourceProcessorBusyBox_deploy.jar");
- private static final ArtifactOwner OWNER = () -> {
- try {
- return Label.create("java", "all");
- } catch (LabelSyntaxException e) {
- assertWithMessage(e.getMessage()).fail();
- return null;
- }
- };
+ private static final ArtifactOwner OWNER =
+ () -> {
+ try {
+ return Label.create("java", "all");
+ } catch (LabelSyntaxException e) {
+ assertWithMessage(e.getMessage()).fail();
+ return null;
+ }
+ };
/** A faked {@link RuleErrorConsumer} that validates that only expected errors were reported. */
public static final class FakeRuleErrorConsumer extends AbstractRuleErrorConsumer
@@ -202,8 +204,16 @@ public abstract class ResourceTestBase extends AndroidBuildViewTestCase {
return builder.build();
}
- public Artifact getResource(String pathString) {
- Path path = fileSystem.getPath("/" + RESOURCE_ROOT + "/" + pathString);
+ Artifact getResource(String pathString) {
+ return getArtifact(RESOURCE_ROOT, pathString);
+ }
+
+ Artifact getOutput(String pathString) {
+ return getArtifact("outputs", pathString);
+ }
+
+ private Artifact getArtifact(String subdir, String pathString) {
+ Path path = fileSystem.getPath("/" + subdir + "/" + pathString);
return new Artifact(
root, root.getExecPath().getRelative(root.getRoot().relativize(path)), OWNER);
}
@@ -236,6 +246,34 @@ public abstract class ResourceTestBase extends AndroidBuildViewTestCase {
ImmutableList.of(dummy.getConfiguration()), dummy.getHostConfiguration()));
}
+ public ValidatedAndroidResources makeValidatedResourcesFor(
+ ImmutableList<Artifact> resources,
+ boolean includeAapt2Outs,
+ ProcessedAndroidManifest manifest,
+ ResourceDependencies resourceDependencies)
+ throws RuleErrorException {
+ return ValidatedAndroidResources.of(
+ MergedAndroidResources.of(
+ ParsedAndroidResources.of(
+ AndroidResources.forResources(errorConsumer, resources, "resource_files"),
+ getOutput("symbols.bin"),
+ includeAapt2Outs ? getOutput("symbols.zip") : null,
+ manifest.getManifest().getOwnerLabel(),
+ manifest,
+ DataBinding.asDisabledDataBindingContext()),
+ getOutput("merged/resources.zip"),
+ getOutput("class.jar"),
+ /* dataBindingInfoZip = */ null,
+ resourceDependencies,
+ manifest),
+ getOutput("r.txt"),
+ getOutput("source.jar"),
+ getOutput("resources.apk"),
+ includeAapt2Outs ? getOutput("aapt2-r.txt") : null,
+ includeAapt2Outs ? getOutput("aapt2-source.jar") : null,
+ includeAapt2Outs ? getOutput("aapt2-static-lib") : null);
+ }
+
/**
* Assets that the action used to generate the given outputs has the expected inputs and outputs.
*/