| #!/bin/sh | |
| test_description='diff hunk fusing' | |
| . ./test-lib.sh | |
| f() { | |
| echo $1 | |
| i=1 | |
| while test $i -le $2 | |
| do | |
| echo $i | |
| i=$(expr $i + 1) | |
| done | |
| echo $3 | |
| } | |
| t() { | |
| case $# in | |
| 4) hunks=$4; cmd="diff -U$3";; | |
| 5) hunks=$5; cmd="diff -U$3 --inter-hunk-context=$4";; | |
| esac | |
| label="$cmd, $1 common $2" | |
| file=f$1 | |
| expected=expected.$file.$3.$hunks | |
| if ! test -f $file | |
| then | |
| f A $1 B >$file | |
| git add $file | |
| git commit -q -m. $file | |
| f X $1 Y >$file | |
| fi | |
| test_expect_success "$label: count hunks ($hunks)" " | |
| test $(git $cmd $file | grep '^@@ ' | wc -l) = $hunks | |
| " | |
| test -f $expected && | |
| test_expect_success "$label: check output" " | |
| git $cmd $file | grep -v '^index ' >actual && | |
| test_cmp $expected actual | |
| " | |
| } | |
| cat <<EOF >expected.f1.0.1 || exit 1 | |
| diff --git a/f1 b/f1 | |
| --- a/f1 | |
| +++ b/f1 | |
| @@ -1,3 +1,3 @@ | |
| -A | |
| +X | |
| 1 | |
| -B | |
| +Y | |
| EOF | |
| cat <<EOF >expected.f1.0.2 || exit 1 | |
| diff --git a/f1 b/f1 | |
| --- a/f1 | |
| +++ b/f1 | |
| @@ -1 +1 @@ | |
| -A | |
| +X | |
| @@ -3 +3 @@ A | |
| -B | |
| +Y | |
| EOF | |
| # common lines ctx intrctx hunks | |
| t 1 line 0 2 | |
| t 1 line 0 0 2 | |
| t 1 line 0 1 1 | |
| t 1 line 0 2 1 | |
| t 1 line 1 1 | |
| t 2 lines 0 2 | |
| t 2 lines 0 0 2 | |
| t 2 lines 0 1 2 | |
| t 2 lines 0 2 1 | |
| t 2 lines 1 1 | |
| t 3 lines 1 2 | |
| t 3 lines 1 0 2 | |
| t 3 lines 1 1 1 | |
| t 3 lines 1 2 1 | |
| t 9 lines 3 2 | |
| t 9 lines 3 2 2 | |
| t 9 lines 3 3 1 | |
| test_done |