You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
170 lines
3.3 KiB
170 lines
3.3 KiB
#!/bin/sh |
|
|
|
test_description='submodule --cached, --quiet etc. output' |
|
|
|
TEST_PASSES_SANITIZE_LEAK=true |
|
. ./test-lib.sh |
|
. "$TEST_DIRECTORY"/lib-t3100.sh |
|
|
|
setup_sub () { |
|
local d="$1" && |
|
shift && |
|
git $@ clone . "$d" && |
|
git $@ submodule add ./"$d" |
|
} |
|
|
|
normalize_status () { |
|
sed -e 's/-g[0-9a-f]*/-gHASH/' |
|
} |
|
|
|
test_expect_success 'setup' ' |
|
test_commit A && |
|
test_commit B && |
|
setup_sub S && |
|
setup_sub S.D && |
|
setup_sub S.C && |
|
setup_sub S.C.D && |
|
setup_sub X && |
|
git add S* && |
|
test_commit C && |
|
|
|
# recursive in X/ |
|
git -C X pull && |
|
GIT_ALLOW_PROTOCOL=file git -C X submodule update --init && |
|
|
|
# dirty |
|
for d in S.D X/S.D |
|
do |
|
echo dirty >"$d"/A.t || return 1 |
|
done && |
|
|
|
# commit (for --cached) |
|
for d in S.C* X/S.C* |
|
do |
|
git -C "$d" reset --hard A || return 1 |
|
done && |
|
|
|
# dirty |
|
for d in S*.D X/S*.D |
|
do |
|
echo dirty >"$d/C2.t" || return 1 |
|
done && |
|
|
|
for ref in A B C |
|
do |
|
# Not different with SHA-1 and SHA-256, just (ab)using |
|
# test_oid_cache as a variable bag to avoid using |
|
# $(git rev-parse ...). |
|
oid=$(git rev-parse $ref) && |
|
test_oid_cache <<-EOF || return 1 |
|
$ref sha1:$oid |
|
$ref sha256:$oid |
|
EOF |
|
done |
|
' |
|
|
|
for opts in "" "status" |
|
do |
|
test_expect_success "git submodule $opts" ' |
|
sed -e "s/^>//" >expect <<-EOF && |
|
> $(test_oid B) S (B) |
|
>+$(test_oid A) S.C (A) |
|
>+$(test_oid A) S.C.D (A) |
|
> $(test_oid B) S.D (B) |
|
>+$(test_oid C) X (C) |
|
EOF |
|
git submodule $opts >actual.raw && |
|
normalize_status <actual.raw >actual && |
|
test_cmp expect actual |
|
' |
|
done |
|
|
|
for opts in \ |
|
"status --recursive" |
|
do |
|
test_expect_success "git submodule $opts" ' |
|
sed -e "s/^>//" >expect <<-EOF && |
|
> $(test_oid B) S (B) |
|
>+$(test_oid A) S.C (A) |
|
>+$(test_oid A) S.C.D (A) |
|
> $(test_oid B) S.D (B) |
|
>+$(test_oid C) X (C) |
|
> $(test_oid B) X/S (B) |
|
>+$(test_oid A) X/S.C (A) |
|
>+$(test_oid A) X/S.C.D (A) |
|
> $(test_oid B) X/S.D (B) |
|
> $(test_oid B) X/X (B) |
|
EOF |
|
git submodule $opts >actual.raw && |
|
normalize_status <actual.raw >actual && |
|
test_cmp expect actual |
|
' |
|
done |
|
|
|
for opts in \ |
|
"--quiet" \ |
|
"--quiet status" \ |
|
"status --quiet" |
|
do |
|
test_expect_success "git submodule $opts" ' |
|
git submodule $opts >out && |
|
test_must_be_empty out |
|
' |
|
done |
|
|
|
for opts in \ |
|
"--cached" \ |
|
"--cached status" \ |
|
"status --cached" |
|
do |
|
test_expect_success "git submodule $opts" ' |
|
sed -e "s/^>//" >expect <<-EOF && |
|
> $(test_oid B) S (B) |
|
>+$(test_oid B) S.C (B) |
|
>+$(test_oid B) S.C.D (B) |
|
> $(test_oid B) S.D (B) |
|
>+$(test_oid B) X (B) |
|
EOF |
|
git submodule $opts >actual.raw && |
|
normalize_status <actual.raw >actual && |
|
test_cmp expect actual |
|
' |
|
done |
|
|
|
for opts in \ |
|
"--cached --quiet" \ |
|
"--cached --quiet status" \ |
|
"--cached status --quiet" \ |
|
"--quiet status --cached" \ |
|
"status --cached --quiet" |
|
do |
|
test_expect_success "git submodule $opts" ' |
|
git submodule $opts >out && |
|
test_must_be_empty out |
|
' |
|
done |
|
|
|
for opts in \ |
|
"status --cached --recursive" \ |
|
"--cached status --recursive" |
|
do |
|
test_expect_success "git submodule $opts" ' |
|
sed -e "s/^>//" >expect <<-EOF && |
|
> $(test_oid B) S (B) |
|
>+$(test_oid B) S.C (B) |
|
>+$(test_oid B) S.C.D (B) |
|
> $(test_oid B) S.D (B) |
|
>+$(test_oid B) X (B) |
|
> $(test_oid B) X/S (B) |
|
>+$(test_oid B) X/S.C (B) |
|
>+$(test_oid B) X/S.C.D (B) |
|
> $(test_oid B) X/S.D (B) |
|
> $(test_oid B) X/X (B) |
|
EOF |
|
git submodule $opts >actual.raw && |
|
normalize_status <actual.raw >actual && |
|
test_cmp expect actual |
|
' |
|
done |
|
|
|
test_done
|
|
|