@@ -17,4 +17,95 @@ test_expect_success 'showing a tag that point at a missing object' '
1717 test_must_fail git --no-pager show foo-tag
1818'
1919
20+ test_expect_success ' set up a bit of history' '
21+ test_commit main1 &&
22+ test_commit main2 &&
23+ test_commit main3 &&
24+ git tag -m "annotated tag" annotated &&
25+ git checkout -b side HEAD^^ &&
26+ test_commit side2 &&
27+ test_commit side3
28+ '
29+
30+ test_expect_success ' showing two commits' '
31+ cat >expect <<-EOF &&
32+ commit $(git rev-parse main2)
33+ commit $(git rev-parse main3)
34+ EOF
35+ git show main2 main3 >actual &&
36+ grep ^commit actual >actual.filtered &&
37+ test_cmp expect actual.filtered
38+ '
39+
40+ test_expect_success ' showing a range walks (linear)' '
41+ cat >expect <<-EOF &&
42+ commit $(git rev-parse main3)
43+ commit $(git rev-parse main2)
44+ EOF
45+ git show main1..main3 >actual &&
46+ grep ^commit actual >actual.filtered &&
47+ test_cmp expect actual.filtered
48+ '
49+
50+ test_expect_success ' showing a range walks (Y shape, ^ first)' '
51+ cat >expect <<-EOF &&
52+ commit $(git rev-parse main3)
53+ commit $(git rev-parse main2)
54+ EOF
55+ git show ^side3 main3 >actual &&
56+ grep ^commit actual >actual.filtered &&
57+ test_cmp expect actual.filtered
58+ '
59+
60+ test_expect_success ' showing a range walks (Y shape, ^ last)' '
61+ cat >expect <<-EOF &&
62+ commit $(git rev-parse main3)
63+ commit $(git rev-parse main2)
64+ EOF
65+ git show main3 ^side3 >actual &&
66+ grep ^commit actual >actual.filtered &&
67+ test_cmp expect actual.filtered
68+ '
69+
70+ test_expect_success ' showing with -N walks' '
71+ cat >expect <<-EOF &&
72+ commit $(git rev-parse main3)
73+ commit $(git rev-parse main2)
74+ EOF
75+ git show -2 main3 >actual &&
76+ grep ^commit actual >actual.filtered &&
77+ test_cmp expect actual.filtered
78+ '
79+
80+ test_expect_success ' showing annotated tag' '
81+ cat >expect <<-EOF &&
82+ tag annotated
83+ commit $(git rev-parse annotated^{commit})
84+ EOF
85+ git show annotated >actual &&
86+ grep -E "^(commit|tag)" actual >actual.filtered &&
87+ test_cmp expect actual.filtered
88+ '
89+
90+ test_expect_success ' showing annotated tag plus commit' '
91+ cat >expect <<-EOF &&
92+ tag annotated
93+ commit $(git rev-parse annotated^{commit})
94+ commit $(git rev-parse side3)
95+ EOF
96+ git show annotated side3 >actual &&
97+ grep -E "^(commit|tag)" actual >actual.filtered &&
98+ test_cmp expect actual.filtered
99+ '
100+
101+ test_expect_success ' showing range' '
102+ cat >expect <<-EOF &&
103+ commit $(git rev-parse main3)
104+ commit $(git rev-parse main2)
105+ EOF
106+ git show ^side3 annotated >actual &&
107+ grep -E "^(commit|tag)" actual >actual.filtered &&
108+ test_cmp expect actual.filtered
109+ '
110+
20111test_done
0 commit comments