]>
Commit | Line | Data |
---|---|---|
16feb99d NTND |
1 | #!/bin/sh |
2 | ||
3 | test_description='test main ref store api' | |
4 | ||
06d53148 | 5 | GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main |
334afbc7 JS |
6 | export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME |
7 | ||
3e3b9321 | 8 | TEST_PASSES_SANITIZE_LEAK=true |
16feb99d NTND |
9 | . ./test-lib.sh |
10 | ||
65370d81 | 11 | RUN="test-tool ref-store main" |
16feb99d | 12 | |
a50234b3 HWN |
13 | |
14 | test_expect_success 'setup' ' | |
15 | test_commit one | |
16 | ' | |
17 | ||
06d53148 JS |
18 | test_expect_success 'create_symref(FOO, refs/heads/main)' ' |
19 | $RUN create-symref FOO refs/heads/main nothing && | |
20 | echo refs/heads/main >expected && | |
16feb99d NTND |
21 | git symbolic-ref FOO >actual && |
22 | test_cmp expected actual | |
23 | ' | |
24 | ||
25 | test_expect_success 'delete_refs(FOO, refs/tags/new-tag)' ' | |
36a31792 | 26 | git tag -a -m new-tag new-tag HEAD && |
16feb99d NTND |
27 | git rev-parse FOO -- && |
28 | git rev-parse refs/tags/new-tag -- && | |
06d53148 | 29 | m=$(git rev-parse main) && |
93db6eef | 30 | $RUN delete-refs REF_NO_DEREF nothing FOO refs/tags/new-tag && |
09743417 | 31 | test_must_fail git rev-parse --symbolic-full-name FOO && |
16feb99d NTND |
32 | test_must_fail git rev-parse FOO -- && |
33 | test_must_fail git rev-parse refs/tags/new-tag -- | |
34 | ' | |
35 | ||
06d53148 JS |
36 | test_expect_success 'rename_refs(main, new-main)' ' |
37 | git rev-parse main >expected && | |
38 | $RUN rename-ref refs/heads/main refs/heads/new-main && | |
39 | git rev-parse new-main >actual && | |
16feb99d | 40 | test_cmp expected actual && |
06d53148 | 41 | test_commit recreate-main |
16feb99d NTND |
42 | ' |
43 | ||
44 | test_expect_success 'for_each_ref(refs/heads/)' ' | |
64af7752 | 45 | $RUN for-each-ref refs/heads/ | cut -d" " -f 2- >actual && |
16feb99d | 46 | cat >expected <<-\EOF && |
06d53148 JS |
47 | main 0x0 |
48 | new-main 0x0 | |
16feb99d NTND |
49 | EOF |
50 | test_cmp expected actual | |
51 | ' | |
52 | ||
adac8115 | 53 | test_expect_success 'for_each_ref() is sorted' ' |
63477b32 | 54 | $RUN for-each-ref refs/heads/ | cut -d" " -f 2- >actual && |
adac8115 NTND |
55 | sort actual > expected && |
56 | test_cmp expected actual | |
57 | ' | |
58 | ||
06d53148 JS |
59 | test_expect_success 'resolve_ref(new-main)' ' |
60 | SHA1=`git rev-parse new-main` && | |
61 | echo "$SHA1 refs/heads/new-main 0x0" >expected && | |
62 | $RUN resolve-ref refs/heads/new-main 0 >actual && | |
16feb99d NTND |
63 | test_cmp expected actual |
64 | ' | |
65 | ||
06d53148 JS |
66 | test_expect_success 'verify_ref(new-main)' ' |
67 | $RUN verify-ref refs/heads/new-main | |
16feb99d NTND |
68 | ' |
69 | ||
70 | test_expect_success 'for_each_reflog()' ' | |
31f89839 | 71 | $RUN for-each-reflog >actual && |
16feb99d | 72 | cat >expected <<-\EOF && |
31f89839 PS |
73 | HEAD |
74 | refs/heads/main | |
75 | refs/heads/new-main | |
16feb99d NTND |
76 | EOF |
77 | test_cmp expected actual | |
78 | ' | |
79 | ||
80 | test_expect_success 'for_each_reflog_ent()' ' | |
81 | $RUN for-each-reflog-ent HEAD >actual && | |
82 | head -n1 actual | grep one && | |
21f0e850 | 83 | tail -n1 actual | grep recreate-main |
16feb99d NTND |
84 | ' |
85 | ||
86 | test_expect_success 'for_each_reflog_ent_reverse()' ' | |
87 | $RUN for-each-reflog-ent-reverse HEAD >actual && | |
06d53148 | 88 | head -n1 actual | grep recreate-main && |
21f0e850 | 89 | tail -n1 actual | grep one |
16feb99d NTND |
90 | ' |
91 | ||
92 | test_expect_success 'reflog_exists(HEAD)' ' | |
93 | $RUN reflog-exists HEAD | |
94 | ' | |
95 | ||
96 | test_expect_success 'delete_reflog(HEAD)' ' | |
97 | $RUN delete-reflog HEAD && | |
ace40eab | 98 | test_must_fail git reflog exists HEAD |
16feb99d NTND |
99 | ' |
100 | ||
4e8df1a3 | 101 | test_expect_success 'create-reflog(HEAD)' ' |
7b089120 | 102 | $RUN create-reflog HEAD && |
ace40eab | 103 | git reflog exists HEAD |
16feb99d NTND |
104 | ' |
105 | ||
106 | test_expect_success 'delete_ref(refs/heads/foo)' ' | |
107 | git checkout -b foo && | |
108 | FOO_SHA1=`git rev-parse foo` && | |
109 | git checkout --detach && | |
110 | test_commit bar-commit && | |
111 | git checkout -b bar && | |
112 | BAR_SHA1=`git rev-parse bar` && | |
113 | $RUN update-ref updating refs/heads/foo $BAR_SHA1 $FOO_SHA1 0 && | |
114 | echo $BAR_SHA1 >expected && | |
115 | git rev-parse refs/heads/foo >actual && | |
116 | test_cmp expected actual | |
117 | ' | |
118 | ||
119 | test_expect_success 'delete_ref(refs/heads/foo)' ' | |
120 | SHA1=`git rev-parse foo` && | |
121 | git checkout --detach && | |
122 | $RUN delete-ref msg refs/heads/foo $SHA1 0 && | |
123 | test_must_fail git rev-parse refs/heads/foo -- | |
124 | ' | |
125 | ||
126 | test_done |