Spaces:
Paused
Paused
| # Copyright (C) 2010, 2011 Sebastian Thiel ([email protected]) and contributors | |
| # | |
| # This module is part of GitDB and is released under | |
| # the New BSD License: https://opensource.org/license/bsd-3-clause/ | |
| """Module with examples from the tutorial section of the docs""" | |
| import os | |
| from gitdb.test.lib import TestBase | |
| from gitdb import IStream | |
| from gitdb.db import LooseObjectDB | |
| from io import BytesIO | |
| class TestExamples(TestBase): | |
| def test_base(self): | |
| ldb = LooseObjectDB(os.path.join(self.gitrepopath, '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 = b"my data" | |
| istream = IStream("blob", len(data), BytesIO(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) | |