Skip to content

Commit 44874cb

Browse files
avarttaylorr
authored andcommitted
submodule tests: add tests for top-level flag output
Exhaustively test for how combining various "mixed-level" "git submodule" option works. "Mixed-level" here means options that are accepted by a mixture of the top-level "submodule" command, and e.g. the "status" sub-command. Signed-off-by: Ævar Arnfjörð Bjarmason <[email protected]> Signed-off-by: Taylor Blau <[email protected]>
1 parent cc74a4a commit 44874cb

File tree

2 files changed

+179
-0
lines changed

2 files changed

+179
-0
lines changed

t/t7400-submodule-basic.sh

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -579,6 +579,16 @@ test_expect_success 'status should be "modified" after submodule commit' '
579579
grep "^+$rev2" list
580580
'
581581

582+
test_expect_success '"submodule --cached" command forms should be identical' '
583+
git submodule status --cached >expect &&
584+
585+
git submodule --cached >actual &&
586+
test_cmp expect actual &&
587+
588+
git submodule --cached status >actual &&
589+
test_cmp expect actual
590+
'
591+
582592
test_expect_success 'the --cached sha1 should be rev1' '
583593
git submodule --cached status >list &&
584594
grep "^+$rev1" list

t/t7422-submodule-output.sh

Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
1+
#!/bin/sh
2+
3+
test_description='submodule --cached, --quiet etc. output'
4+
5+
. ./test-lib.sh
6+
. "$TEST_DIRECTORY"/lib-t3100.sh
7+
8+
setup_sub () {
9+
local d="$1" &&
10+
shift &&
11+
git $@ clone . "$d" &&
12+
git $@ submodule add ./"$d"
13+
}
14+
15+
normalize_status () {
16+
sed -e 's/-g[0-9a-f]*/-gHASH/'
17+
}
18+
19+
test_expect_success 'setup' '
20+
test_commit A &&
21+
test_commit B &&
22+
setup_sub S &&
23+
setup_sub S.D &&
24+
setup_sub S.C &&
25+
setup_sub S.C.D &&
26+
setup_sub X &&
27+
git add S* &&
28+
test_commit C &&
29+
30+
# recursive in X/
31+
git -C X pull &&
32+
GIT_ALLOW_PROTOCOL=file git -C X submodule update --init &&
33+
34+
# dirty
35+
for d in S.D X/S.D
36+
do
37+
echo dirty >"$d"/A.t || return 1
38+
done &&
39+
40+
# commit (for --cached)
41+
for d in S.C* X/S.C*
42+
do
43+
git -C "$d" reset --hard A || return 1
44+
done &&
45+
46+
# dirty
47+
for d in S*.D X/S*.D
48+
do
49+
echo dirty >"$d/C2.t" || return 1
50+
done &&
51+
52+
for ref in A B C
53+
do
54+
# Not different with SHA-1 and SHA-256, just (ab)using
55+
# test_oid_cache as a variable bag to avoid using
56+
# $(git rev-parse ...).
57+
oid=$(git rev-parse $ref) &&
58+
test_oid_cache <<-EOF || return 1
59+
$ref sha1:$oid
60+
$ref sha256:$oid
61+
EOF
62+
done
63+
'
64+
65+
for opts in "" "status"
66+
do
67+
test_expect_success "git submodule $opts" '
68+
sed -e "s/^>//" >expect <<-EOF &&
69+
> $(test_oid B) S (B)
70+
>+$(test_oid A) S.C (A)
71+
>+$(test_oid A) S.C.D (A)
72+
> $(test_oid B) S.D (B)
73+
>+$(test_oid C) X (C)
74+
EOF
75+
git submodule $opts >actual.raw &&
76+
normalize_status <actual.raw >actual &&
77+
test_cmp expect actual
78+
'
79+
done
80+
81+
for opts in \
82+
"status --recursive"
83+
do
84+
test_expect_success "git submodule $opts" '
85+
sed -e "s/^>//" >expect <<-EOF &&
86+
> $(test_oid B) S (B)
87+
>+$(test_oid A) S.C (A)
88+
>+$(test_oid A) S.C.D (A)
89+
> $(test_oid B) S.D (B)
90+
>+$(test_oid C) X (C)
91+
> $(test_oid B) X/S (B)
92+
>+$(test_oid A) X/S.C (A)
93+
>+$(test_oid A) X/S.C.D (A)
94+
> $(test_oid B) X/S.D (B)
95+
> $(test_oid B) X/X (B)
96+
EOF
97+
git submodule $opts >actual.raw &&
98+
normalize_status <actual.raw >actual &&
99+
test_cmp expect actual
100+
'
101+
done
102+
103+
for opts in \
104+
"--quiet" \
105+
"--quiet status" \
106+
"status --quiet"
107+
do
108+
test_expect_success "git submodule $opts" '
109+
git submodule $opts >out &&
110+
test_must_be_empty out
111+
'
112+
done
113+
114+
for opts in \
115+
"--cached" \
116+
"--cached status" \
117+
"status --cached"
118+
do
119+
test_expect_success "git submodule $opts" '
120+
sed -e "s/^>//" >expect <<-EOF &&
121+
> $(test_oid B) S (B)
122+
>+$(test_oid B) S.C (B)
123+
>+$(test_oid B) S.C.D (B)
124+
> $(test_oid B) S.D (B)
125+
>+$(test_oid B) X (B)
126+
EOF
127+
git submodule $opts >actual.raw &&
128+
normalize_status <actual.raw >actual &&
129+
test_cmp expect actual
130+
'
131+
done
132+
133+
for opts in \
134+
"--cached --quiet" \
135+
"--cached --quiet status" \
136+
"--cached status --quiet" \
137+
"--quiet status --cached" \
138+
"status --cached --quiet"
139+
do
140+
test_expect_success "git submodule $opts" '
141+
git submodule $opts >out &&
142+
test_must_be_empty out
143+
'
144+
done
145+
146+
for opts in \
147+
"status --cached --recursive" \
148+
"--cached status --recursive"
149+
do
150+
test_expect_success "git submodule $opts" '
151+
sed -e "s/^>//" >expect <<-EOF &&
152+
> $(test_oid B) S (B)
153+
>+$(test_oid B) S.C (B)
154+
>+$(test_oid B) S.C.D (B)
155+
> $(test_oid B) S.D (B)
156+
>+$(test_oid B) X (B)
157+
> $(test_oid B) X/S (B)
158+
>+$(test_oid B) X/S.C (B)
159+
>+$(test_oid B) X/S.C.D (B)
160+
> $(test_oid B) X/S.D (B)
161+
> $(test_oid B) X/X (B)
162+
EOF
163+
git submodule $opts >actual.raw &&
164+
normalize_status <actual.raw >actual &&
165+
test_cmp expect actual
166+
'
167+
done
168+
169+
test_done

0 commit comments

Comments
 (0)