summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Thiel <byronimo@gmail.com>2010-07-07 17:42:42 +0200
committerSebastian Thiel <byronimo@gmail.com>2010-07-07 17:42:53 +0200
commit01ab5b96e68657892695c99a93ef909165456689 (patch)
tree647089e9f091411c69ff4ee62747c53606671485
parentbc31651674648f026464fd4110858c4ffeac3c18 (diff)
downloadgitpython-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.py9
-rw-r--r--test/git/test_db.py25
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)