diff options
Diffstat (limited to 'src/test')
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. */ |