diff options
Diffstat (limited to 'libs/test-utils')
| -rw-r--r-- | libs/test-utils/src/main/java/org/the_jk/cleversync/io/BaseSingleMergeTest.kt | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/libs/test-utils/src/main/java/org/the_jk/cleversync/io/BaseSingleMergeTest.kt b/libs/test-utils/src/main/java/org/the_jk/cleversync/io/BaseSingleMergeTest.kt index 156f978..2b53a06 100644 --- a/libs/test-utils/src/main/java/org/the_jk/cleversync/io/BaseSingleMergeTest.kt +++ b/libs/test-utils/src/main/java/org/the_jk/cleversync/io/BaseSingleMergeTest.kt @@ -156,7 +156,6 @@ abstract class BaseSingleMergeTest { src.createLink("link1", srcFoo) src.createLink("link2", "does-not-exist") - src.createLink("link3", "../../escaped") val actions = SingleMerge.calculate(tgt, src) assertThat(actions).containsExactly( @@ -183,6 +182,38 @@ abstract class BaseSingleMergeTest { } @Test + fun symlinkOutsideRoot() { + Assume.assumeTrue(sourceSupportsSymlinks()) + + val link = src.createLink("bad_link", "../../escaped") + + // Some sources doesn't allow to create symlinks that point outside filesystem + when (val target = link.resolve()) { + is Link.NoTarget -> Assume.assumeTrue(target.path == "../../escaped") + is Link.FileTarget, + is Link.DirectoryTarget, + -> Assert.fail("Should not target anything") + } + + + val actions = SingleMerge.calculate(tgt, src) + assertThat(actions).isEmpty() + } + + @Test + fun symlinkOutsideDir() { + Assume.assumeTrue(sourceSupportsSymlinks()) + + val dir = src.createDirectory("foo") + val escaped = src.createDirectory("escaped") + dir.createLink("bad_link", escaped) + src.removeDirectory("escaped") + + val actions = SingleMerge.calculate(tgt, dir) + assertThat(actions).isEmpty() + } + + @Test fun resolveSymlink() { Assume.assumeTrue(sourceSupportsSymlinks()) |
