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