浏览代码

add a test for unreadable parent dir, see #7746

Thomas Waldmann 1 年之前
父节点
当前提交
3e640a38c0
共有 1 个文件被更改,包括 11 次插入0 次删除
  1. 11 0
      src/borg/testsuite/archiver/create_cmd.py

+ 11 - 0
src/borg/testsuite/archiver/create_cmd.py

@@ -167,6 +167,17 @@ def test_create_duplicate_root(archivers, request):
     assert sorted(paths) == ["input", "input/a", "input/a/hardlink", "input/b", "input/b/hardlink"]
     assert sorted(paths) == ["input", "input/a", "input/a/hardlink", "input/b", "input/b/hardlink"]
 
 
 
 
+def test_create_unreadable_parent(archiver):
+    parent_dir = os.path.join(archiver.input_path, "parent")
+    root_dir = os.path.join(archiver.input_path, "parent", "root")
+    os.mkdir(parent_dir)
+    os.mkdir(root_dir)
+    os.chmod(parent_dir, 0o111)  # --x--x--x == parent dir traversable, but not readable
+    cmd(archiver, "rcreate", "--encryption=none")
+    # issue #7746: we *can* read root_dir and we *can* traverse parent_dir, so this should work:
+    cmd(archiver, "create", "test", root_dir)
+
+
 @pytest.mark.skipif(is_win32, reason="unix sockets not available on windows")
 @pytest.mark.skipif(is_win32, reason="unix sockets not available on windows")
 def test_unix_socket(archivers, request, monkeypatch):
 def test_unix_socket(archivers, request, monkeypatch):
     archiver = request.getfixturevalue(archivers)
     archiver = request.getfixturevalue(archivers)