| #!/bin/sh | |
| test_description='basic diff-pairs tests' | |
| . ./test-lib.sh | |
| # This creates a diff with added, modified, deleted, renamed, copied, and | |
| # typechange entries. This includes a submodule to test submodule diff support. | |
| test_expect_success 'setup' ' | |
| test_config_global protocol.file.allow always && | |
| git init sub && | |
| test_commit -C sub initial && | |
| git init main && | |
| cd main && | |
| echo to-be-gone >deleted && | |
| echo original >modified && | |
| echo now-a-file >symlink && | |
| test_seq 200 >two-hundred && | |
| test_seq 201 500 >five-hundred && | |
| git add . && | |
| test_tick && | |
| git commit -m base && | |
| git tag base && | |
| git submodule add ../sub && | |
| echo now-here >added && | |
| echo new >modified && | |
| rm deleted && | |
| mkdir subdir && | |
| echo content >subdir/file && | |
| mv two-hundred renamed && | |
| test_seq 201 500 | sed s/300/modified/ >copied && | |
| rm symlink && | |
| git add -A . && | |
| test_ln_s_add dest symlink && | |
| test_tick && | |
| git commit -m new && | |
| git tag new | |
| ' | |
| test_expect_success 'diff-pairs recreates --raw' ' | |
| git diff-tree -r -M -C -C -z base new >expect && | |
| git diff-pairs --raw -z >actual <expect && | |
| test_cmp expect actual | |
| ' | |
| test_expect_success 'diff-pairs can create -p output' ' | |
| git diff-tree -p -M -C -C base new >expect && | |
| git diff-tree -r -M -C -C -z base new | | |
| git diff-pairs -p -z >actual && | |
| test_cmp expect actual | |
| ' | |
| test_expect_success 'diff-pairs does not support normal raw diff input' ' | |
| git diff-tree -r base new | | |
| test_must_fail git diff-pairs >out 2>err && | |
| echo "usage: working without -z is not supported" >expect && | |
| test_must_be_empty out && | |
| test_cmp expect err | |
| ' | |
| test_expect_success 'diff-pairs does not support tree objects as input' ' | |
| git diff-tree -z base new | | |
| test_must_fail git diff-pairs -z >out 2>err && | |
| echo "fatal: tree objects not supported" >expect && | |
| test_must_be_empty out && | |
| test_cmp expect err | |
| ' | |
| test_expect_success 'diff-pairs does not support pathspec arguments' ' | |
| git diff-tree -r -z base new | | |
| test_must_fail git diff-pairs -z -- new >out 2>err && | |
| echo "usage: pathspec arguments not supported" >expect && | |
| test_must_be_empty out && | |
| test_cmp expect err | |
| ' | |
| test_expect_success 'diff-pairs explicit queue flush' ' | |
| git diff-tree -r -M -C -C -z base new >expect && | |
| printf "\0" >>expect && | |
| git diff-tree -r -M -C -C -z base new >>expect && | |
| git diff-pairs --raw -z <expect >actual && | |
| test_cmp expect actual | |
| ' | |
| test_done |