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