preserve mtime of local clone
[git/jnareb-git.git] / t / t4027-diff-submodule.sh
blob5cf8924b2163ec55328ce270911a23cdcf52634a
1 #!/bin/sh
3 test_description='difference in submodules'
5 . ./test-lib.sh
6 . "$TEST_DIRECTORY"/diff-lib.sh
8 _z40=0000000000000000000000000000000000000000
9 test_expect_success setup '
10 test_tick &&
11 test_create_repo sub &&
13 cd sub &&
14 echo hello >world &&
15 git add world &&
16 git commit -m submodule
17 ) &&
19 test_tick &&
20 echo frotz >nitfol &&
21 git add nitfol sub &&
22 git commit -m superproject &&
25 cd sub &&
26 echo goodbye >world &&
27 git add world &&
28 git commit -m "submodule #2"
29 ) &&
31 set x $(
32 cd sub &&
33 git rev-list HEAD
34 ) &&
35 echo ":160000 160000 $3 $_z40 M sub" >expect
38 test_expect_success 'git diff --raw HEAD' '
39 git diff --raw --abbrev=40 HEAD >actual &&
40 test_cmp expect actual
43 test_expect_success 'git diff-index --raw HEAD' '
44 git diff-index --raw HEAD >actual.index &&
45 test_cmp expect actual.index
48 test_expect_success 'git diff-files --raw' '
49 git diff-files --raw >actual.files &&
50 test_cmp expect actual.files
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
60 test_expect_success 'conflicted submodule setup' '
62 # 39 efs
63 c=fffffffffffffffffffffffffffffffffffffff
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'\'' &&
79 hh=$(git rev-parse HEAD) &&
80 sed -e "s/$_z40/$hh/" expect.nosub >expect.withsub
84 test_expect_success 'combined (empty submodule)' '
85 rm -fr sub && mkdir sub &&
86 git diff >actual &&
87 test_cmp expect.nosub actual
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
99 test_done