diff options
Diffstat (limited to 'src/test')
4 files changed, 42 insertions, 14 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/actions/ArtifactTest.java b/src/test/java/com/google/devtools/build/lib/actions/ArtifactTest.java index abbd3472c8..e4bd5b9a46 100644 --- a/src/test/java/com/google/devtools/build/lib/actions/ArtifactTest.java +++ b/src/test/java/com/google/devtools/build/lib/actions/ArtifactTest.java @@ -20,6 +20,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; +import com.google.common.testing.EqualsTester; import com.google.devtools.build.lib.actions.ActionAnalysisMetadata.MiddlemanType; import com.google.devtools.build.lib.actions.Artifact.SourceArtifact; import com.google.devtools.build.lib.actions.ArtifactResolver.ArtifactResolverSupplier; @@ -411,6 +412,40 @@ public class ArtifactTest { assertThat(new Artifact(scratch.file("/newRoot/foo"), root).getRoot()).isEqualTo(root); } + @Test + public void hashCodeAndEquals() throws IOException { + Path execRoot = scratch.getFileSystem().getPath("/"); + ArtifactRoot root = ArtifactRoot.asDerivedRoot(execRoot, scratch.dir("/newRoot")); + ArtifactOwner firstOwner = () -> Label.parseAbsoluteUnchecked("//bar:bar"); + ArtifactOwner secondOwner = () -> Label.parseAbsoluteUnchecked("//foo:foo"); + Artifact derived1 = new Artifact(root, PathFragment.create("newRoot/shared"), firstOwner); + Artifact derived2 = new Artifact(root, PathFragment.create("newRoot/shared"), secondOwner); + ArtifactRoot sourceRoot = ArtifactRoot.asSourceRoot(Root.fromPath(root.getRoot().asPath())); + Artifact source1 = new SourceArtifact(sourceRoot, PathFragment.create("shared"), firstOwner); + Artifact source2 = new SourceArtifact(sourceRoot, PathFragment.create("shared"), secondOwner); + new EqualsTester() + .addEqualityGroup(derived1) + .addEqualityGroup(derived2) + .addEqualityGroup(source1, source2) + .testEquals(); + assertThat(derived1.hashCode()).isEqualTo(derived2.hashCode()); + assertThat(derived1.hashCode()).isNotEqualTo(source1.hashCode()); + assertThat(source1.hashCode()).isEqualTo(source2.hashCode()); + Artifact.OwnerlessArtifactWrapper wrapper1 = new Artifact.OwnerlessArtifactWrapper(derived1); + Artifact.OwnerlessArtifactWrapper wrapper2 = new Artifact.OwnerlessArtifactWrapper(derived2); + Artifact.OwnerlessArtifactWrapper wrapper3 = new Artifact.OwnerlessArtifactWrapper(source1); + Artifact.OwnerlessArtifactWrapper wrapper4 = new Artifact.OwnerlessArtifactWrapper(source2); + new EqualsTester() + .addEqualityGroup(wrapper1, wrapper2) + .addEqualityGroup(wrapper3, wrapper4) + .testEquals(); + Path path1 = derived1.getPath(); + Path path2 = derived2.getPath(); + Path path3 = source1.getPath(); + Path path4 = source2.getPath(); + new EqualsTester().addEqualityGroup(path1, path2, path3, path4).testEquals(); + } + private Artifact createDirNameArtifact() throws Exception { return new Artifact( scratch.file("/aaa/bbb/ccc/ddd"), diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionFunctionTest.java index 786fe20a10..3a21b58b36 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionFunctionTest.java @@ -33,7 +33,6 @@ import com.google.devtools.build.lib.actions.Artifact.TreeFileArtifact; import com.google.devtools.build.lib.actions.ArtifactOwner; import com.google.devtools.build.lib.actions.ArtifactPrefixConflictException; import com.google.devtools.build.lib.actions.ArtifactRoot; -import com.google.devtools.build.lib.actions.ArtifactSkyKey; import com.google.devtools.build.lib.actions.FileArtifactValue; import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException; import com.google.devtools.build.lib.actions.util.ActionsTestUtil; @@ -262,9 +261,7 @@ public final class ActionTemplateExpansionFunctionTest extends FoundationTestCas } @Override public SkyValue compute(SkyKey skyKey, Environment env) { - ArtifactSkyKey artifactSkyKey = (ArtifactSkyKey) skyKey.argument(); - Artifact artifact = artifactSkyKey.getArtifact(); - return Preconditions.checkNotNull(artifactValueMap.get(artifact)); + return Preconditions.checkNotNull(artifactValueMap.get(skyKey)); } @Override diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTest.java index 734038cb29..cc4ae1a0fc 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTest.java @@ -153,10 +153,7 @@ public class ArtifactFunctionTest extends ArtifactFunctionTestCase { actions.add(action); file(input2.getPath(), "contents"); file(input1.getPath(), "source contents"); - evaluate( - Iterables.toArray( - ArtifactSkyKey.mandatoryKeys(ImmutableSet.of(input2, input1, input2, tree)), - SkyKey.class)); + evaluate(Iterables.toArray(ImmutableSet.of(input2, input1, input2, tree), SkyKey.class)); SkyValue value = evaluateArtifactValue(output); assertThat(((AggregatingArtifactValue) value).getInputs()) .containsExactly( diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java index 49c10c912c..243e7435e6 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java @@ -938,10 +938,9 @@ public final class RecursiveFilesystemTraversalFunctionTest extends FoundationTe @Override public SkyValue compute(SkyKey skyKey, Environment env) throws SkyFunctionException, InterruptedException { - ArtifactSkyKey artifactKey = (ArtifactSkyKey) skyKey.argument(); - Artifact artifact = artifactKey.getArtifact(); try { - return FileArtifactValue.create(artifact.getPath()); + return FileArtifactValue.create( + ArtifactSkyKey.artifact((SkyKey) skyKey.argument()).getPath()); } catch (IOException e) { throw new SkyFunctionException(e, Transience.PERSISTENT){}; } @@ -959,7 +958,7 @@ public final class RecursiveFilesystemTraversalFunctionTest extends FoundationTe @Override public SkyValue compute(SkyKey skyKey, Environment env) throws SkyFunctionException, InterruptedException { - return env.getValue(new NonHermeticArtifactSkyKey((ArtifactSkyKey) skyKey)); + return env.getValue(new NonHermeticArtifactSkyKey(skyKey)); } @Nullable @@ -969,8 +968,8 @@ public final class RecursiveFilesystemTraversalFunctionTest extends FoundationTe } } - private static class NonHermeticArtifactSkyKey extends AbstractSkyKey<ArtifactSkyKey> { - private NonHermeticArtifactSkyKey(ArtifactSkyKey arg) { + private static class NonHermeticArtifactSkyKey extends AbstractSkyKey<SkyKey> { + private NonHermeticArtifactSkyKey(SkyKey arg) { super(arg); } |