#!/bin/sh global test_description := ''git show'' source ./test-lib.sh test_expect_success setup ' echo hello world >foo && H=$(git hash-object -w foo) && git tag -a foo-tag -m "Tags $H" $H && HH=$(expr "$H" : "\(..\)") && H38=$(expr "$H" : "..\(.*\)") && rm -f .git/objects/$HH/$H38 ' test_expect_success 'showing a tag that point at a missing object' ' test_must_fail git --no-pager show foo-tag ' test_expect_success 'set up a bit of history' ' test_commit main1 && test_commit main2 && test_commit main3 && git tag -m "annotated tag" annotated && git checkout -b side HEAD^^ && test_commit side2 && test_commit side3 && test_merge merge main3 ' test_expect_success 'showing two commits' ' cat >expect <<-EOF && commit $(git rev-parse main2) commit $(git rev-parse main3) EOF git show main2 main3 >actual && grep ^commit actual >actual.filtered && test_cmp expect actual.filtered ' test_expect_success 'showing a range walks (linear)' ' cat >expect <<-EOF && commit $(git rev-parse main3) commit $(git rev-parse main2) EOF git show main1..main3 >actual && grep ^commit actual >actual.filtered && test_cmp expect actual.filtered ' test_expect_success 'showing a range walks (Y shape, ^ first)' ' cat >expect <<-EOF && commit $(git rev-parse main3) commit $(git rev-parse main2) EOF git show ^side3 main3 >actual && grep ^commit actual >actual.filtered && test_cmp expect actual.filtered ' test_expect_success 'showing a range walks (Y shape, ^ last)' ' cat >expect <<-EOF && commit $(git rev-parse main3) commit $(git rev-parse main2) EOF git show main3 ^side3 >actual && grep ^commit actual >actual.filtered && test_cmp expect actual.filtered ' test_expect_success 'showing with -N walks' ' cat >expect <<-EOF && commit $(git rev-parse main3) commit $(git rev-parse main2) EOF git show -2 main3 >actual && grep ^commit actual >actual.filtered && test_cmp expect actual.filtered ' test_expect_success 'showing annotated tag' ' cat >expect <<-EOF && tag annotated commit $(git rev-parse annotated^{commit}) EOF git show annotated >actual && grep -E "^(commit|tag)" actual >actual.filtered && test_cmp expect actual.filtered ' test_expect_success 'showing annotated tag plus commit' ' cat >expect <<-EOF && tag annotated commit $(git rev-parse annotated^{commit}) commit $(git rev-parse side3) EOF git show annotated side3 >actual && grep -E "^(commit|tag)" actual >actual.filtered && test_cmp expect actual.filtered ' test_expect_success 'showing range' ' cat >expect <<-EOF && commit $(git rev-parse main3) commit $(git rev-parse main2) EOF git show ^side3 annotated >actual && grep -E "^(commit|tag)" actual >actual.filtered && test_cmp expect actual.filtered ' test_expect_success '-s suppresses diff' ' cat >expect <<-\EOF && merge main3 EOF git show -s --format=%s merge main3 >actual && test_cmp expect actual ' test_expect_success '--quiet suppresses diff' ' echo main3 >expect && git show --quiet --format=%s main3 >actual && test_cmp expect actual ' test_expect_success 'show --graph is forbidden' ' test_must_fail git show --graph HEAD ' test_done (CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"git show">)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(setup)} { (SQ <"\n"> <"\techo hello world >foo &&\n"> <"\tH=$(git hash-object -w foo) &&\n"> <"\tgit tag -a foo-tag -m \"Tags $H\" $H &&\n"> <"\tHH=$(expr \"$H\" : \"\\(..\\)\") &&\n"> <"\tH38=$(expr \"$H\" : \"..\\(.*\\)\") &&\n"> <"\trm -f .git/objects/$HH/$H38\n"> ) } ) (C {(test_expect_success)} {(SQ <"showing a tag that point at a missing object">)} {(SQ <"\n"> <"\ttest_must_fail git --no-pager show foo-tag\n">)} ) (C {(test_expect_success)} {(SQ <"set up a bit of history">)} { (SQ <"\n"> <"\ttest_commit main1 &&\n"> <"\ttest_commit main2 &&\n"> <"\ttest_commit main3 &&\n"> <"\tgit tag -m \"annotated tag\" annotated &&\n"> <"\tgit checkout -b side HEAD^^ &&\n"> <"\ttest_commit side2 &&\n"> <"\ttest_commit side3 &&\n"> <"\ttest_merge merge main3\n"> ) } ) (C {(test_expect_success)} {(SQ <"showing two commits">)} { (SQ <"\n"> <"\tcat >expect <<-EOF &&\n"> <"\tcommit $(git rev-parse main2)\n"> <"\tcommit $(git rev-parse main3)\n"> <"\tEOF\n"> <"\tgit show main2 main3 >actual &&\n"> <"\tgrep ^commit actual >actual.filtered &&\n"> <"\ttest_cmp expect actual.filtered\n"> ) } ) (C {(test_expect_success)} {(SQ <"showing a range walks (linear)">)} { (SQ <"\n"> <"\tcat >expect <<-EOF &&\n"> <"\tcommit $(git rev-parse main3)\n"> <"\tcommit $(git rev-parse main2)\n"> <"\tEOF\n"> <"\tgit show main1..main3 >actual &&\n"> <"\tgrep ^commit actual >actual.filtered &&\n"> <"\ttest_cmp expect actual.filtered\n"> ) } ) (C {(test_expect_success)} {(SQ <"showing a range walks (Y shape, ^ first)">)} { (SQ <"\n"> <"\tcat >expect <<-EOF &&\n"> <"\tcommit $(git rev-parse main3)\n"> <"\tcommit $(git rev-parse main2)\n"> <"\tEOF\n"> <"\tgit show ^side3 main3 >actual &&\n"> <"\tgrep ^commit actual >actual.filtered &&\n"> <"\ttest_cmp expect actual.filtered\n"> ) } ) (C {(test_expect_success)} {(SQ <"showing a range walks (Y shape, ^ last)">)} { (SQ <"\n"> <"\tcat >expect <<-EOF &&\n"> <"\tcommit $(git rev-parse main3)\n"> <"\tcommit $(git rev-parse main2)\n"> <"\tEOF\n"> <"\tgit show main3 ^side3 >actual &&\n"> <"\tgrep ^commit actual >actual.filtered &&\n"> <"\ttest_cmp expect actual.filtered\n"> ) } ) (C {(test_expect_success)} {(SQ <"showing with -N walks">)} { (SQ <"\n"> <"\tcat >expect <<-EOF &&\n"> <"\tcommit $(git rev-parse main3)\n"> <"\tcommit $(git rev-parse main2)\n"> <"\tEOF\n"> <"\tgit show -2 main3 >actual &&\n"> <"\tgrep ^commit actual >actual.filtered &&\n"> <"\ttest_cmp expect actual.filtered\n"> ) } ) (C {(test_expect_success)} {(SQ <"showing annotated tag">)} { (SQ <"\n"> <"\tcat >expect <<-EOF &&\n"> <"\ttag annotated\n"> <"\tcommit $(git rev-parse annotated^{commit})\n"> <"\tEOF\n"> <"\tgit show annotated >actual &&\n"> <"\tgrep -E \"^(commit|tag)\" actual >actual.filtered &&\n"> <"\ttest_cmp expect actual.filtered\n"> ) } ) (C {(test_expect_success)} {(SQ <"showing annotated tag plus commit">)} { (SQ <"\n"> <"\tcat >expect <<-EOF &&\n"> <"\ttag annotated\n"> <"\tcommit $(git rev-parse annotated^{commit})\n"> <"\tcommit $(git rev-parse side3)\n"> <"\tEOF\n"> <"\tgit show annotated side3 >actual &&\n"> <"\tgrep -E \"^(commit|tag)\" actual >actual.filtered &&\n"> <"\ttest_cmp expect actual.filtered\n"> ) } ) (C {(test_expect_success)} {(SQ <"showing range">)} { (SQ <"\n"> <"\tcat >expect <<-EOF &&\n"> <"\tcommit $(git rev-parse main3)\n"> <"\tcommit $(git rev-parse main2)\n"> <"\tEOF\n"> <"\tgit show ^side3 annotated >actual &&\n"> <"\tgrep -E \"^(commit|tag)\" actual >actual.filtered &&\n"> <"\ttest_cmp expect actual.filtered\n"> ) } ) (C {(test_expect_success)} {(SQ <"-s suppresses diff">)} { (SQ <"\n"> <"\tcat >expect <<-\\EOF &&\n"> <"\tmerge\n"> <"\tmain3\n"> <"\tEOF\n"> <"\tgit show -s --format=%s merge main3 >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"--quiet suppresses diff">)} { (SQ <"\n"> <"\techo main3 >expect &&\n"> <"\tgit show --quiet --format=%s main3 >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"show --graph is forbidden">)} {(SQ <"\n"> <" test_must_fail git show --graph HEAD\n">)} ) (C {(test_done)}) ] )