diff options
-rw-r--r-- | gbp/git/repository.py | 14 | ||||
-rw-r--r-- | tests/test_GitRepository.py | 21 |
2 files changed, 35 insertions, 0 deletions
diff --git a/gbp/git/repository.py b/gbp/git/repository.py index 2fcc12cc..024a3775 100644 --- a/gbp/git/repository.py +++ b/gbp/git/repository.py @@ -618,6 +618,20 @@ class GitRepository(object): if ret: raise GitRepositoryError("Can't write out current index") return tree[0].strip() + + def get_obj_type(self, obj): + """ + Get type of a git repository object + + @param obj: repository object + @type obj: C{str} + @return: type of the repository object + @rtype: C{str} + """ + out, ret = self.__git_getoutput('cat-file', args=['-t', obj]) + if ret: + raise GitRepositoryError("Not a Git repository object: '%s'" % obj) + return out[0].strip() #} def get_config(self, name): diff --git a/tests/test_GitRepository.py b/tests/test_GitRepository.py index ada3a016..4367f936 100644 --- a/tests/test_GitRepository.py +++ b/tests/test_GitRepository.py @@ -254,6 +254,27 @@ def test_delete_tag(): False """ +def test_get_obj_type(): + """ + Find commit SHA1 related to tags + + Methods tested: + - L{gbp.git.GitRepository.create_tag} + - L{gbp.git.GitRepository.get_obj_type} + - L{gbp.git.GitRepository.delete_tag} + + >>> import gbp.git + >>> repo = gbp.git.GitRepository(repo_dir) + >>> repo.create_tag("tag3", "tag msg") + >>> repo.get_obj_type("tag3") + 'tag' + >>> repo.get_obj_type("HEAD") + 'commit' + >>> repo.get_obj_type("HEAD:testfile") + 'blob' + >>> repo.delete_tag("tag3") + """ + def test_list_files(): """ List files in the index |