#!/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 patch-id.expect && nongit \ git patch-id 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 hash.expect && nongit \ git hash-object --stdin 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 actual && test_cmp expect actual && ( cd non-repo && test_must_fail git imap-send -v ../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 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