288a480621
Mark various "generic" tests as passing when git is compiled with SANITIZE=leak. These tests were subjectively picked from the lists of passing tests since they're all small, and test some generic feature such as wildmatch(), commonly used environment variables, ident parsing etc. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
93 lines
2.1 KiB
Bash
Executable File
93 lines
2.1 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='handling of alternates in environment variables'
|
|
|
|
TEST_PASSES_SANITIZE_LEAK=true
|
|
. ./test-lib.sh
|
|
|
|
check_obj () {
|
|
alt=$1; shift
|
|
while read obj expect
|
|
do
|
|
echo "$obj" >&5 &&
|
|
echo "$obj $expect" >&6
|
|
done 5>input 6>expect &&
|
|
GIT_ALTERNATE_OBJECT_DIRECTORIES=$alt \
|
|
git "$@" cat-file --batch-check='%(objectname) %(objecttype)' \
|
|
<input >actual &&
|
|
test_cmp expect actual
|
|
}
|
|
|
|
test_expect_success 'create alternate repositories' '
|
|
git init --bare one.git &&
|
|
one=$(echo one | git -C one.git hash-object -w --stdin) &&
|
|
git init --bare two.git &&
|
|
two=$(echo two | git -C two.git hash-object -w --stdin)
|
|
'
|
|
|
|
test_expect_success 'objects inaccessible without alternates' '
|
|
check_obj "" <<-EOF
|
|
$one missing
|
|
$two missing
|
|
EOF
|
|
'
|
|
|
|
test_expect_success 'access alternate via absolute path' '
|
|
check_obj "$PWD/one.git/objects" <<-EOF
|
|
$one blob
|
|
$two missing
|
|
EOF
|
|
'
|
|
|
|
test_expect_success 'access multiple alternates' '
|
|
check_obj "$PWD/one.git/objects:$PWD/two.git/objects" <<-EOF
|
|
$one blob
|
|
$two blob
|
|
EOF
|
|
'
|
|
|
|
# bare paths are relative from $GIT_DIR
|
|
test_expect_success 'access alternate via relative path (bare)' '
|
|
git init --bare bare.git &&
|
|
check_obj "../one.git/objects" -C bare.git <<-EOF
|
|
$one blob
|
|
EOF
|
|
'
|
|
|
|
# non-bare paths are relative to top of worktree
|
|
test_expect_success 'access alternate via relative path (worktree)' '
|
|
git init worktree &&
|
|
check_obj "../one.git/objects" -C worktree <<-EOF
|
|
$one blob
|
|
EOF
|
|
'
|
|
|
|
# path is computed after moving to top-level of worktree
|
|
test_expect_success 'access alternate via relative path (subdir)' '
|
|
mkdir subdir &&
|
|
check_obj "one.git/objects" -C subdir <<-EOF
|
|
$one blob
|
|
EOF
|
|
'
|
|
|
|
# set variables outside test to avoid quote insanity; the \057 is '/',
|
|
# which doesn't need quoting, but just confirms that de-quoting
|
|
# is working.
|
|
quoted='"one.git\057objects"'
|
|
unquoted='two.git/objects'
|
|
test_expect_success 'mix of quoted and unquoted alternates' '
|
|
check_obj "$quoted:$unquoted" <<-EOF
|
|
$one blob
|
|
$two blob
|
|
EOF
|
|
'
|
|
|
|
test_expect_success !MINGW 'broken quoting falls back to interpreting raw' '
|
|
mv one.git \"one.git &&
|
|
check_obj \"one.git/objects <<-EOF
|
|
$one blob
|
|
EOF
|
|
'
|
|
|
|
test_done
|