Merge branch 'nd/checkout-option-parsing-fix'
[git] / t / t7007-show.sh
1 #!/bin/sh
2
3 test_description='git show'
4
5 . ./test-lib.sh
6
7 test_expect_success setup '
8         echo hello world >foo &&
9         H=$(git hash-object -w foo) &&
10         git tag -a foo-tag -m "Tags $H" $H &&
11         HH=$(expr "$H" : "\(..\)") &&
12         H38=$(expr "$H" : "..\(.*\)") &&
13         rm -f .git/objects/$HH/$H38
14 '
15
16 test_expect_success 'showing a tag that point at a missing object' '
17         test_must_fail git --no-pager show foo-tag
18 '
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
111 test_expect_success '-s suppresses diff' '
112         echo main3 >expect &&
113         git show -s --format=%s main3 >actual &&
114         test_cmp expect actual
115 '
116
117 test_expect_success '--quiet suppresses diff' '
118         echo main3 >expect &&
119         git show --quiet --format=%s main3 >actual &&
120         test_cmp expect actual
121 '
122
123 test_done