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 0000000..4e796d7
Binary files /dev/null and b/test/data/testrepo.git/objects/18/e2d2e9db075f9eb43bcb2daa65a2867d29a15e differ
diff --git a/test/data/testrepo.git/objects/77/88019febe4f40259a64c529a9aed561e64ddbd b/test/data/testrepo.git/objects/77/88019febe4f40259a64c529a9aed561e64ddbd
new file mode 100644
index 0000000..189c2d5
Binary files /dev/null and b/test/data/testrepo.git/objects/77/88019febe4f40259a64c529a9aed561e64ddbd differ
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'))