From d346546a6e4f59f574c77b46836c1ff6163f4d81 Mon Sep 17 00:00:00 2001 From: thesayyn Date: Mon, 19 Feb 2024 21:45:09 -0800 Subject: [PATCH] fix tests --- .../lib/skyframe/TreeArtifactBuildTest.java | 5 +++- .../lib/skyframe/TreeArtifactValueTest.java | 30 ++++++++++++++----- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactBuildTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactBuildTest.java index 8728c785b93bb2..092c2077dab26a 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactBuildTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactBuildTest.java @@ -587,6 +587,9 @@ void run(ActionExecutionContext actionExecutionContext) throws IOException { public void relativeSymlinkTraversingOutsideOfTreeArtifact() throws Exception { SpecialArtifact out = createTreeArtifact("output"); + scratch.file(out.getRoot().getRoot().getRelative("some/file").getPathString()); + + Action action = new SimpleTestAction(out) { @Override @@ -594,7 +597,7 @@ void run(ActionExecutionContext actionExecutionContext) throws IOException { writeFile(out.getPath().getChild("one"), "one"); writeFile(out.getPath().getChild("two"), "two"); FileSystemUtils.ensureSymbolicLink( - out.getPath().getChild("links").getChild("link"), "../../output/random/pointer"); + out.getPath().getChild("links").getChild("link"), "../../some/file"); } }; diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactValueTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactValueTest.java index 9d1dbe62ac9c44..9b1c0f5260b2ab 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactValueTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactValueTest.java @@ -570,10 +570,12 @@ public void visitTree_permitsUpLevelSymlinkInsideTree() throws Exception { @Test public void visitTree_permitsUpLevelSymlinkOutsideTree() throws Exception { + Path otherTreeDir = scratch.dir("other_tree"); + scratch.file("other_tree/file"); Path treeDir = scratch.dir("tree"); scratch.file("tree/file"); scratch.dir("tree/a"); - scratch.resolve("tree/a/uplink").createSymbolicLink(PathFragment.create("../../non_existent")); + scratch.resolve("tree/a/uplink").createSymbolicLink(PathFragment.create("../../other_tree/file")); List children = new ArrayList<>(); TreeArtifactValue.visitTree( @@ -586,9 +588,10 @@ public void visitTree_permitsUpLevelSymlinkOutsideTree() throws Exception { assertThat(children) .containsExactly( + VisitTreeArgs.of(PathFragment.create(""), Dirent.Type.DIRECTORY, false), VisitTreeArgs.of(PathFragment.create("file"), Dirent.Type.FILE, false), VisitTreeArgs.of(PathFragment.create("a"), Dirent.Type.DIRECTORY, false), - VisitTreeArgs.of(PathFragment.create("a/uplink"), Dirent.Type.SYMLINK, true)); + VisitTreeArgs.of(PathFragment.create("a/uplink"), Dirent.Type.FILE, true)); } @Test @@ -617,16 +620,27 @@ public void visitTree_permitsAbsoluteSymlink() throws Exception { } @Test - public void visitTree_throwsOnSymlinkTraversingOutsideThenBackInsideTree() throws Exception { + public void visitTree_permitsSymlinkTraversingOutsideThenBackInsideTree() throws Exception { Path treeDir = scratch.dir("tree"); scratch.file("tree/file"); scratch.resolve("tree/link").createSymbolicLink(PathFragment.create("../tree/file")); - Exception e = - assertThrows( - IOException.class, - () -> TreeArtifactValue.visitTree(treeDir, (child, type, traversedSymlink) -> {})); - assertThat(e).hasMessageThat().contains("/tree/link pointing to ../tree/file"); + List children = new ArrayList<>(); + + TreeArtifactValue.visitTree( + treeDir, + (child, type, traversedSymlink) -> { + synchronized (children) { + children.add(VisitTreeArgs.of(child, type, traversedSymlink)); + } + }); + + assertThat(children) + .containsExactly( + VisitTreeArgs.of(PathFragment.create(""), Dirent.Type.DIRECTORY, false), + VisitTreeArgs.of(PathFragment.create("file"), Dirent.Type.FILE, false), + VisitTreeArgs.of( + PathFragment.create("link"), Dirent.Type.FILE, true)); } @Test