From: Phillip Wood <phillip.wood@talktalk.net> To: Git Mailing List <git@vger.kernel.org> Cc: Junio C Hamano <gitster@pobox.com>, "Brian M. Carlson" <sandals@crustytoothpaste.net>, Eric Sunshine <sunshine@sunshineco.com>, Phillip Wood <phillip.wood@dunelm.org.uk> Subject: [PATCH v4 5/9] t3701: add failing test for pathological context lines Date: Thu, 1 Mar 2018 10:50:59 +0000 Message-ID: <20180301105103.24268-6-phillip.wood@talktalk.net> (raw) In-Reply-To: <20180301105103.24268-1-phillip.wood@talktalk.net> From: Phillip Wood <phillip.wood@dunelm.org.uk> When a hunk is skipped by add -i the offsets of subsequent hunks are not adjusted to account for any missing insertions due to the skipped hunk. Most of the time this does not matter as apply uses the context lines to apply the subsequent hunks in the correct place, however in pathological cases the context lines will match at the now incorrect offset and the hunk will be applied in the wrong place. The offsets of hunks following an edited hunk that has had the number of insertions or deletions changed also need to be updated in the same way. Add failing tests to demonstrate this. Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk> --- Notes: changes since v2: - removed test_set_editor as it is already set changes since v1: - changed edit test to use the existing fake editor and to strip the hunk header and some context lines as well as deleting an insertion - style fixes t/t3701-add-interactive.sh | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/t/t3701-add-interactive.sh b/t/t3701-add-interactive.sh index f95714230b..094eeca405 100755 --- a/t/t3701-add-interactive.sh +++ b/t/t3701-add-interactive.sh @@ -531,4 +531,34 @@ test_expect_success 'status ignores dirty submodules (except HEAD)' ' ! grep dirty-otherwise output ' +test_expect_success 'set up pathological context' ' + git reset --hard && + test_write_lines a a a a a a a a a a a >a && + git add a && + git commit -m a && + test_write_lines c b a a a a a a a b a a a a >a && + test_write_lines a a a a a a a b a a a a >expected-1 && + test_write_lines b a a a a a a a b a a a a >expected-2 && + # check editing can cope with missing header and deleted context lines + # as well as changes to other lines + test_write_lines +b " a" >patch +' + +test_expect_failure 'add -p works with pathological context lines' ' + git reset && + printf "%s\n" n y | + git add -p && + git cat-file blob :a >actual && + test_cmp expected-1 actual +' + +test_expect_failure 'add -p patch editing works with pathological context lines' ' + git reset && + # n q q below is in case edit fails + printf "%s\n" e y n q q | + git add -p && + git cat-file blob :a >actual && + test_cmp expected-2 actual +' + test_done -- 2.16.1
next prev parent reply index Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-02-13 10:44 [PATCH 0/4] Correct offsets of hunks when one is skipped Phillip Wood 2018-02-13 10:44 ` [PATCH 1/4] add -i: add function to format hunk header Phillip Wood 2018-02-13 10:44 ` [PATCH 2/4] t3701: add failing test for pathological context lines Phillip Wood 2018-02-13 20:35 ` Junio C Hamano 2018-02-13 10:44 ` [PATCH 3/4] add -p: Adjust offsets of subsequent hunks when one is skipped Phillip Wood 2018-02-13 10:44 ` [PATCH 4/4] add -p: calculate offset delta for edited patches Phillip Wood 2018-02-13 23:56 ` [PATCH 0/4] Correct offsets of hunks when one is skipped brian m. carlson 2018-02-19 13:01 ` Phillip Wood 2018-02-19 11:29 ` [PATCH v2 0/9] " Phillip Wood 2018-02-19 11:29 ` [PATCH v2 1/9] add -i: add function to format hunk header Phillip Wood 2018-02-20 18:21 ` Junio C Hamano 2018-02-19 11:29 ` [PATCH v2 2/9] t3701: indent here documents Phillip Wood 2018-02-19 18:36 ` Eric Sunshine 2018-02-19 11:29 ` [PATCH v2 3/9] t3701: use test_write_lines and write_script Phillip Wood 2018-02-19 18:47 ` Eric Sunshine 2018-02-20 17:19 ` Junio C Hamano 2018-02-21 11:26 ` Phillip Wood 2018-02-19 11:29 ` [PATCH v2 4/9] t3701: don't hard code sha1 hash values Phillip Wood 2018-02-19 18:52 ` Eric Sunshine 2018-02-20 17:39 ` Junio C Hamano 2018-02-21 11:42 ` Phillip Wood 2018-02-21 16:58 ` Junio C Hamano 2018-02-19 11:29 ` [PATCH v2 5/9] t3701: add failing test for pathological context lines Phillip Wood 2018-02-21 11:28 ` Phillip Wood 2018-02-19 11:29 ` [PATCH v2 6/9] add -p: Adjust offsets of subsequent hunks when one is skipped Phillip Wood 2018-02-19 11:29 ` [PATCH v2 7/9] add -p: calculate offset delta for edited patches Phillip Wood 2018-02-19 11:29 ` [PATCH v2 8/9] add -p: fix counting when splitting and coalescing Phillip Wood 2018-02-19 11:29 ` [PATCH v2 9/9] add -p: don't rely on apply's '--recount' option Phillip Wood 2018-02-20 18:50 ` Junio C Hamano 2018-02-27 11:03 ` [PATCH v3 0/9] Correct offsets of hunks when one is skipped Phillip Wood 2018-02-27 11:03 ` [PATCH v3 1/9] add -i: add function to format hunk header Phillip Wood 2018-02-27 11:03 ` [PATCH v3 2/9] t3701: indent here documents Phillip Wood 2018-02-27 22:35 ` Junio C Hamano 2018-02-28 11:00 ` Phillip Wood 2018-02-28 15:37 ` Junio C Hamano 2018-03-01 10:57 ` Phillip Wood 2018-03-01 15:58 ` Junio C Hamano 2018-02-27 11:03 ` [PATCH v3 3/9] t3701: use test_write_lines and write_script Phillip Wood 2018-02-27 11:03 ` [PATCH v3 4/9] t3701: don't hard code sha1 hash values Phillip Wood 2018-02-27 22:42 ` Junio C Hamano 2018-02-28 11:03 ` Phillip Wood 2018-02-28 11:10 ` Phillip Wood 2018-02-27 11:04 ` [PATCH v3 5/9] t3701: add failing test for pathological context lines Phillip Wood 2018-02-27 11:04 ` [PATCH v3 6/9] add -p: Adjust offsets of subsequent hunks when one is skipped Phillip Wood 2018-02-27 11:04 ` [PATCH v3 7/9] add -p: calculate offset delta for edited patches Phillip Wood 2018-02-27 11:04 ` [PATCH v3 8/9] add -p: fix counting when splitting and coalescing Phillip Wood 2018-02-27 11:04 ` [PATCH v3 9/9] add -p: don't rely on apply's '--recount' option Phillip Wood 2018-03-01 10:50 ` [PATCH v4 0/9] Correct offsets of hunks when one is skipped Phillip Wood 2018-03-01 10:50 ` [PATCH v4 1/9] add -i: add function to format hunk header Phillip Wood 2018-03-01 10:50 ` [PATCH v4 2/9] t3701: indent here documents Phillip Wood 2018-03-01 10:50 ` [PATCH v4 3/9] t3701: use test_write_lines and write_script Phillip Wood 2018-03-01 10:50 ` [PATCH v4 4/9] t3701: don't hard code sha1 hash values Phillip Wood 2018-03-02 15:55 ` SZEDER Gábor 2018-03-02 16:09 ` Junio C Hamano 2018-03-05 10:59 ` Phillip Wood 2018-03-05 12:32 ` SZEDER Gábor 2018-03-01 10:50 ` Phillip Wood [this message] 2018-03-01 10:51 ` [PATCH v4 6/9] add -p: adjust offsets of subsequent hunks when one is skipped Phillip Wood 2018-03-01 10:51 ` [PATCH v4 7/9] add -p: calculate offset delta for edited patches Phillip Wood 2018-03-01 20:14 ` Junio C Hamano 2018-03-02 10:36 ` Phillip Wood 2018-03-01 10:51 ` [PATCH v4 8/9] add -p: fix counting when splitting and coalescing Phillip Wood 2018-03-01 20:29 ` Junio C Hamano 2018-03-02 10:48 ` Phillip Wood 2018-03-01 10:51 ` [PATCH v4 9/9] add -p: don't rely on apply's '--recount' option Phillip Wood 2018-03-01 20:30 ` Junio C Hamano 2018-03-02 10:49 ` Phillip Wood 2018-03-05 10:56 ` [PATCH v5 0/9] Correct offsets of hunks when one is skipped Phillip Wood 2018-03-05 10:56 ` [PATCH v5 1/9] add -i: add function to format hunk header Phillip Wood 2018-03-05 10:56 ` [PATCH v5 2/9] t3701: indent here documents Phillip Wood 2018-03-05 10:56 ` [PATCH v5 3/9] t3701: use test_write_lines and write_script Phillip Wood 2018-03-05 10:56 ` [PATCH v5 4/9] t3701: don't hard code sha1 hash values Phillip Wood 2018-03-05 10:56 ` [PATCH v5 5/9] t3701: add failing test for pathological context lines Phillip Wood 2018-03-05 10:56 ` [PATCH v5 6/9] add -p: adjust offsets of subsequent hunks when one is skipped Phillip Wood 2018-03-05 10:56 ` [PATCH v5 7/9] add -p: calculate offset delta for edited patches Phillip Wood 2018-03-05 10:56 ` [PATCH v5 8/9] add -p: fix counting when splitting and coalescing Phillip Wood 2018-03-05 10:56 ` [PATCH v5 9/9] add -p: don't rely on apply's '--recount' option Phillip Wood 2018-03-05 18:50 ` [PATCH v5 0/9] Correct offsets of hunks when one is skipped Junio C Hamano 2018-03-06 10:25 ` Phillip Wood
Reply instructions: You may reply publically to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style List information: http://vger.kernel.org/majordomo-info.html * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20180301105103.24268-6-phillip.wood@talktalk.net \ --to=phillip.wood@talktalk.net \ --cc=git@vger.kernel.org \ --cc=gitster@pobox.com \ --cc=phillip.wood@dunelm.org.uk \ --cc=sandals@crustytoothpaste.net \ --cc=sunshine@sunshineco.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
git@vger.kernel.org list mirror (unofficial, one of many) Archives are clonable: git clone --mirror https://public-inbox.org/git git clone --mirror http://ou63pmih66umazou.onion/git git clone --mirror http://czquwvybam4bgbro.onion/git git clone --mirror http://hjrcffqmbrq6wope.onion/git Example config snippet for mirrors Newsgroups are available over NNTP: nntp://news.public-inbox.org/inbox.comp.version-control.git nntp://ou63pmih66umazou.onion/inbox.comp.version-control.git nntp://czquwvybam4bgbro.onion/inbox.comp.version-control.git nntp://hjrcffqmbrq6wope.onion/inbox.comp.version-control.git nntp://news.gmane.org/gmane.comp.version-control.git note: .onion URLs require Tor: https://www.torproject.org/ AGPL code for this site: git clone https://public-inbox.org/public-inbox.git