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