cleanup create_cmd

This commit is contained in:
bigtedde 2023-07-13 15:42:50 -04:00
parent b2d8210e5d
commit 73c178d628
1 changed files with 16 additions and 6 deletions

View File

@ -56,20 +56,25 @@ def test_basic_functionality(archivers, request):
pytest.skip("test_basic_functionality seems incompatible with fakeroot and/or the binary.")
repo_location, input_path = archiver.repository_location, archiver.input_path
have_root = create_test_files(input_path)
# fork required to test show-rc output
output = cmd(
archiver, f"--repo={repo_location}", "rcreate", RK_ENCRYPTION, "--show-version", "--show-rc", fork=True
)
assert "borgbackup version" in output
assert "terminating with success status, rc 0" in output
cmd(archiver, f"--repo={repo_location}", "create", "--exclude-nodump", "test", "input")
output = cmd(archiver, f"--repo={repo_location}", "create", "--exclude-nodump", "--stats", "test.2", "input")
assert "Archive name: test.2" in output
with changedir("output"):
cmd(archiver, f"--repo={repo_location}", "extract", "test")
list_output = cmd(archiver, f"--repo={repo_location}", "rlist", "--short")
assert "test" in list_output
assert "test.2" in list_output
expected = [
"input",
"input/bdev",
@ -94,10 +99,12 @@ def test_basic_functionality(archivers, request):
# remove the file we did not back up, so input and output become equal
expected.remove("input/flagfile") # this file is UF_NODUMP
os.remove(os.path.join("input", "flagfile"))
list_output = cmd(archiver, f"--repo={repo_location}", "list", "test", "--short")
for name in expected:
assert name in list_output
assert_dirs_equal("input", "output/input")
info_output = cmd(archiver, f"--repo={repo_location}", "info", "-a", "test")
item_count = 5 if has_lchflags else 6 # one file is UF_NODUMP
assert "Number of files: %d" % item_count in info_output
@ -121,6 +128,7 @@ def test_basic_functionality(archivers, request):
def test_archived_paths(archivers, request):
archiver = request.getfixturevalue(archivers)
repo_location = archiver.repository_location
# As borg comes from the POSIX (Linux, UNIX) world, a lot of stuff assumes path separators
# to be slashes "/", e.g.: in archived items, for pattern matching.
# To make our lives easier and to support cross-platform extraction we always use slashes.
@ -138,9 +146,11 @@ def test_archived_paths(archivers, request):
# "input" directory is recursed into, "input/test" is discovered and joined by borg's recursion.
# posix_path was directly given as a cli argument and should end up as archive_path in the borg archive.
expected_paths = sorted(["input", "input/test", archived_path])
# check path in archived items:
archive_list = cmd(archiver, f"--repo={repo_location}", "list", "test", "--short")
assert expected_paths == sorted([path for path in archive_list.splitlines() if path])
# check path in archived items (json):
archive_list = cmd(archiver, f"--repo={repo_location}", "list", "test", "--json-lines")
assert expected_paths == sorted([json.loads(line)["path"] for line in archive_list.splitlines() if line])
@ -175,7 +185,7 @@ def test_unix_socket(archivers, request, monkeypatch):
cmd(archiver, f"--repo={repo_location}", "rcreate", RK_ENCRYPTION)
try:
with tempfile.TemporaryDirectory(prefix="input") as temp_dir:
with tempfile.TemporaryDirectory() as temp_dir:
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sock.bind(os.path.join(temp_dir, "unix-socket"))
except PermissionError as err:
@ -187,13 +197,12 @@ def test_unix_socket(archivers, request, monkeypatch):
sock.close()
with changedir("output"):
cmd(archiver, f"--repo={repo_location}", "extract", "test")
assert not os.path.exists("input/unix-socket")
print(f"{temp_dir}/unix-socket")
assert not os.path.exists(f"{temp_dir}/unix-socket")
@pytest.mark.skipif(not is_utime_fully_supported(), reason="cannot properly setup and execute test without utime")
@pytest.mark.skipif(
not is_birthtime_fully_supported(), reason="cannot properly setup and execute test without birth time"
)
@pytest.mark.skipif(not is_utime_fully_supported(), reason="cannot setup and execute test without utime")
@pytest.mark.skipif(not is_birthtime_fully_supported(), reason="cannot setup and execute test without birth time")
def test_nobirthtime(archivers, request):
archiver = request.getfixturevalue(archivers)
repo_location, input_path = archiver.repository_location, archiver.input_path
@ -201,6 +210,7 @@ def test_nobirthtime(archivers, request):
birthtime, mtime, atime = 946598400, 946684800, 946771200
os.utime("input/file1", (atime, birthtime))
os.utime("input/file1", (atime, mtime))
cmd(archiver, f"--repo={repo_location}", "rcreate", RK_ENCRYPTION)
cmd(archiver, f"--repo={repo_location}", "create", "test", "input", "--nobirthtime")
with changedir("output"):