|  | #!/bin/sh | 
|  |  | 
|  | test_description='combined diff' | 
|  |  | 
|  | . ./test-lib.sh | 
|  |  | 
|  | setup_helper () { | 
|  | one=$1 branch=$2 side=$3 && | 
|  |  | 
|  | git branch $side $branch && | 
|  | for l in $one two three fyra | 
|  | do | 
|  | echo $l | 
|  | done >file && | 
|  | git add file && | 
|  | test_tick && | 
|  | git commit -m $branch && | 
|  | git checkout $side && | 
|  | for l in $one two three quatro | 
|  | do | 
|  | echo $l | 
|  | done >file && | 
|  | git add file && | 
|  | test_tick && | 
|  | git commit -m $side && | 
|  | test_must_fail git merge $branch && | 
|  | for l in $one three four | 
|  | do | 
|  | echo $l | 
|  | done >file && | 
|  | git add file && | 
|  | test_tick && | 
|  | git commit -m "merge $branch into $side" | 
|  | } | 
|  |  | 
|  | verify_helper () { | 
|  | it=$1 && | 
|  |  | 
|  | # Ignore lines that were removed only from the other parent | 
|  | sed -e ' | 
|  | 1,/^@@@/d | 
|  | /^ -/d | 
|  | s/^\(.\)./\1/ | 
|  | ' "$it" >"$it.actual.1" && | 
|  | sed -e ' | 
|  | 1,/^@@@/d | 
|  | /^- /d | 
|  | s/^.\(.\)/\1/ | 
|  | ' "$it" >"$it.actual.2" && | 
|  |  | 
|  | git diff "$it^" "$it" -- | sed -e '1,/^@@/d' >"$it.expect.1" && | 
|  | test_cmp "$it.expect.1" "$it.actual.1" && | 
|  |  | 
|  | git diff "$it^2" "$it" -- | sed -e '1,/^@@/d' >"$it.expect.2" && | 
|  | test_cmp "$it.expect.2" "$it.actual.2" | 
|  | } | 
|  |  | 
|  | test_expect_success setup ' | 
|  | >file && | 
|  | git add file && | 
|  | test_tick && | 
|  | git commit -m initial && | 
|  |  | 
|  | git branch withone && | 
|  | git branch sansone && | 
|  |  | 
|  | git checkout withone && | 
|  | setup_helper one withone sidewithone && | 
|  |  | 
|  | git checkout sansone && | 
|  | setup_helper "" sansone sidesansone | 
|  | ' | 
|  |  | 
|  | test_expect_success 'check combined output (1)' ' | 
|  | git show sidewithone -- >sidewithone && | 
|  | verify_helper sidewithone | 
|  | ' | 
|  |  | 
|  | test_expect_failure 'check combined output (2)' ' | 
|  | git show sidesansone -- >sidesansone && | 
|  | verify_helper sidesansone | 
|  | ' | 
|  |  | 
|  | test_done |