我进行了一项测试,以确保应用程序在无法访问文件时提供正确的错误。为此,测试更改文件权限,运行应用程序并检查错误。
类似:
public void permissions() {
String file = prepareFiles(); // let's say this creates a file /tmp/myfiles/filetocheck
Path path = Paths.get(file).getParent();
Files.setPosixFilePermissions(path, PosixFilePermissions.fromString("---------"));
MyApp.main();
thenLogContains("no access to " + file + ": java.nio.file.AccessDeniedException")
}
它在本地工作,但是当它在BitBucket管道中运行时,由于权限尚未更改而失败。有人遇到过同样的问题吗?有什么解决办法吗?
对于像我这样的初学者:问题很简单,docker容器以root身份运行,因此即使更改权限,该文件仍然可以从maven读取。
这篇文章指出了如何通过创建新用户并以该用户身份运行maven来解决问题。