Skip to content

Commit 932208c

Browse files
authored
Add test coverage for permission behaviour in SymbolicLinkPreservingTar (#104398)
1 parent 1f44cc5 commit 932208c

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/SymbolicLinkPreservingTarFuncTest.groovy

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ class SymbolicLinkPreservingTarFuncTest extends AbstractGradleFuncTest {
3636
final Path linkToRealFolder = archiveSourceRoot.resolve("link-to-real-folder");
3737
Files.createSymbolicLink(linkToRealFolder, Paths.get("./real-folder"));
3838

39+
final Path realFolder2 = testProjectDir.getRoot().toPath().resolve("real-folder2")
40+
final Path realFolderSub = realFolder2.resolve("sub")
41+
Files.createDirectory(realFolder2);
42+
Files.createDirectory(realFolderSub);
43+
3944
buildFile << """
4045
import org.elasticsearch.gradle.internal.SymbolicLinkPreservingTar
4146
@@ -56,6 +61,12 @@ tasks.register("buildBZip2Tar", SymbolicLinkPreservingTar) { SymbolicLinkPreserv
5661
tar.compression = Compression.BZIP2
5762
tar.preserveFileTimestamps = ${preserverTimestamp}
5863
from fileTree("archiveRoot")
64+
65+
into('config') {
66+
dirMode 0750
67+
fileMode 0660
68+
from "real-folder2"
69+
}
5970
}
6071
"""
6172
when:
@@ -117,15 +128,22 @@ tasks.register("buildTar", SymbolicLinkPreservingTar) { SymbolicLinkPreservingTa
117128
while (entry != null) {
118129
if (entry.getName().equals("real-folder/")) {
119130
assert entry.isDirectory()
131+
assert entry.getMode() == 16877
120132
realFolderEntry = true
121-
} else if (entry.getName().equals("real-folder/file")) {
133+
} else if (entry.getName().equals("real-folder/file")) {
122134
assert entry.isFile()
123135
fileEntry = true
124136
} else if (entry.getName().equals("real-folder/link-to-file")) {
125137
assert entry.isSymbolicLink()
126138
assert normalized(entry.getLinkName()) == "./file"
127139
linkToFileEntry = true
128-
} else if (entry.getName().equals("link-in-folder/")) {
140+
} else if (entry.getName().equals("config/")) {
141+
assert entry.isDirectory()
142+
assert entry.getMode() == 16877
143+
} else if (entry.getName().equals("config/sub/")) {
144+
assert entry.isDirectory()
145+
assert entry.getMode() == 16872
146+
}else if (entry.getName().equals("link-in-folder/")) {
129147
assert entry.isDirectory()
130148
linkInFolderEntry = true
131149
} else if (entry.getName().equals("link-in-folder/link-to-file")) {

0 commit comments

Comments
 (0)