diff options
author | Sebastian Thiel <byronimo@gmail.com> | 2010-07-07 17:42:42 +0200 |
---|---|---|
committer | Sebastian Thiel <byronimo@gmail.com> | 2010-07-07 17:42:53 +0200 |
commit | 01ab5b96e68657892695c99a93ef909165456689 (patch) | |
tree | 647089e9f091411c69ff4ee62747c53606671485 | |
parent | bc31651674648f026464fd4110858c4ffeac3c18 (diff) | |
download | gitpython-01ab5b96e68657892695c99a93ef909165456689.tar.gz |
Added test for GitCmdObjectDB in order to verify the partial_to_complete_sha_hex is working as expected with different input ( it wasn't, of course ;) )
-rw-r--r-- | lib/git/db.py | 9 | ||||
-rw-r--r-- | test/git/test_db.py | 25 |
2 files changed, 31 insertions, 3 deletions
diff --git a/lib/git/db.py b/lib/git/db.py index 945031bb..6339569f 100644 --- a/lib/git/db.py +++ b/lib/git/db.py @@ -1,5 +1,8 @@ """Module with our own gitdb implementation - it uses the git command""" -from exc import GitCommandError +from exc import ( + GitCommandError, + BadObject + ) from gitdb.base import ( OInfo, @@ -42,7 +45,7 @@ class GitCmdObjectDB(LooseObjectDB): # { Interface - def partial_to_complete_sha_hex(partial_hexsha): + def partial_to_complete_sha_hex(self, partial_hexsha): """:return: Full binary 20 byte sha from the given partial hexsha :raise AmbiguousObjectName: :raise BadObject: @@ -51,7 +54,7 @@ class GitCmdObjectDB(LooseObjectDB): try: hexsha, typename, size = self._git.get_object_header(partial_hexsha) return hex_to_bin(hexsha) - except GitCommandError: + except (GitCommandError, ValueError): raise BadObject(partial_hexsha) # END handle exceptions diff --git a/test/git/test_db.py b/test/git/test_db.py new file mode 100644 index 00000000..9da13bd8 --- /dev/null +++ b/test/git/test_db.py @@ -0,0 +1,25 @@ +# test_repo.py +# Copyright (C) 2008, 2009 Michael Trier (mtrier@gmail.com) and contributors +# +# This module is part of GitPython and is released under +# the BSD License: http://www.opensource.org/licenses/bsd-license.php +from test.testlib import * +from git.db import * +from gitdb.util import bin_to_hex +from git.exc import BadObject +import os + +class TestDB(TestBase): + + def test_base(self): + gdb = GitCmdObjectDB(os.path.join(self.rorepo.git_dir, 'objects'), self.rorepo.git) + + # partial to complete - works with everything + hexsha = bin_to_hex(gdb.partial_to_complete_sha_hex("0.1.6")) + assert len(hexsha) == 40 + + assert bin_to_hex(gdb.partial_to_complete_sha_hex(hexsha[:20])) == hexsha + + # fails with BadObject + for invalid_rev in ("0000", "bad/ref", "super bad"): + self.failUnlessRaises(BadObject, gdb.partial_to_complete_sha_hex, invalid_rev) |