8bfa6bd647
Previously, we set the GIT_CONFIG environment variable in our tests so that only that file was read. However, setting it to a static value is not correct, since we are not necessarily always in the same directory; instead, we want the usual git config file lookup to happen. To do this, we stop setting GIT_CONFIG, which means that we must now suppress the reading of the system-wide and user configs. This exposes an incorrect test in t1500, which is also fixed (the incorrect test worked because we were failing to read the core.bare value from the config file, since the GIT_CONFIG variable was pointing us to the wrong file). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
80 lines
2.0 KiB
Bash
Executable File
80 lines
2.0 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='test git rev-parse'
|
|
. ./test-lib.sh
|
|
|
|
test_rev_parse() {
|
|
name=$1
|
|
shift
|
|
|
|
test_expect_success "$name: is-bare-repository" \
|
|
"test '$1' = \"\$(git rev-parse --is-bare-repository)\""
|
|
shift
|
|
[ $# -eq 0 ] && return
|
|
|
|
test_expect_success "$name: is-inside-git-dir" \
|
|
"test '$1' = \"\$(git rev-parse --is-inside-git-dir)\""
|
|
shift
|
|
[ $# -eq 0 ] && return
|
|
|
|
test_expect_success "$name: is-inside-work-tree" \
|
|
"test '$1' = \"\$(git rev-parse --is-inside-work-tree)\""
|
|
shift
|
|
[ $# -eq 0 ] && return
|
|
|
|
test_expect_success "$name: prefix" \
|
|
"test '$1' = \"\$(git rev-parse --show-prefix)\""
|
|
shift
|
|
[ $# -eq 0 ] && return
|
|
}
|
|
|
|
# label is-bare is-inside-git is-inside-work prefix
|
|
|
|
test_rev_parse toplevel false false true ''
|
|
|
|
cd .git || exit 1
|
|
test_rev_parse .git/ false true false ''
|
|
cd objects || exit 1
|
|
test_rev_parse .git/objects/ false true false ''
|
|
cd ../.. || exit 1
|
|
|
|
mkdir -p sub/dir || exit 1
|
|
cd sub/dir || exit 1
|
|
test_rev_parse subdirectory false false true sub/dir/
|
|
cd ../.. || exit 1
|
|
|
|
git config core.bare true
|
|
test_rev_parse 'core.bare = true' true false false
|
|
|
|
git config --unset core.bare
|
|
test_rev_parse 'core.bare undefined' false false true
|
|
|
|
mkdir work || exit 1
|
|
cd work || exit 1
|
|
export GIT_DIR=../.git
|
|
export GIT_CONFIG="$(pwd)"/../.git/config
|
|
|
|
git config core.bare false
|
|
test_rev_parse 'GIT_DIR=../.git, core.bare = false' false false true ''
|
|
|
|
git config core.bare true
|
|
test_rev_parse 'GIT_DIR=../.git, core.bare = true' true false false ''
|
|
|
|
git config --unset core.bare
|
|
test_rev_parse 'GIT_DIR=../.git, core.bare undefined' false false true ''
|
|
|
|
mv ../.git ../repo.git || exit 1
|
|
export GIT_DIR=../repo.git
|
|
export GIT_CONFIG="$(pwd)"/../repo.git/config
|
|
|
|
git config core.bare false
|
|
test_rev_parse 'GIT_DIR=../repo.git, core.bare = false' false false true ''
|
|
|
|
git config core.bare true
|
|
test_rev_parse 'GIT_DIR=../repo.git, core.bare = true' true false false ''
|
|
|
|
git config --unset core.bare
|
|
test_rev_parse 'GIT_DIR=../repo.git, core.bare undefined' false false true ''
|
|
|
|
test_done
|