Implement Branch.delete.
This commit is contained in:
30
src/branch.c
30
src/branch.c
@@ -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}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
@@ -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):
|
||||||
|
Reference in New Issue
Block a user