Support short (raw) oids
This commit is contained in:
parent
ad4b4cc4c5
commit
98013eb44d
@ -42,11 +42,11 @@ py_str_to_git_oid(PyObject *py_str, git_oid *oid)
|
|||||||
|
|
||||||
/* Case 1: raw sha */
|
/* Case 1: raw sha */
|
||||||
if (PyString_Check(py_str)) {
|
if (PyString_Check(py_str)) {
|
||||||
hex_or_bin = PyString_AsString(py_str);
|
err = PyString_AsStringAndSize(py_str, &hex_or_bin, &len);
|
||||||
if (hex_or_bin == NULL)
|
if (err)
|
||||||
return -1;
|
return -1;
|
||||||
git_oid_fromraw(oid, (const unsigned char*)hex_or_bin);
|
memcpy(oid->id, (const unsigned char*)hex_or_bin, len);
|
||||||
return GIT_OID_HEXSZ;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Case 2: hex sha */
|
/* Case 2: hex sha */
|
||||||
|
@ -91,16 +91,14 @@ class RepositoryTest(utils.BareRepoTestCase):
|
|||||||
def test_contains(self):
|
def test_contains(self):
|
||||||
self.assertRaises(TypeError, lambda: 123 in self.repo)
|
self.assertRaises(TypeError, lambda: 123 in self.repo)
|
||||||
self.assertTrue(A_BIN_SHA 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 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' * 40 in self.repo)
|
||||||
self.assertFalse('a' * 20 in self.repo)
|
self.assertFalse('a' * 20 in self.repo)
|
||||||
|
|
||||||
def test_iterable(self):
|
def test_iterable(self):
|
||||||
l = []
|
l = [ obj for obj in self.repo ]
|
||||||
for obj in self.repo:
|
|
||||||
l.append(obj)
|
|
||||||
|
|
||||||
self.assertTrue(A_HEX_SHA in l)
|
self.assertTrue(A_HEX_SHA in l)
|
||||||
|
|
||||||
def test_lookup_blob(self):
|
def test_lookup_blob(self):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user