def test_reading_and_writing_repository(): repository_state_dir = temp_dir() @stubclass(SshRepository) class RepositoryStub: @property def unique_id(self): return 'myid' repository_state_directory = repository_state_dir.name repository = RepositoryStub() expected_repository_state_file = os.path.join( repository_state_dir.name, '%s.uploaded' % repository.unique_id) local_state = RepositoryLocalState(repository) # Case: on first read, does not break if file does not exist assert not os.path.exists(expected_repository_state_file) local_state.read() assert local_state.uploaded_project_ids == set([]) # Case: on write, creates file assert not os.path.exists(expected_repository_state_file) local_state.uploaded_project_ids = {'someid1', 'someid2'} local_state.write() assert os.path.isfile(expected_repository_state_file) # Case: read existing stuff correctly local_state.uploaded_project_ids = set([]) local_state.read() assert local_state.uploaded_project_ids == {'someid1', 'someid2'}
def test_queries(): @stubclass(DebianPackage) class PackageStub(object): def __init__(self, name): self.name = name @property def unique_id(self): return self.name package1 = PackageStub('myname') package2 = PackageStub('yourname') @stubclass(SshRepository) class RepositoryStub(object): pass repository = RepositoryStub() local_state = RepositoryLocalState(repository) local_state.set_uploaded(package1) assert local_state.is_uploaded(package1) assert not local_state.is_uploaded(package2)