From 98013eb44dc575851d30ff680b16e2b442f6d69f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=2E=20David=20Ib=C3=A1=C3=B1ez?= <jdavid.ibp@gmail.com> Date: Sun, 10 Mar 2013 12:26:32 +0100 Subject: [PATCH] Support short (raw) oids --- src/oid.c | 8 ++++---- test/test_repository.py | 8 +++----- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/oid.c b/src/oid.c index 102424a..36bacf4 100644 --- a/src/oid.c +++ b/src/oid.c @@ -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 */ diff --git a/test/test_repository.py b/test/test_repository.py index c3457c4..c26712a 100644 --- a/test/test_repository.py +++ b/test/test_repository.py @@ -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):