use latest development of libgit2 - changed GitError to ValueError

For already existing references a ValueError is raised (see sry/pygit2/error.c:41)
This commit is contained in:
Nico von Geyso 2012-10-12 11:51:04 +02:00
parent 682fb1fd13
commit e1acdb48bc
2 changed files with 16 additions and 10 deletions

@ -661,7 +661,7 @@ Repository_create_reference(Repository *self, PyObject *args, PyObject* keywds)
git_reference *c_reference;
char *c_name, *c_target;
git_oid oid;
int err, symbolic = 0, force = 0;
int err = 0, symbolic = 0, force = 0;
static char *kwlist[] = {"name", "source", "force", "symbolic", NULL};
@ -669,7 +669,14 @@ Repository_create_reference(Repository *self, PyObject *args, PyObject* keywds)
&c_name, &py_obj, &force, &symbolic))
return NULL;
if(symbolic) {
if(!symbolic) {
err = py_str_to_git_oid_expand(self->repo, py_obj, &oid);
if (err < 0) {
return Error_set(err);
}
err = git_reference_create_oid(&c_reference, self->repo, c_name, &oid, force);
} else {
#if PY_MAJOR_VERSION == 2
c_target = PyString_AsString(py_obj);
#else
@ -680,12 +687,6 @@ Repository_create_reference(Repository *self, PyObject *args, PyObject* keywds)
err = git_reference_create_symbolic(&c_reference, self->repo, c_name,
c_target, force);
} else {
err = py_str_to_git_oid_expand(self->repo, py_obj, &oid);
if (err < 0)
return Error_set(err);
err = git_reference_create_oid(&c_reference, self->repo, c_name, &oid, force);
}
if (err < 0)

@ -175,9 +175,11 @@ class ReferencesTest(utils.RepoTestCase):
reference = self.repo.lookup_reference('refs/tags/version1')
self.assertEqual(reference.hex, LAST_COMMIT)
self.assertRaises(GitError, self.repo.create_reference,
# try to create existing reference
self.assertRaises(ValueError, self.repo.create_reference,
'refs/tags/version1', LAST_COMMIT)
# try to create existing reference with force
reference = self.repo.create_reference('refs/tags/version1',
LAST_COMMIT, force=True)
self.assertEqual(reference.hex, LAST_COMMIT)
@ -191,9 +193,12 @@ class ReferencesTest(utils.RepoTestCase):
self.assertEqual(reference.type, GIT_REF_SYMBOLIC)
self.assertEqual(reference.target, 'refs/heads/master')
self.assertRaises(GitError, self.repo.create_reference,
# try to create existing symbolic reference
self.assertRaises(ValueError, self.repo.create_reference,
'refs/tags/beta','refs/heads/master', symbolic=True)
# try to create existing symbolic reference with force
reference = self.repo.create_reference('refs/tags/beta',
'refs/heads/master', force=True, symbolic=True)
self.assertEqual(reference.type, GIT_REF_SYMBOLIC)