describe: teach --match to handle branches and remotes
[git] / t / t1513-rev-parse-prefix.sh
1 #!/bin/sh
2
3 test_description='Tests for rev-parse --prefix'
4
5 . ./test-lib.sh
6
7 test_expect_success 'setup' '
8         mkdir -p sub1/sub2 &&
9         echo top >top &&
10         echo file1 >sub1/file1 &&
11         echo file2 >sub1/sub2/file2 &&
12         git add top sub1/file1 sub1/sub2/file2 &&
13         git commit -m commit
14 '
15
16 test_expect_success 'empty prefix -- file' '
17         git rev-parse --prefix "" -- top sub1/file1 >actual &&
18         cat <<-\EOF >expected &&
19         --
20         top
21         sub1/file1
22         EOF
23         test_cmp expected actual
24 '
25
26 test_expect_success 'valid prefix -- file' '
27         git rev-parse --prefix sub1/ -- file1 sub2/file2 >actual &&
28         cat <<-\EOF >expected &&
29         --
30         sub1/file1
31         sub1/sub2/file2
32         EOF
33         test_cmp expected actual
34 '
35
36 test_expect_success 'valid prefix -- ../file' '
37         git rev-parse --prefix sub1/ -- ../top sub2/file2 >actual &&
38         cat <<-\EOF >expected &&
39         --
40         sub1/../top
41         sub1/sub2/file2
42         EOF
43         test_cmp expected actual
44 '
45
46 test_expect_success 'empty prefix HEAD:./path' '
47         git rev-parse --prefix "" HEAD:./top >actual &&
48         git rev-parse HEAD:top >expected &&
49         test_cmp expected actual
50 '
51
52 test_expect_success 'valid prefix HEAD:./path' '
53         git rev-parse --prefix sub1/ HEAD:./file1 >actual &&
54         git rev-parse HEAD:sub1/file1 >expected &&
55         test_cmp expected actual
56 '
57
58 test_expect_success 'valid prefix HEAD:../path' '
59         git rev-parse --prefix sub1/ HEAD:../top >actual &&
60         git rev-parse HEAD:top >expected &&
61         test_cmp expected actual
62 '
63
64 test_expect_success 'prefix ignored with HEAD:top' '
65         git rev-parse --prefix sub1/ HEAD:top >actual &&
66         git rev-parse HEAD:top >expected &&
67         test_cmp expected actual
68 '
69
70 test_expect_success 'disambiguate path with valid prefix' '
71         git rev-parse --prefix sub1/ file1 >actual &&
72         cat <<-\EOF >expected &&
73         sub1/file1
74         EOF
75         test_cmp expected actual
76 '
77
78 test_expect_success 'file and refs with prefix' '
79         git rev-parse --prefix sub1/ master file1 >actual &&
80         cat <<-EOF >expected &&
81         $(git rev-parse master)
82         sub1/file1
83         EOF
84         test_cmp expected actual
85 '
86
87 test_expect_success 'two-levels deep' '
88         git rev-parse --prefix sub1/sub2/ -- file2 >actual &&
89         cat <<-\EOF >expected &&
90         --
91         sub1/sub2/file2
92         EOF
93         test_cmp expected actual
94 '
95
96 test_done