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())))