Implement Branch.delete.

This commit is contained in:
Daniel Rodríguez Troitiño
2013-05-17 22:41:36 +02:00
parent 3b4c8fe4bd
commit 79f1e54153
3 changed files with 45 additions and 0 deletions

View File

@@ -26,9 +26,39 @@
*/ */
#include "types.h" #include "types.h"
#include "branch.h"
#include "error.h"
#include "reference.h" #include "reference.h"
#include "utils.h"
extern PyObject *GitError;
PyDoc_STRVAR(Branch_delete__doc__,
"delete()\n"
"\n"
"Delete this branch. It will no longer be valid!");
PyObject *
Branch_delete(Branch *self, PyObject *args)
{
int err;
CHECK_REFERENCE(self);
/* Delete the branch */
err = git_branch_delete(self->reference);
if (err < 0)
return Error_set(err);
git_reference_free(self->reference);
self->reference = NULL; /* Invalidate the pointer */
Py_RETURN_NONE;
}
PyMethodDef Branch_methods[] = { PyMethodDef Branch_methods[] = {
METHOD(Branch, delete, METH_NOARGS),
{NULL} {NULL}
}; };

View File

@@ -28,8 +28,12 @@
#ifndef INCLUDE_pygit2_branch_h #ifndef INCLUDE_pygit2_branch_h
#define INCLUDE_pygit2_branch_h #define INCLUDE_pygit2_branch_h
#define PY_SSIZE_T_CLEAN
#include <Python.h>
#include <git2.h> #include <git2.h>
PyObject* Branch_delete(Branch *self, PyObject *args);
PyObject* wrap_branch(git_reference *c_reference, Repository *repo); PyObject* wrap_branch(git_reference *c_reference, Repository *repo);
#endif #endif

View File

@@ -68,6 +68,17 @@ class BranchesTestCase(utils.RepoTestCase):
reference = self.repo.create_branch('version1', commit, True) reference = self.repo.create_branch('version1', commit, True)
self.assertEqual(reference.target.hex, LAST_COMMIT) self.assertEqual(reference.target.hex, LAST_COMMIT)
def test_delete(self):
branch = self.repo.lookup_branch('i18n')
branch.delete()
self.assertTrue(self.repo.lookup_branch('i18n') is None)
def test_cant_delete_master(self):
branch = self.repo.lookup_branch('master')
self.assertRaises(pygit2.GitError, lambda: branch.delete())
class BranchesEmptyRepoTestCase(utils.EmptyRepoTestCase): class BranchesEmptyRepoTestCase(utils.EmptyRepoTestCase):
def setUp(self): def setUp(self):