summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Sunshine <sunshine@sunshineco.com>2016-05-18 16:15:44 -0400
committerJunio C Hamano <gitster@pobox.com>2016-05-18 14:15:10 -0700
commit1dea0dc9e0965e2581cdf64fc9eb072e8d6a88d3 (patch)
tree4704f2a6a48caa260a76e7c58bf96635c25ce4c4
parent1e043cff7815786b3d1a4c07bac63b3d8e1e30ef (diff)
downloadgit-1dea0dc9e0965e2581cdf64fc9eb072e8d6a88d3.tar.gz
t1500: avoid setting configuration options outside of tests
Ideally, each test should be responsible for setting up state it needs rather than relying upon transient global state. Toward this end, teach test_rev_parse() to accept a "-b <value>" option to allow callers to set "core.bare" explicitly or undefine it. Take advantage of this new option to avoid setting "core.bare" outside of tests. Under the hood, "-b <value>" invokes "test_config -C <dir>" (or "test_unconfig -C <dir>"), thus git-config knows explicitly where to find its configuration file. Consequently, the global GIT_CONFIG environment variable required by the manual git-config invocations outside of tests is no longer needed, and is thus dropped. Signed-off-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-xt/t1500-rev-parse.sh39
1 files changed, 20 insertions, 19 deletions
diff --git a/t/t1500-rev-parse.sh b/t/t1500-rev-parse.sh
index d73a52bc38..325d8212cb 100755
--- a/t/t1500-rev-parse.sh
+++ b/t/t1500-rev-parse.sh
@@ -6,10 +6,15 @@ test_description='test git rev-parse'
# usage: [options] label is-bare is-inside-git is-inside-work prefix git-dir
test_rev_parse () {
d=
+ bare=
while :
do
case "$1" in
-C) d="$2"; shift; shift ;;
+ -b) case "$2" in
+ [tfu]*) bare="$2"; shift; shift ;;
+ *) error "test_rev_parse: bogus core.bare value '$2'" ;;
+ esac ;;
-*) error "test_rev_parse: unrecognized option '$1'" ;;
*) break ;;
esac
@@ -27,6 +32,12 @@ test_rev_parse () {
test $# -eq 0 && break
expect="$1"
test_expect_success "$name: $o" '
+ case "$bare" in
+ t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
+ f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
+ u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
+ esac &&
+
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
@@ -49,35 +60,25 @@ test_rev_parse -C .git/objects .git/objects/ false true false '' "$ROOT/.git"
test_rev_parse -C sub/dir subdirectory false false true sub/dir/ "$ROOT/.git"
-git config core.bare true
-test_rev_parse 'core.bare = true' true false false
+test_rev_parse -b t 'core.bare = true' true false false
-git config --unset core.bare
-test_rev_parse 'core.bare undefined' false false true
+test_rev_parse -b u 'core.bare undefined' false false true
GIT_DIR=../.git
-GIT_CONFIG="$(pwd)/work/../.git/config"
-export GIT_DIR GIT_CONFIG
+export GIT_DIR
-git config core.bare false
-test_rev_parse -C work 'GIT_DIR=../.git, core.bare = false' false false true ''
+test_rev_parse -C work -b f 'GIT_DIR=../.git, core.bare = false' false false true ''
-git config core.bare true
-test_rev_parse -C work 'GIT_DIR=../.git, core.bare = true' true false false ''
+test_rev_parse -C work -b t 'GIT_DIR=../.git, core.bare = true' true false false ''
-git config --unset core.bare
-test_rev_parse -C work 'GIT_DIR=../.git, core.bare undefined' false false true ''
+test_rev_parse -C work -b u 'GIT_DIR=../.git, core.bare undefined' false false true ''
GIT_DIR=../repo.git
-GIT_CONFIG="$(pwd)/work/../repo.git/config"
-git config core.bare false
-test_rev_parse -C work 'GIT_DIR=../repo.git, core.bare = false' false false true ''
+test_rev_parse -C work -b f 'GIT_DIR=../repo.git, core.bare = false' false false true ''
-git config core.bare true
-test_rev_parse -C work 'GIT_DIR=../repo.git, core.bare = true' true false false ''
+test_rev_parse -C work -b t 'GIT_DIR=../repo.git, core.bare = true' true false false ''
-git config --unset core.bare
-test_rev_parse -C work 'GIT_DIR=../repo.git, core.bare undefined' false false true ''
+test_rev_parse -C work -b u 'GIT_DIR=../repo.git, core.bare undefined' false false true ''
test_done