| 
					
				 | 
			
			
				@@ -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 
			 |