Diff options
Diffstat (limited to 'tests')
| -rwxr-xr-x | tests/t0107-diff.sh | 35 | |
| -rwxr-xr-x | tests/t0108-rawdiff.sh | 21 | |
| -rwxr-xr-x | tests/t0109-patch.sh | 19 |
3 files changed, 75 insertions, 0 deletions
diff --git a/tests/t0107-diff.sh b/tests/t0107-diff.sh index e173d00..d03ecd2 100755 --- a/tests/t0107-diff.sh +++ b/tests/t0107-diff.sh @@ -104,4 +104,39 @@ test_expect_success 'stripping the highlight leaves every line intact' ' done <lines ' +# The diffstat links a renamed file by its new name, and so does the log of +# that file, but the old name lies outside a diff limited to the new one. +test_expect_success 'set up a renamed file' ' + mkrepo repos/moved 1 && + ( + cd repos/moved && + test_seq 1 10 >old.txt && + git add old.txt && + git commit -m "add old.txt" && + git mv old.txt new.txt && + git commit -m "rename old.txt" + ) && + cgitrc_repo movedrc moved +' + +test_expect_success 'the diff of a renamed file shows the rename' ' + cgit_rc movedrc "url=moved/diff/new.txt" >tmp && + grep "diff --git a/old.txt b/new.txt" tmp && + grep "</a> (renamed from old.txt)</td>" tmp && + ! grep "new file mode" tmp +' + +test_expect_success 'so does the commit page limited to the new name' ' + cgit_rc movedrc "url=moved/commit/new.txt" >tmp && + grep "diff --git a/old.txt b/new.txt" tmp && + ! grep "new file mode" tmp +' + +test_expect_success 'a file added outright still shows as new' ' + added=$(git -C repos/moved rev-parse HEAD~1) && + cgit_rc movedrc "url=moved/diff/old.txt&id=$added" >tmp && + grep "new file mode 100644" tmp && + grep "<div class=.add.>+10</div>" tmp +' + test_done diff --git a/tests/t0108-rawdiff.sh b/tests/t0108-rawdiff.sh index 9b4eb37..66f0cbe 100755 --- a/tests/t0108-rawdiff.sh +++ b/tests/t0108-rawdiff.sh @@ -52,4 +52,25 @@ test_expect_success 'a path limits the diff to that file' ' ! grep "file-5" actual ' +# The old name of a file renamed in the change joins the limit, so the diff +# shows the rename, the same as git diff given both names. +test_expect_success 'a renamed file is diffed as the rename' ' + mkrepo repos/moved 1 && + ( + cd repos/moved && + test_seq 1 10 >old.txt && + git add old.txt && + git commit -m "add old.txt" && + git mv old.txt new.txt && + echo eleven >>new.txt && + git commit -am "rename old.txt" + ) && + cgitrc_repo movedrc moved && + cgit_rc movedrc "url=moved/rawdiff/new.txt" >tmp && + git -C repos/moved diff HEAD^ HEAD -- old.txt new.txt >expect && + strip_headers <tmp >actual && + test_cmp expect actual && + grep "^rename from old.txt$" actual +' + test_done diff --git a/tests/t0109-patch.sh b/tests/t0109-patch.sh index bc942fe..6aae556 100755 --- a/tests/t0109-patch.sh +++ b/tests/t0109-patch.sh @@ -70,4 +70,23 @@ test_expect_success 'the signature names the version when asked to' ' check_cgit_signature "$CGIT_VERSION" ' +# The old name of a file renamed in the commit joins the limit, so the patch +# carries the rename rather than a file added whole. +test_expect_success 'a renamed file is patched as the rename' ' + mkrepo repos/moved 1 && + ( + cd repos/moved && + test_seq 1 10 >old.txt && + git add old.txt && + git commit -m "add old.txt" && + git mv old.txt new.txt && + git commit -m "rename old.txt" + ) && + cgitrc_repo movedrc moved && + cgit_rc movedrc "url=moved/patch/new.txt" >tmp && + grep "^rename from old.txt$" tmp && + grep "^rename to new.txt$" tmp && + ! grep "^new file mode" tmp +' + test_done |
