From 6a58b9752aa929417c62bed7f1fc4e55b323419d Mon Sep 17 00:00:00 2001 From: Yoichi Nakayama Date: Sat, 23 Oct 2021 20:55:47 +0900 Subject: [PATCH] Fixes #962: First create a git_patch to get delta->flags correctly --- src/diff.c | 11 +++++++++++ test/test_diff.py | 4 +--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/diff.c b/src/diff.c index 6a15ade55..b70a9ae81 100644 --- a/src/diff.c +++ b/src/diff.c @@ -505,6 +505,17 @@ PyTypeObject DiffIterType = { PyObject * diff_get_delta_byindex(git_diff *diff, size_t idx) { + git_patch *patch = NULL; + int err; + + /* create a git_patch in order to store delta->flags */ + err = git_patch_from_diff(&patch, diff, idx); + if (err < 0) { + PyErr_SetObject(PyExc_IndexError, PyLong_FromSize_t(idx)); + return NULL; + } + git_patch_free(patch); + const git_diff_delta *delta = git_diff_get_delta(diff, idx); if (delta == NULL) { PyErr_SetObject(PyExc_IndexError, PyLong_FromSize_t(idx)); diff --git a/test/test_diff.py b/test/test_diff.py index e4a9ff5e5..56f3c23b6 100644 --- a/test/test_diff.py +++ b/test/test_diff.py @@ -319,9 +319,7 @@ def test_deltas(barerepo): assert delta.nfiles == patch_delta.nfiles assert delta.old_file.id == patch_delta.old_file.id assert delta.new_file.id == patch_delta.new_file.id - - # As explained in the libgit2 documentation, flags are not set - #assert delta.flags == patch_delta.flags + assert delta.flags == patch_delta.flags def test_diff_parse(barerepo): diff = pygit2.Diff.parse_diff(PATCH)