def test_read_write_same_file(tmpdir): repo = FileSystemRepository(str(tmpdir)) repo.write(['key'], itertools.repeat(b'first revision\n', 1024)) first_iterator = iter(repo.read(['key'])) second_iterator = iter(repo.read(['key'])) assert first_iterator is not second_iterator first_stop = False second_stop = False first_list = [] second_list = [] while not (first_stop or second_stop): if not first_stop: try: first_chunk = next(first_iterator) except StopIteration: first_stop = True else: if not first_list: repo.write(['key'], [b'second ', b'revision']) third_iterator = repo.read(['key']) first_list.append(first_chunk) if not second_stop: try: second_chunk = next(second_iterator) except StopIteration: second_stop = True else: second_list.append(second_chunk) assert (b''.join(first_list) == b''.join(second_list) == b''.join( itertools.repeat(b'first revision\n', 1024))) assert b''.join(third_iterator) == b'second revision'
def test_read_write_same_file(tmpdir): repo = FileSystemRepository(str(tmpdir)) repo.write(['key'], itertools.repeat(b'first revision\n', 1024)) first_iterator = iter(repo.read(['key'])) second_iterator = iter(repo.read(['key'])) assert first_iterator is not second_iterator first_stop = False second_stop = False first_list = [] second_list = [] while not (first_stop or second_stop): if not first_stop: try: first_chunk = next(first_iterator) except StopIteration: first_stop = True else: if not first_list: repo.write(['key'], [b'second ', b'revision']) third_iterator = repo.read(['key']) first_list.append(first_chunk) if not second_stop: try: second_chunk = next(second_iterator) except StopIteration: second_stop = True else: second_list.append(second_chunk) assert (b''.join(first_list) == b''.join(second_list) == b''.join(itertools.repeat(b'first revision\n', 1024))) assert b''.join(third_iterator) == b'second revision'
def test_atomicity(tmpdir): repo = FileSystemRepository(str(tmpdir), atomic=True) repo.write(['key'], [b'first ', b'revision']) def gen(): assert b''.join(repo.read(['key'])) == b'first revision' yield b'second ' assert b''.join(repo.read(['key'])) == b'first revision' yield b'revision' assert b''.join(repo.read(['key'])) == b'first revision' repo.write(['key'], gen()) assert b''.join(repo.read(['key'])) == b'second revision'
def test_atomicity(tmpdir): repo = FileSystemRepository(str(tmpdir), atomic=True) repo.write(['key'], [b'first ', b'revision']) def gen(): assert b''.join(repo.read(['key'])) == b'first revision' yield b'second ' assert b''.join(repo.read(['key'])) == b'first revision' yield b'revision' assert b''.join(repo.read(['key'])) == b'first revision' repo.write(['key'], gen()) assert b''.join(repo.read(['key'])) == b'second revision'
def test_file_read(tmpdir): f = FileSystemRepository(str(tmpdir)) with raises(RepositoryKeyError): f.read(['key']) tmpdir.join('key').write('file content') assert b''.join(f.read(['key'])) == b'file content' with raises(RepositoryKeyError): f.read(['dir', 'dir2', 'key']) tmpdir.mkdir('dir').mkdir('dir2').join('key').write('file content') assert b''.join(f.read(['dir', 'dir2', 'key'])) == b'file content'
def test_file_read(tmpdir): f = FileSystemRepository(str(tmpdir)) with raises(RepositoryKeyError): f.read(['key']) tmpdir.join('key').write('file content') assert b''.join(f.read(['key'])) == b'file content' with raises(RepositoryKeyError): f.read(['dir', 'dir2', 'key']) tmpdir.mkdir('dir').mkdir('dir2').join('key').write('file content') assert b''.join(f.read(['dir', 'dir2', 'key'])) == b'file content'