From 40163c2e9f6b4faec5d1939436176a0cbf4838f3 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Thu, 4 Aug 2016 01:32:01 +0200 Subject: [PATCH] fix fuse tests on OS X, fixes #1433 NOATIME support needed checking and the flagfile was UF_NODUMP and thus not there in the backup archive. Note: i have just duplicated the has_noatime function instead of refactoring it to be global, to avoid merge conflicts in case we cherry-pick the test improvements from master. --- borg/testsuite/archiver.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/borg/testsuite/archiver.py b/borg/testsuite/archiver.py index e523e7233..7e8381f1f 100644 --- a/borg/testsuite/archiver.py +++ b/borg/testsuite/archiver.py @@ -998,10 +998,25 @@ class ArchiverTestCase(ArchiverTestCaseBase): @unittest.skipUnless(has_llfuse, 'llfuse not installed') def test_fuse(self): + def has_noatime(some_file): + atime_before = os.stat(some_file).st_atime_ns + try: + os.close(os.open(some_file, flags_noatime)) + except PermissionError: + return False + else: + atime_after = os.stat(some_file).st_atime_ns + noatime_used = flags_noatime != flags_normal + return noatime_used and atime_before == atime_after + self.cmd('init', self.repository_location) self.create_test_files() + have_noatime = has_noatime('input/file1') self.cmd('create', self.repository_location + '::archive', 'input') self.cmd('create', self.repository_location + '::archive2', 'input') + if has_lchflags: + # remove the file we did not backup, so input and mount become equal + os.remove(os.path.join('input', 'flagfile')) mountpoint = os.path.join(self.tmpdir, 'mountpoint') # mount the whole repository, archive contents shall show up in archivename subdirs of mountpoint: with self.fuse_mount(self.repository_location, mountpoint): @@ -1020,7 +1035,8 @@ class ArchiverTestCase(ArchiverTestCaseBase): assert sti1.st_uid == sto1.st_uid assert sti1.st_gid == sto1.st_gid assert sti1.st_size == sto1.st_size - assert sti1.st_atime == sto1.st_atime + if have_noatime: + assert sti1.st_atime == sto1.st_atime assert sti1.st_ctime == sto1.st_ctime assert sti1.st_mtime == sto1.st_mtime # note: there is another hardlink to this, see below