diff --git a/src/remote.c b/src/remote.c index e1e745c..bcd66c2 100644 --- a/src/remote.c +++ b/src/remote.c @@ -71,6 +71,25 @@ Remote_name__get__(Remote *self) return PyUnicode_FromString(git_remote_name(self->remote)); } +int +Remote_name__set__(Remote *self, PyObject* py_name) +{ + int err; + char* name; + + name = py_str_to_c_str(py_name, NULL); + if (name != NULL) { + err = git_remote_rename(self->remote, name, NULL, NULL); + + if (err == GIT_OK) + return 0; + + Error_set(err); + } + + return -1; +} + PyDoc_STRVAR(Remote_url__doc__, "Url of the remote refspec"); @@ -82,7 +101,7 @@ Remote_url__get__(Remote *self) PyGetSetDef Remote_getseters[] = { - GETTER(Remote, name), + GETSET(Remote, name), GETTER(Remote, url), {NULL} }; diff --git a/test/test_remote.py b/test/test_remote.py index 60796ee..36f4eb5 100644 --- a/test/test_remote.py +++ b/test/test_remote.py @@ -48,6 +48,16 @@ class RepositoryTest(utils.RepoTestCase): self.assertRaises(ValueError,self.repo.remote_create, *(name, url)) + def test_remote_rename(self): + remote = self.repo.remotes[0] + + self.assertEqual(REMOTE_NAME, remote.name) + remote.name = 'new' + self.assertEqual('new', remote.name) + + self.assertRaisesAssign(ValueError, remote, 'name', '') + + def test_remote_list(self): self.assertEqual(1, len(self.repo.remotes)) remote = self.repo.remotes[0]