]> git.ipfire.org Git - thirdparty/git.git/commitdiff
cat-file tests: test messaging on bad objects/paths
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Tue, 28 Dec 2021 13:28:42 +0000 (14:28 +0100)
committerJunio C Hamano <gitster@pobox.com>
Thu, 30 Dec 2021 21:05:28 +0000 (13:05 -0800)
Add tests for the output that's emitted when we disambiguate
<obj>:<path> in cat-file. This gives us a baseline for improving these
messages.

For e.g. "git blame" we'll emit:

    $ git blame HEAD:foo
    fatal: no such path 'HEAD:foo' in HEAD

But cat-file doesn't disambiguate these two cases, and just gives the
rather unhelpful:

    $ git cat-file --textconv HEAD:foo
    fatal: Not a valid object name HEAD:foo

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t8007-cat-file-textconv.sh

index eacd49ade636f5be6166e05d4e200b9a324073be..71ea2ac987e283e1a26ea8ce184fa043af8c3bfd 100755 (executable)
@@ -19,6 +19,48 @@ test_expect_success 'setup ' '
        GIT_AUTHOR_NAME=Number2 git commit -a -m Second --date="2010-01-01 20:00:00"
 '
 
+test_expect_success 'usage: <bad rev>' '
+       cat >expect <<-\EOF &&
+       fatal: Not a valid object name HEAD2
+       EOF
+       test_must_fail git cat-file --textconv HEAD2 2>actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'usage: <bad rev>:<bad path>' '
+       cat >expect <<-\EOF &&
+       fatal: Not a valid object name HEAD2:two.bin
+       EOF
+       test_must_fail git cat-file --textconv HEAD2:two.bin 2>actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'usage: <rev>:<bad path>' '
+       cat >expect <<-\EOF &&
+       fatal: Not a valid object name HEAD:two.bin
+       EOF
+       test_must_fail git cat-file --textconv HEAD:two.bin 2>actual &&
+       test_cmp expect actual
+'
+
+
+test_expect_success 'usage: <rev> with no <path>' '
+       cat >expect <<-\EOF &&
+       fatal: git cat-file --textconv HEAD: <object> must be <sha1:path>
+       EOF
+       test_must_fail git cat-file --textconv HEAD 2>actual &&
+       test_cmp expect actual
+'
+
+
+test_expect_success 'usage: <bad rev>:<good (in HEAD) path>' '
+       cat >expect <<-\EOF &&
+       fatal: Not a valid object name HEAD2:one.bin
+       EOF
+       test_must_fail git cat-file --textconv HEAD2:one.bin 2>actual &&
+       test_cmp expect actual
+'
+
 cat >expected <<EOF
 bin: test version 2
 EOF