aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com
diff options
context:
space:
mode:
authorGravatar Janak Ramakrishnan <janakr@google.com>2017-02-22 19:51:28 +0000
committerGravatar Yue Gan <yueg@google.com>2017-02-23 11:29:36 +0000
commit6b4a8b34fed686fe178a02f4cf27807c2f11bab5 (patch)
tree3b2d7f8fb257156605f6564fe6f8dd6afb38b62a /src/test/java/com
parent569383c41ac15ef9c185a8e9986e42855c78bbed (diff)
Allow absolute symlinks in TreeArtifacts. Let the downstream action (if there is one) worry about it.
-- PiperOrigin-RevId: 148249223 MOS_MIGRATED_REVID=148249223
Diffstat (limited to 'src/test/java/com')
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactBuildTest.java31
1 files changed, 28 insertions, 3 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 307e4a68d9..099b307116 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
@@ -564,7 +564,7 @@ public class TreeArtifactBuildTest extends TimestampBuilderTestCase {
}
@Test
- public void testAbsoluteSymlinkRejected() throws Exception {
+ public void testAbsoluteSymlinkBadTargetRejected() throws Exception {
// Failure expected
StoredEventHandler storingEventHandler = new StoredEventHandler();
reporter.removeHandler(failFastHandler);
@@ -596,13 +596,38 @@ public class TreeArtifactBuildTest extends TimestampBuilderTestCase {
List<Event> errors = ImmutableList.copyOf(
Iterables.filter(storingEventHandler.getEvents(), IS_ERROR_EVENT));
assertThat(errors).hasSize(2);
- assertThat(errors.get(0).getMessage()).contains(
- "A TreeArtifact may not contain absolute symlinks");
+ assertThat(errors.get(0).getMessage()).contains("Failed to resolve relative path links/link");
assertThat(errors.get(1).getMessage()).contains("not all outputs were created or valid");
}
}
@Test
+ public void testAbsoluteSymlinkAccepted() throws Exception {
+ scratch.overwriteFile("/random/pointer");
+
+ final Artifact out = createTreeArtifact("output");
+
+ TreeArtifactTestAction action =
+ new TreeArtifactTestAction(out) {
+ @Override
+ public void execute(ActionExecutionContext actionExecutionContext) {
+ try {
+ writeFile(out.getPath().getChild("one"), "one");
+ writeFile(out.getPath().getChild("two"), "two");
+ FileSystemUtils.ensureSymbolicLink(
+ out.getPath().getChild("links").getChild("link"), "/random/pointer");
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ };
+
+ registerAction(action);
+
+ buildArtifact(action.getSoleOutput());
+ }
+
+ @Test
public void testRelativeSymlinkTraversingOutsideOfTreeArtifactRejected() throws Exception {
// Failure expected
StoredEventHandler storingEventHandler = new StoredEventHandler();