def test_base(self): ldb = PureLooseObjectODB(fixture_path("../../../.git/objects")) for sha1 in ldb.sha_iter(): oinfo = ldb.info(sha1) ostream = ldb.stream(sha1) assert oinfo[:3] == ostream[:3] assert len(ostream.read()) == ostream.size assert ldb.has_object(oinfo.binsha) # END for each sha in database # assure we close all files try: del(ostream) del(oinfo) except UnboundLocalError: pass # END ignore exception if there are no loose objects data = "my data" istream = IStream("blob", len(data), StringIO(data)) # the object does not yet have a sha assert istream.binsha is None ldb.store(istream) # now the sha is set assert len(istream.binsha) == 20 assert ldb.has_object(istream.binsha) # async operation # Create a reader from an iterator reader = IteratorReader(ldb.sha_iter()) # get reader for object streams info_reader = ldb.stream_async(reader) # read one info = info_reader.read(1)[0] # read all the rest until depletion ostreams = info_reader.read() # set the pool to use two threads pool.set_size(2) # synchronize the mode of operation pool.set_size(0)
def test_writing(self, path): mdb = PureMemoryDB() # write data self._assert_object_writing_simple(mdb) # test stream copy ldb = PureLooseObjectODB(path) assert ldb.size() == 0 num_streams_copied = mdb.stream_copy(mdb.sha_iter(), ldb) assert num_streams_copied == mdb.size() assert ldb.size() == mdb.size() for sha in mdb.sha_iter(): assert ldb.has_object(sha) assert ldb.stream(sha).read() == mdb.stream(sha).read()