| 
														
															@@ -8,8 +8,9 @@ from ..hashindex import NSIndex 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 from ..helpers import Location, IntegrityError 
														 | 
														
														 | 
														
															 from ..helpers import Location, IntegrityError 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 from ..locking import Lock, LockFailed 
														 | 
														
														 | 
														
															 from ..locking import Lock, LockFailed 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 from ..remote import RemoteRepository, InvalidRPCMethod 
														 | 
														
														 | 
														
															 from ..remote import RemoteRepository, InvalidRPCMethod 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-from ..repository import Repository, LoggedIO, TAG_COMMIT, MAX_DATA_SIZE 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+from ..repository import Repository, LoggedIO, TAG_DELETE, MAX_DATA_SIZE 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 from . import BaseTestCase 
														 | 
														
														 | 
														
															 from . import BaseTestCase 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+from .hashindex import H 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 UNSPECIFIED = object()  # for default values where we can't use None 
														 | 
														
														 | 
														
															 UNSPECIFIED = object()  # for default values where we can't use None 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -227,6 +228,28 @@ class RepositoryCommitTestCase(RepositoryTestCaseBase): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             io = self.repository.io 
														 | 
														
														 | 
														
															             io = self.repository.io 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             assert not io.is_committed_segment(io.get_latest_segment()) 
														 | 
														
														 | 
														
															             assert not io.is_committed_segment(io.get_latest_segment()) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    def test_moved_deletes_are_tracked(self): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        self.repository.put(H(1), b'1') 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        self.repository.put(H(2), b'2') 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        self.repository.commit() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        self.repository.delete(H(1)) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        self.repository.commit() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        last_segment = self.repository.io.get_latest_segment() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        num_deletes = 0 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        for tag, key, offset, data in self.repository.io.iter_objects(last_segment, include_data=True): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            if tag == TAG_DELETE: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                assert key == H(1) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                num_deletes += 1 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        assert num_deletes == 1 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        assert last_segment in self.repository.compact 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        self.repository.put(H(3), b'3') 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        self.repository.commit() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        assert last_segment not in self.repository.compact 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        assert not self.repository.io.segment_exists(last_segment) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        last_segment = self.repository.io.get_latest_segment() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        for tag, key, offset in self.repository.io.iter_objects(last_segment): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            assert tag != TAG_DELETE 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 class RepositoryAppendOnlyTestCase(RepositoryTestCaseBase): 
														 | 
														
														 | 
														
															 class RepositoryAppendOnlyTestCase(RepositoryTestCaseBase): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     def open(self, create=False): 
														 | 
														
														 | 
														
															     def open(self, create=False): 
														 |