From 0b537bf780e2ae37abc39343296e81d815227c9f Mon Sep 17 00:00:00 2001 From: delanne <xavier.delannoy@gmail.com> Date: Wed, 31 Oct 2012 12:11:18 +0100 Subject: [PATCH 1/2] - add option flags for tree.diff - add a testcase test_diff_tree_opts - update testrepo.git - update existing testcases --- src/pygit2/tree.c | 2 +- .../18/e2d2e9db075f9eb43bcb2daa65a2867d29a15e | Bin 0 -> 99 bytes .../77/88019febe4f40259a64c529a9aed561e64ddbd | Bin 0 -> 30 bytes .../cc/ca47fbb26183e71a7a46d165299b84e2e6c0b3 | 2 ++ test/data/testrepo.git/refs/heads/master | 2 +- test/test_diff.py | 17 ++++++++++++++++- test/test_repository.py | 4 ++-- 7 files changed, 22 insertions(+), 5 deletions(-) create mode 100644 test/data/testrepo.git/objects/18/e2d2e9db075f9eb43bcb2daa65a2867d29a15e create mode 100644 test/data/testrepo.git/objects/77/88019febe4f40259a64c529a9aed561e64ddbd create mode 100644 test/data/testrepo.git/objects/cc/ca47fbb26183e71a7a46d165299b84e2e6c0b3 diff --git a/src/pygit2/tree.c b/src/pygit2/tree.c index 76cefcb..0127c08 100644 --- a/src/pygit2/tree.c +++ b/src/pygit2/tree.c @@ -274,7 +274,7 @@ Tree_diff_tree(Tree *self, PyObject *args) Diff *py_diff; PyObject *py_obj = NULL; - if (!PyArg_ParseTuple(args, "|O", &py_obj)) + if (!PyArg_ParseTuple(args, "|Oi", &py_obj, &opts.flags)) return NULL; if (py_obj == NULL) { diff --git a/test/data/testrepo.git/objects/18/e2d2e9db075f9eb43bcb2daa65a2867d29a15e b/test/data/testrepo.git/objects/18/e2d2e9db075f9eb43bcb2daa65a2867d29a15e new file mode 100644 index 0000000000000000000000000000000000000000..4e796d7e7fc30a40b99623d299a5b12da2bffe7e GIT binary patch literal 99 zcmV-p0G$7L0V^p=O;xZkV=y!@Ff%bxNMtDQV4VN@$rq-`Wj;Z(X1xuQOS!ujDw)JE z{hH{*J?b_NC%uX?M4s=oza1rQW?}#Y3dszK{x=tMdViC6HM#%)0lr$PkRP)y00415 FC5IWEDl-58 literal 0 HcmV?d00001 diff --git a/test/data/testrepo.git/objects/77/88019febe4f40259a64c529a9aed561e64ddbd b/test/data/testrepo.git/objects/77/88019febe4f40259a64c529a9aed561e64ddbd new file mode 100644 index 0000000000000000000000000000000000000000..189c2d58d7461124479d04d4d98f0db68abf31ea GIT binary patch literal 30 mcmb<m^geacKghr&(Idp;+<9%!v)Y<r24N4F82o+MCISGlJqpAC literal 0 HcmV?d00001 diff --git a/test/data/testrepo.git/objects/cc/ca47fbb26183e71a7a46d165299b84e2e6c0b3 b/test/data/testrepo.git/objects/cc/ca47fbb26183e71a7a46d165299b84e2e6c0b3 new file mode 100644 index 0000000..bed3d1e --- /dev/null +++ b/test/data/testrepo.git/objects/cc/ca47fbb26183e71a7a46d165299b84e2e6c0b3 @@ -0,0 +1,2 @@ +x��[j�0D��U��B�#�%(%[���[ +�����Iwп�9�ҷ��>�� a�"I֓���咭0�6�Ilb㡮��b��.��}�Iވ�9�ss0|Y��X�N��[}<�V���z��|m\�S��'�M�:M��Z�qr���bb�/u���\@<h, 4�>��Z��mS� \ No newline at end of file diff --git a/test/data/testrepo.git/refs/heads/master b/test/data/testrepo.git/refs/heads/master index e863952..101232d 100644 --- a/test/data/testrepo.git/refs/heads/master +++ b/test/data/testrepo.git/refs/heads/master @@ -1 +1 @@ -2cdae28389c059815e951d0bb9eed6533f61a46b +ccca47fbb26183e71a7a46d165299b84e2e6c0b3 diff --git a/test/test_diff.py b/test/test_diff.py index 5f61b09..0aaa8b9 100644 --- a/test/test_diff.py +++ b/test/test_diff.py @@ -30,13 +30,14 @@ from __future__ import absolute_import from __future__ import unicode_literals import unittest - +import pygit2 from . import utils COMMIT_SHA1_1 = '5fe808e8953c12735680c257f56600cb0de44b10' COMMIT_SHA1_2 = 'c2792cfa289ae6321ecf2cd5806c2194b0fd070c' COMMIT_SHA1_3 = '2cdae28389c059815e951d0bb9eed6533f61a46b' +COMMIT_SHA1_4 = 'ccca47fbb26183e71a7a46d165299b84e2e6c0b3' PATCH = b"""diff --git a/a b/a index 7f129fd..af431f2 100644 @@ -133,6 +134,20 @@ class DiffTest(utils.BareRepoTestCase): #self.assertEqual(hunk.data[0][0], b'a contents 2\n') #self.assertEqual(hunk.data[1][0], b'a contents\n') + def test_diff_tree_opts(self): + commit_c = self.repo[COMMIT_SHA1_3] + commit_d = self.repo[COMMIT_SHA1_4] + + for opt in [pygit2.GIT_DIFF_IGNORE_WHITESPACE, + pygit2.GIT_DIFF_IGNORE_WHITESPACE_EOL]: + diff = commit_c.tree.diff(commit_d.tree, pygit2.GIT_DIFF_IGNORE_WHITESPACE) + self.assertTrue(diff is not None) + self.assertEqual(0, len(diff.changes.get('hunks', list()))) + + diff = commit_c.tree.diff(commit_d.tree) + self.assertTrue(diff is not None) + self.assertEqual(1, len(diff.changes.get('hunks', list()))) + def test_diff_merge(self): commit_a = self.repo[COMMIT_SHA1_1] commit_b = self.repo[COMMIT_SHA1_2] diff --git a/test/test_repository.py b/test/test_repository.py index fa3a932..5f38322 100644 --- a/test/test_repository.py +++ b/test/test_repository.py @@ -39,8 +39,8 @@ from pygit2 import GIT_OBJ_ANY, GIT_OBJ_BLOB, GIT_OBJ_COMMIT, init_repository, \ from . import utils -HEAD_SHA = '2cdae28389c059815e951d0bb9eed6533f61a46b' -PARENT_SHA = '5fe808e8953c12735680c257f56600cb0de44b10' # HEAD^ +HEAD_SHA = 'ccca47fbb26183e71a7a46d165299b84e2e6c0b3' +PARENT_SHA = '2cdae28389c059815e951d0bb9eed6533f61a46b' # HEAD^ A_HEX_SHA = 'af431f20fc541ed6d5afede3e2dc7160f6f01f16' A_BIN_SHA = binascii.unhexlify(A_HEX_SHA.encode('ascii')) From 783025d32704c435e0500c6c26dca0e660d63e0a Mon Sep 17 00:00:00 2001 From: delanne <xavier.delannoy@gmail.com> Date: Fri, 9 Nov 2012 14:55:20 +0100 Subject: [PATCH 2/2] Fix: "The opt variable is not used in the loop" --- test/test_diff.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_diff.py b/test/test_diff.py index 0aaa8b9..6fa9ba0 100644 --- a/test/test_diff.py +++ b/test/test_diff.py @@ -140,7 +140,7 @@ class DiffTest(utils.BareRepoTestCase): for opt in [pygit2.GIT_DIFF_IGNORE_WHITESPACE, pygit2.GIT_DIFF_IGNORE_WHITESPACE_EOL]: - diff = commit_c.tree.diff(commit_d.tree, pygit2.GIT_DIFF_IGNORE_WHITESPACE) + diff = commit_c.tree.diff(commit_d.tree, opt) self.assertTrue(diff is not None) self.assertEqual(0, len(diff.changes.get('hunks', list())))