93 lines
2.6 KiB
Bash
Executable File
93 lines
2.6 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='Test reffiles backend consistency check'
|
|
|
|
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
|
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
|
GIT_TEST_DEFAULT_REF_FORMAT=files
|
|
export GIT_TEST_DEFAULT_REF_FORMAT
|
|
TEST_PASSES_SANITIZE_LEAK=true
|
|
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success 'ref name should be checked' '
|
|
test_when_finished "rm -rf repo" &&
|
|
git init repo &&
|
|
branch_dir_prefix=.git/refs/heads &&
|
|
tag_dir_prefix=.git/refs/tags &&
|
|
cd repo &&
|
|
|
|
git commit --allow-empty -m initial &&
|
|
git checkout -b branch-1 &&
|
|
git tag tag-1 &&
|
|
git commit --allow-empty -m second &&
|
|
git checkout -b branch-2 &&
|
|
git tag tag-2 &&
|
|
git tag multi_hierarchy/tag-2 &&
|
|
|
|
cp $branch_dir_prefix/branch-1 $branch_dir_prefix/.branch-1 &&
|
|
test_must_fail git refs verify 2>err &&
|
|
cat >expect <<-EOF &&
|
|
error: refs/heads/.branch-1: badRefName: invalid refname format
|
|
EOF
|
|
rm $branch_dir_prefix/.branch-1 &&
|
|
test_cmp expect err &&
|
|
|
|
cp $branch_dir_prefix/branch-1 $branch_dir_prefix/@ &&
|
|
test_must_fail git refs verify 2>err &&
|
|
cat >expect <<-EOF &&
|
|
error: refs/heads/@: badRefName: invalid refname format
|
|
EOF
|
|
rm $branch_dir_prefix/@ &&
|
|
test_cmp expect err &&
|
|
|
|
cp $tag_dir_prefix/multi_hierarchy/tag-2 $tag_dir_prefix/multi_hierarchy/@ &&
|
|
test_must_fail git refs verify 2>err &&
|
|
cat >expect <<-EOF &&
|
|
error: refs/tags/multi_hierarchy/@: badRefName: invalid refname format
|
|
EOF
|
|
rm $tag_dir_prefix/multi_hierarchy/@ &&
|
|
test_cmp expect err &&
|
|
|
|
cp $tag_dir_prefix/tag-1 $tag_dir_prefix/tag-1.lock &&
|
|
git refs verify 2>err &&
|
|
rm $tag_dir_prefix/tag-1.lock &&
|
|
test_must_be_empty err &&
|
|
|
|
cp $tag_dir_prefix/tag-1 $tag_dir_prefix/.lock &&
|
|
test_must_fail git refs verify 2>err &&
|
|
cat >expect <<-EOF &&
|
|
error: refs/tags/.lock: badRefName: invalid refname format
|
|
EOF
|
|
rm $tag_dir_prefix/.lock &&
|
|
test_cmp expect err
|
|
'
|
|
|
|
test_expect_success 'ref name check should be adapted into fsck messages' '
|
|
test_when_finished "rm -rf repo" &&
|
|
git init repo &&
|
|
branch_dir_prefix=.git/refs/heads &&
|
|
tag_dir_prefix=.git/refs/tags &&
|
|
cd repo &&
|
|
git commit --allow-empty -m initial &&
|
|
git checkout -b branch-1 &&
|
|
git tag tag-1 &&
|
|
git commit --allow-empty -m second &&
|
|
git checkout -b branch-2 &&
|
|
git tag tag-2 &&
|
|
|
|
cp $branch_dir_prefix/branch-1 $branch_dir_prefix/.branch-1 &&
|
|
git -c fsck.badRefName=warn refs verify 2>err &&
|
|
cat >expect <<-EOF &&
|
|
warning: refs/heads/.branch-1: badRefName: invalid refname format
|
|
EOF
|
|
rm $branch_dir_prefix/.branch-1 &&
|
|
test_cmp expect err &&
|
|
|
|
cp $branch_dir_prefix/branch-1 $branch_dir_prefix/@ &&
|
|
git -c fsck.badRefName=ignore refs verify 2>err &&
|
|
test_must_be_empty err
|
|
'
|
|
|
|
test_done
|