Merge branch 'sb/maint-1.6.0-add-config-fix' into maint
[git] / t / t4027-diff-submodule.sh
1 #!/bin/sh
2
3 test_description='difference in submodules'
4
5 . ./test-lib.sh
6 . "$TEST_DIRECTORY"/diff-lib.sh
7
8 _z40=0000000000000000000000000000000000000000
9 test_expect_success setup '
10         test_tick &&
11         test_create_repo sub &&
12         (
13                 cd sub &&
14                 echo hello >world &&
15                 git add world &&
16                 git commit -m submodule
17         ) &&
18
19         test_tick &&
20         echo frotz >nitfol &&
21         git add nitfol sub &&
22         git commit -m superproject &&
23
24         (
25                 cd sub &&
26                 echo goodbye >world &&
27                 git add world &&
28                 git commit -m "submodule #2"
29         ) &&
30
31         set x $(
32                 cd sub &&
33                 git rev-list HEAD
34         ) &&
35         echo ":160000 160000 $3 $_z40 M sub" >expect
36 '
37
38 test_expect_success 'git diff --raw HEAD' '
39         git diff --raw --abbrev=40 HEAD >actual &&
40         test_cmp expect actual
41 '
42
43 test_expect_success 'git diff-index --raw HEAD' '
44         git diff-index --raw HEAD >actual.index &&
45         test_cmp expect actual.index
46 '
47
48 test_expect_success 'git diff-files --raw' '
49         git diff-files --raw >actual.files &&
50         test_cmp expect actual.files
51 '
52
53 test_expect_success 'git diff (empty submodule dir)' '
54         : >empty &&
55         rm -rf sub/* sub/.git &&
56         git diff > actual.empty &&
57         test_cmp empty actual.empty
58 '
59
60 test_expect_success 'conflicted submodule setup' '
61
62         # 39 efs
63         c=fffffffffffffffffffffffffffffffffffffff
64         (
65                 echo "000000 $_z40 0    sub"
66                 echo "160000 1$c 1      sub"
67                 echo "160000 2$c 2      sub"
68                 echo "160000 3$c 3      sub"
69         ) | git update-index --index-info &&
70         echo >expect.nosub '\''diff --cc sub
71 index 2ffffff,3ffffff..0000000
72 --- a/sub
73 +++ b/sub
74 @@@ -1,1 -1,1 +1,1 @@@
75 - Subproject commit 2fffffffffffffffffffffffffffffffffffffff
76  -Subproject commit 3fffffffffffffffffffffffffffffffffffffff
77 ++Subproject commit 0000000000000000000000000000000000000000'\'' &&
78
79         hh=$(git rev-parse HEAD) &&
80         sed -e "s/$_z40/$hh/" expect.nosub >expect.withsub
81
82 '
83
84 test_expect_success 'combined (empty submodule)' '
85         rm -fr sub && mkdir sub &&
86         git diff >actual &&
87         test_cmp expect.nosub actual
88 '
89
90 test_expect_success 'combined (with submodule)' '
91         rm -fr sub &&
92         git clone --no-checkout . sub &&
93         git diff >actual &&
94         test_cmp expect.withsub actual
95 '
96
97
98
99 test_done