112 lines
2.8 KiB
Bash
Executable File
112 lines
2.8 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='check random commands outside repo'
|
|
|
|
TEST_PASSES_SANITIZE_LEAK=true
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success 'set up a non-repo directory and test file' '
|
|
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
|
|
) &&
|
|
test_write_lines one two three four >nums &&
|
|
git add nums &&
|
|
cp nums nums.old &&
|
|
test_write_lines five >>nums &&
|
|
git diff >sample.patch
|
|
'
|
|
|
|
test_expect_success 'compute a patch-id outside repository (uses SHA-1)' '
|
|
nongit env GIT_DEFAULT_HASH=sha1 \
|
|
git patch-id <sample.patch >patch-id.expect &&
|
|
nongit \
|
|
git patch-id <sample.patch >patch-id.actual &&
|
|
test_cmp patch-id.expect patch-id.actual
|
|
'
|
|
|
|
test_expect_success 'hash-object outside repository (uses SHA-1)' '
|
|
nongit env GIT_DEFAULT_HASH=sha1 \
|
|
git hash-object --stdin <sample.patch >hash.expect &&
|
|
nongit \
|
|
git hash-object --stdin <sample.patch >hash.actual &&
|
|
test_cmp hash.expect hash.actual
|
|
'
|
|
|
|
test_expect_success 'apply a patch outside repository' '
|
|
(
|
|
cd non-repo &&
|
|
cp ../nums.old nums &&
|
|
git apply ../sample.patch
|
|
) &&
|
|
test_cmp nums non-repo/nums
|
|
'
|
|
|
|
test_expect_success 'grep outside repository' '
|
|
git grep --cached two >expect &&
|
|
(
|
|
cd non-repo &&
|
|
cp ../nums.old nums &&
|
|
git grep --no-index two >../actual
|
|
) &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'imap-send outside repository' '
|
|
test_config_global imap.host imaps://localhost &&
|
|
test_config_global imap.folder Drafts &&
|
|
|
|
echo nothing to send >expect &&
|
|
test_must_fail git imap-send -v </dev/null 2>actual &&
|
|
test_cmp expect actual &&
|
|
|
|
(
|
|
cd non-repo &&
|
|
test_must_fail git imap-send -v </dev/null 2>../actual
|
|
) &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'check-ref-format outside repository' '
|
|
git check-ref-format --branch refs/heads/xyzzy >expect &&
|
|
nongit git check-ref-format --branch refs/heads/xyzzy >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'diff outside repository' '
|
|
echo one >one &&
|
|
echo two >two &&
|
|
test_must_fail git diff --no-index one two >expect.raw &&
|
|
(
|
|
cd non-repo &&
|
|
cp ../one . &&
|
|
cp ../two . &&
|
|
test_must_fail git diff one two >../actual.raw
|
|
) &&
|
|
# outside repository diff falls back to SHA-1 but
|
|
# GIT_DEFAULT_HASH may be set to sha256 on the in-repo side.
|
|
sed -e "/^index /d" expect.raw >expect &&
|
|
sed -e "/^index /d" actual.raw >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'stripspace outside repository' '
|
|
nongit git stripspace -s </dev/null
|
|
'
|
|
|
|
test_expect_success 'remote-http outside repository' '
|
|
test_must_fail git remote-http 2>actual &&
|
|
test_grep "^error: remote-curl" actual &&
|
|
(
|
|
cd non-repo &&
|
|
test_must_fail git remote-http 2>../actual
|
|
) &&
|
|
test_grep "^error: remote-curl" actual
|
|
'
|
|
|
|
test_done
|