@@ -17,4 +17,95 @@ test_expect_success 'showing a tag that point at a missing object' '
17
17
test_must_fail git --no-pager show foo-tag
18
18
'
19
19
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
+
20
111
test_done
0 commit comments