From 681f7a7ae990fcfeafd39ca8eefdab810ea88b7a Mon Sep 17 00:00:00 2001 From: Bryce Kwon Date: Sat, 8 Aug 2026 12:49:50 -1000 Subject: Fix hunk numbering and a leak in the ssdiff view A hunk header that states no length was numbered from the wrong line, and the line a deferred row copied was never freed. --- tests/t0106-diff.sh | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'tests/t0106-diff.sh') diff --git a/tests/t0106-diff.sh b/tests/t0106-diff.sh index 82b645e..3e0d15c 100755 --- a/tests/t0106-diff.sh +++ b/tests/t0106-diff.sh @@ -16,4 +16,39 @@ test_expect_success 'find added line' ' grep "
+5
" tmp ' +# --- Side-by-side line numbers for a hunk that covers a single line --------- +# git writes the length only when a hunk spans more than one line, so a header +# reads "@@ -1 +1 @@". Requiring a comma after the number left those hunks +# numbered from zero, which dropped the line-number link entirely. +test_expect_success 'set up a repo with single-line hunks' ' + mkrepo repos/hunk1 1 && + ( + cd repos/hunk1 && + printf "only\n" >one.txt && + git add one.txt && + git commit -m "add one.txt" && + printf "ONLY\n" >one.txt && + git commit -am "change one.txt" + ) && + { + echo "virtual-root=/" && + echo "cache-size=0" && + echo "repo.url=hunk1" && + echo "repo.path=$PWD/repos/hunk1/.git" + } >hunk1rc && + git -C repos/hunk1 diff HEAD~1 HEAD >raw.diff && + grep "^@@ -1 +1 @@" raw.diff +' + +test_expect_success 'ssdiff numbers a comma-less hunk from its real line' ' + CGIT_CONFIG="$PWD/hunk1rc" QUERY_STRING="url=hunk1/diff/&dt=1" cgit >tmp && + grep "#n1.>1" tmp && + ! grep "#n0.>0" tmp +' + +test_expect_success 'ssdiff still numbers a hunk that carries a length' ' + cgit_query "url=foo/diff&dt=1" >tmp && + grep "#n1.>1" tmp +' + test_done -- cgit v2.8.0