Skip to content

Commit a4e21fb

Browse files
peffgitster
authored andcommitted
t1515: add tests for rev-parse out-of-repo helpers
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 <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 326e5bc commit a4e21fb

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

t/t1515-rev-parse-outside-repo.sh

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#!/bin/sh
2+
3+
test_description='check that certain rev-parse options work outside repo'
4+
. ./test-lib.sh
5+
6+
test_expect_success 'set up non-repo directory' '
7+
GIT_CEILING_DIRECTORIES=$(pwd) &&
8+
export GIT_CEILING_DIRECTORIES &&
9+
mkdir non-repo &&
10+
cd non-repo &&
11+
# confirm that git does not find a repo
12+
test_must_fail git rev-parse --git-dir
13+
'
14+
15+
# Rather than directly test the output of sq-quote directly,
16+
# make sure the shell can read back a tricky case, since
17+
# that's what we really care about anyway.
18+
tricky="really tricky with \\ and \" and '"
19+
dump_args () {
20+
for i in "$@"; do
21+
echo "arg: $i"
22+
done
23+
}
24+
test_expect_success 'rev-parse --sq-quote' '
25+
dump_args "$tricky" easy >expect &&
26+
eval "dump_args $(git rev-parse --sq-quote "$tricky" easy)" >actual &&
27+
test_cmp expect actual
28+
'
29+
30+
test_expect_failure 'rev-parse --local-env-vars' '
31+
git rev-parse --local-env-vars >actual &&
32+
# we do not want to depend on the complete list here,
33+
# so just look for something plausible
34+
grep ^GIT_DIR actual
35+
'
36+
37+
test_expect_failure 'rev-parse --resolve-git-dir' '
38+
git init --separate-git-dir repo dir &&
39+
test_must_fail git rev-parse --resolve-git-dir . &&
40+
echo "$(pwd)/repo" >expect &&
41+
git rev-parse --resolve-git-dir dir/.git >actual &&
42+
test_cmp expect actual
43+
'
44+
45+
test_done

0 commit comments

Comments
 (0)