mirror of
https://github.com/git/git
synced 2024-08-27 19:49:21 +00:00
![Jeff King](/assets/img/avatar_default.png)
The git-rev-parse command is a dumping ground for helpers that let scripts make various queries of git. Many of these are conceptually independent of being inside a git repository. With the exception of --parseopt, we do not directly test most of these features in our test suite. Let's give them some basic sanity checks, which reveals that some of them have been broken for some time when run from outside a repository. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
46 lines
1.2 KiB
Bash
Executable file
46 lines
1.2 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
test_description='check that certain rev-parse options work outside repo'
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success 'set up non-repo directory' '
|
|
GIT_CEILING_DIRECTORIES=$(pwd) &&
|
|
export GIT_CEILING_DIRECTORIES &&
|
|
mkdir non-repo &&
|
|
cd non-repo &&
|
|
# confirm that git does not find a repo
|
|
test_must_fail git rev-parse --git-dir
|
|
'
|
|
|
|
# Rather than directly test the output of sq-quote directly,
|
|
# make sure the shell can read back a tricky case, since
|
|
# that's what we really care about anyway.
|
|
tricky="really tricky with \\ and \" and '"
|
|
dump_args () {
|
|
for i in "$@"; do
|
|
echo "arg: $i"
|
|
done
|
|
}
|
|
test_expect_success 'rev-parse --sq-quote' '
|
|
dump_args "$tricky" easy >expect &&
|
|
eval "dump_args $(git rev-parse --sq-quote "$tricky" easy)" >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_failure 'rev-parse --local-env-vars' '
|
|
git rev-parse --local-env-vars >actual &&
|
|
# we do not want to depend on the complete list here,
|
|
# so just look for something plausible
|
|
grep ^GIT_DIR actual
|
|
'
|
|
|
|
test_expect_failure 'rev-parse --resolve-git-dir' '
|
|
git init --separate-git-dir repo dir &&
|
|
test_must_fail git rev-parse --resolve-git-dir . &&
|
|
echo "$(pwd)/repo" >expect &&
|
|
git rev-parse --resolve-git-dir dir/.git >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_done
|