]> git.ipfire.org Git - thirdparty/git.git/blame - t/t4057-diff-combined-paths.sh
The third batch
[thirdparty/git.git] / t / t4057-diff-combined-paths.sh
CommitLineData
fce135c4
KS
1#!/bin/sh
2
3test_description='combined diff show only paths that are different to all parents'
4
8f37854b 5GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
334afbc7
JS
6export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
7
3e3b9321 8TEST_PASSES_SANITIZE_LEAK=true
fce135c4
KS
9. ./test-lib.sh
10
11# verify that diffc.expect matches output of
274447aa 12# $(git diff -c --name-only HEAD HEAD^ HEAD^2)
fce135c4
KS
13diffc_verify () {
14 git diff -c --name-only HEAD HEAD^ HEAD^2 >diffc.actual &&
15 test_cmp diffc.expect diffc.actual
16}
17
18test_expect_success 'trivial merge - combine-diff empty' '
19 for i in $(test_seq 1 9)
20 do
64d1022e 21 echo $i >$i.txt &&
cbe1d9d6 22 git add $i.txt || return 1
fce135c4
KS
23 done &&
24 git commit -m "init" &&
25 git checkout -b side &&
26 for i in $(test_seq 2 9)
27 do
cbe1d9d6 28 echo $i/2 >>$i.txt || return 1
fce135c4
KS
29 done &&
30 git commit -a -m "side 2-9" &&
8f37854b 31 git checkout main &&
fce135c4 32 echo 1/2 >1.txt &&
8f37854b 33 git commit -a -m "main 1" &&
fce135c4
KS
34 git merge side &&
35 >diffc.expect &&
36 diffc_verify
37'
38
39
4dc8b1c1 40test_expect_success 'only one truly conflicting path' '
fce135c4
KS
41 git checkout side &&
42 for i in $(test_seq 2 9)
43 do
cbe1d9d6 44 echo $i/3 >>$i.txt || return 1
fce135c4
KS
45 done &&
46 echo "4side" >>4.txt &&
47 git commit -a -m "side 2-9 +4" &&
8f37854b 48 git checkout main &&
fce135c4
KS
49 for i in $(test_seq 1 9)
50 do
cbe1d9d6 51 echo $i/3 >>$i.txt || return 1
fce135c4 52 done &&
8f37854b
JS
53 echo "4main" >>4.txt &&
54 git commit -a -m "main 1-9 +4" &&
fce135c4
KS
55 test_must_fail git merge side &&
56 cat <<-\EOF >4.txt &&
57 4
58 4/2
59 4/3
8f37854b 60 4main
fce135c4
KS
61 4side
62 EOF
63 git add 4.txt &&
64 git commit -m "merge side (2)" &&
65 echo 4.txt >diffc.expect &&
66 diffc_verify
67'
68
69test_expect_success 'merge introduces new file' '
70 git checkout side &&
71 for i in $(test_seq 5 9)
72 do
cbe1d9d6 73 echo $i/4 >>$i.txt || return 1
fce135c4
KS
74 done &&
75 git commit -a -m "side 5-9" &&
8f37854b 76 git checkout main &&
fce135c4
KS
77 for i in $(test_seq 1 3)
78 do
cbe1d9d6 79 echo $i/4 >>$i.txt || return 1
fce135c4 80 done &&
8f37854b 81 git commit -a -m "main 1-3 +4hello" &&
fce135c4
KS
82 git merge side &&
83 echo "Hello World" >4hello.txt &&
84 git add 4hello.txt &&
85 git commit --amend &&
86 echo 4hello.txt >diffc.expect &&
87 diffc_verify
88'
89
90test_expect_success 'merge removed a file' '
91 git checkout side &&
92 for i in $(test_seq 5 9)
93 do
cbe1d9d6 94 echo $i/5 >>$i.txt || return 1
fce135c4
KS
95 done &&
96 git commit -a -m "side 5-9" &&
8f37854b 97 git checkout main &&
fce135c4
KS
98 for i in $(test_seq 1 3)
99 do
cbe1d9d6 100 echo $i/4 >>$i.txt || return 1
fce135c4 101 done &&
8f37854b 102 git commit -a -m "main 1-3" &&
fce135c4
KS
103 git merge side &&
104 git rm 4.txt &&
105 git commit --amend &&
106 echo 4.txt >diffc.expect &&
107 diffc_verify
108'
109
110test_done