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>, Phillip Wood <phillip.wood@dunelm.org.uk> Subject: [PATCH v2 5/9] t3701: add failing test for pathological context lines Date: Mon, 19 Feb 2018 11:29:06 +0000 Message-ID: <20180219112910.24471-6-phillip.wood@talktalk.net> (raw) In-Reply-To: <20180219112910.24471-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 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 | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/t/t3701-add-interactive.sh b/t/t3701-add-interactive.sh index 70748393f28c93f4bc5d43b07bd96bd208aba3e9..06c4747f506a1b05ccad0f9387e1fbd69cfd7784 100755 --- a/t/t3701-add-interactive.sh +++ b/t/t3701-add-interactive.sh @@ -511,4 +511,35 @@ 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 && + test_set_editor "$FAKE_EDITOR" && + # 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 other threads:[~2018-02-19 11:29 UTC|newest] 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 ` Phillip Wood [this message] 2018-02-21 11:28 ` [PATCH v2 5/9] t3701: add failing test for pathological context lines 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 ` [PATCH v4 5/9] t3701: add failing test for pathological context lines Phillip Wood 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 publicly 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=20180219112910.24471-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 \ /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) This inbox may be cloned and mirrored by anyone: 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 # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V1 git git/ https://public-inbox.org/git \ git@vger.kernel.org public-inbox-index 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.io/gmane.comp.version-control.git note: .onion URLs require Tor: https://www.torproject.org/ code repositories for the project(s) associated with this inbox: https://80x24.org/mirrors/git.git AGPL code for this site: git clone https://public-inbox.org/public-inbox.git