more directory timestamp tests

This commit is contained in:
Thomas Waldmann 2023-02-11 00:42:30 +01:00
parent a42cd161de
commit fdc48fdd1b
No known key found for this signature in database
GPG Key ID: 243ACFA951F78E01
1 changed files with 45 additions and 9 deletions

View File

@ -59,18 +59,54 @@ class ArchiverTestCase(ArchiverTestCaseBase):
assert st1.st_ino == st2.st_ino
assert st1.st_size == st2.st_size
@pytest.mark.skipif(not is_utime_fully_supported(), reason='cannot properly setup and execute test without utime')
def test_directory_timestamps(self):
@pytest.mark.skipif(not is_utime_fully_supported(), reason="cannot properly setup and execute test without utime")
def test_directory_timestamps1(self):
self.create_test_files()
self.cmd('init', '--encryption=repokey', self.repository_location)
self.cmd('create', self.repository_location + '::test', 'input')
with changedir('output'):
self.cmd('extract', self.repository_location + '::test')
self.cmd(f"--repo={self.repository_location}", "rcreate", RK_ENCRYPTION)
# default file archiving order (internal recursion)
self.cmd(f"--repo={self.repository_location}", "create", "test", "input")
with changedir("output"):
self.cmd(f"--repo={self.repository_location}", "extract", "test")
# extracting a file inside a directory touches the directory mtime
assert os.path.exists('output/input/dir2/file2')
assert os.path.exists("output/input/dir2/file2")
# make sure borg fixes the directory mtime after touching it
sti = os.stat('input/dir2')
sto = os.stat('output/input/dir2')
sti = os.stat("input/dir2")
sto = os.stat("output/input/dir2")
assert sti.st_mtime_ns == sto.st_mtime_ns
@pytest.mark.skipif(not is_utime_fully_supported(), reason="cannot properly setup and execute test without utime")
def test_directory_timestamps2(self):
self.create_test_files()
self.cmd(f"--repo={self.repository_location}", "rcreate", RK_ENCRYPTION)
# given order, dir first, file second
flist_dir_first = b"input/dir2\ninput/dir2/file2\n"
self.cmd(f"--repo={self.repository_location}", "create", "--paths-from-stdin", "test", input=flist_dir_first)
with changedir("output"):
self.cmd(f"--repo={self.repository_location}", "extract", "test")
# extracting a file inside a directory touches the directory mtime
assert os.path.exists("output/input/dir2/file2")
# make sure borg fixes the directory mtime after touching it
sti = os.stat("input/dir2")
sto = os.stat("output/input/dir2")
assert sti.st_mtime_ns == sto.st_mtime_ns
@pytest.mark.skipif(not is_utime_fully_supported(), reason="cannot properly setup and execute test without utime")
def test_directory_timestamps3(self):
self.create_test_files()
self.cmd(f"--repo={self.repository_location}", "rcreate", RK_ENCRYPTION)
# given order, file first, dir second
flist_file_first = b"input/dir2/file2\ninput/dir2\n"
self.cmd(f"--repo={self.repository_location}", "create", "--paths-from-stdin", "test", input=flist_file_first)
with changedir("output"):
self.cmd(f"--repo={self.repository_location}", "extract", "test")
# extracting a file inside a directory touches the directory mtime
assert os.path.exists("output/input/dir2/file2")
# make sure borg fixes the directory mtime after touching it
sti = os.stat("input/dir2")
sto = os.stat("output/input/dir2")
assert sti.st_mtime_ns == sto.st_mtime_ns
@pytest.mark.skipif(not is_utime_fully_supported(), reason="cannot properly setup and execute test without utime")