]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t1517: test commands that are designed to be run outside repository
authorJunio C Hamano <gitster@pobox.com>
Mon, 20 May 2024 23:14:31 +0000 (16:14 -0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 21 May 2024 16:05:13 +0000 (09:05 -0700)
A few commands, like "git apply" and "git patch-id", have been
broken with a recent change to stop setting the default hash
algorithm to SHA-1.  Test them and fix them in later commits.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t1517-outside-repo.sh [new file with mode: 0755]

diff --git a/t/t1517-outside-repo.sh b/t/t1517-outside-repo.sh
new file mode 100755 (executable)
index 0000000..389974d
--- /dev/null
@@ -0,0 +1,59 @@
+#!/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_failure '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_failure '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_failure '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_done