From 2f08236aecf5aa8fac9bb47013729c5ef082dc50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Rodri=CC=81guez=20Troitin=CC=83o?= Date: Fri, 17 May 2013 22:50:38 +0200 Subject: [PATCH] Implement Branch.is_head. --- src/branch.c | 23 +++++++++++++++++++++++ src/branch.h | 1 + test/test_branch.py | 8 ++++++++ 3 files changed, 32 insertions(+) diff --git a/src/branch.c b/src/branch.c index fe5516e..579c253 100644 --- a/src/branch.c +++ b/src/branch.c @@ -57,8 +57,31 @@ Branch_delete(Branch *self, PyObject *args) } +PyDoc_STRVAR(Branch_is_head__doc__, + "is_head()\n" + "\n" + "True if HEAD points at the branch, False otherwise."); + +PyObject * +Branch_is_head(Branch *self) +{ + int err; + + CHECK_REFERENCE(self); + + err = git_branch_is_head(self->reference); + if (err == 1) + Py_RETURN_TRUE; + else if (err == 0) + Py_RETURN_FALSE; + else + return Error_set(err); +} + + PyMethodDef Branch_methods[] = { METHOD(Branch, delete, METH_NOARGS), + METHOD(Branch, is_head, METH_NOARGS), {NULL} }; diff --git a/src/branch.h b/src/branch.h index ab7b0ea..2c42b76 100644 --- a/src/branch.h +++ b/src/branch.h @@ -33,6 +33,7 @@ #include PyObject* Branch_delete(Branch *self, PyObject *args); +PyObject* Branch_is_head(Branch *self); PyObject* wrap_branch(git_reference *c_reference, Repository *repo); diff --git a/test/test_branch.py b/test/test_branch.py index 80828b6..6f3f2d1 100644 --- a/test/test_branch.py +++ b/test/test_branch.py @@ -79,6 +79,14 @@ class BranchesTestCase(utils.RepoTestCase): self.assertRaises(pygit2.GitError, lambda: branch.delete()) + def test_branch_is_head_returns_true_if_branch_is_head(self): + branch = self.repo.lookup_branch('master') + self.assertTrue(branch.is_head()) + + def test_branch_is_head_returns_false_if_branch_is_not_head(self): + branch = self.repo.lookup_branch('i18n') + self.assertFalse(branch.is_head()) + class BranchesEmptyRepoTestCase(utils.EmptyRepoTestCase): def setUp(self):