Support short (raw) oids

This commit is contained in:
J. David Ibáñez 2013-03-10 12:26:32 +01:00
parent ad4b4cc4c5
commit 98013eb44d
2 changed files with 7 additions and 9 deletions

@ -42,11 +42,11 @@ py_str_to_git_oid(PyObject *py_str, git_oid *oid)
/* Case 1: raw sha */
if (PyString_Check(py_str)) {
hex_or_bin = PyString_AsString(py_str);
if (hex_or_bin == NULL)
err = PyString_AsStringAndSize(py_str, &hex_or_bin, &len);
if (err)
return -1;
git_oid_fromraw(oid, (const unsigned char*)hex_or_bin);
return GIT_OID_HEXSZ;
memcpy(oid->id, (const unsigned char*)hex_or_bin, len);
return len;
}
/* Case 2: hex sha */

@ -91,16 +91,14 @@ class RepositoryTest(utils.BareRepoTestCase):
def test_contains(self):
self.assertRaises(TypeError, lambda: 123 in self.repo)
self.assertTrue(A_BIN_SHA in self.repo)
self.assertTrue(A_BIN_SHA[:10] in self.repo)
self.assertTrue(A_HEX_SHA in self.repo)
self.assertTrue(A_HEX_SHA[0:10] in self.repo)
self.assertTrue(A_HEX_SHA[:10] in self.repo)
self.assertFalse('a' * 40 in self.repo)
self.assertFalse('a' * 20 in self.repo)
def test_iterable(self):
l = []
for obj in self.repo:
l.append(obj)
l = [ obj for obj in self.repo ]
self.assertTrue(A_HEX_SHA in l)
def test_lookup_blob(self):