]> git.ipfire.org Git - thirdparty/git.git/blob - t/t1513-rev-parse-prefix.sh
branch.c: simplify advice-and-die sequence
[thirdparty/git.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