blob: c88063e4942e89bb548c0eff646b7bdd81feae63 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
|
#!/bin/sh
test_description='git refs delete'
. ./test-lib.sh
setup_repo () {
git init "$1" &&
test_commit -C "$1" A &&
test_commit -C "$1" B
}
test_expect_success 'delete without oldvalue verification' '
test_when_finished "rm -rf repo" &&
setup_repo repo &&
(
cd repo &&
A=$(git rev-parse A) &&
git update-ref refs/heads/foo $A &&
git refs delete refs/heads/foo &&
test_must_fail git refs exists refs/heads/foo
)
'
test_expect_success 'delete with matching oldvalue' '
test_when_finished "rm -rf repo" &&
setup_repo repo &&
(
cd repo &&
A=$(git rev-parse A) &&
git update-ref refs/heads/foo $A &&
git refs delete refs/heads/foo $A &&
test_must_fail git refs exists refs/heads/foo
)
'
test_expect_success 'delete with stale oldvalue fails' '
test_when_finished "rm -rf repo" &&
setup_repo repo &&
(
cd repo &&
A=$(git rev-parse A) &&
B=$(git rev-parse B) &&
git update-ref refs/heads/foo $A &&
test_must_fail git refs delete refs/heads/foo $B 2>err &&
test_grep " but expected " err &&
git refs exists refs/heads/foo
)
'
test_expect_success 'delete with null oldvalue fails' '
test_when_finished "rm -rf repo" &&
setup_repo repo &&
(
cd repo &&
A=$(git rev-parse A) &&
git update-ref refs/heads/foo $A &&
test_must_fail git refs delete refs/heads/foo $ZERO_OID 2>err &&
test_grep "null old object ID" err &&
git refs exists refs/heads/foo
)
'
test_expect_success 'delete with invalid oldvalue fails' '
test_when_finished "rm -rf repo" &&
setup_repo repo &&
(
cd repo &&
A=$(git rev-parse A) &&
git update-ref refs/heads/foo $A &&
test_must_fail git refs delete refs/heads/foo invalid-oid 2>err &&
test_grep "invalid old object ID" err &&
git refs exists refs/heads/foo
)
'
test_expect_success 'delete symref with --no-deref leaves target intact' '
test_when_finished "rm -rf repo" &&
setup_repo repo &&
(
cd repo &&
A=$(git rev-parse A) &&
git update-ref refs/heads/foo $A &&
git symbolic-ref refs/heads/symref refs/heads/foo &&
git refs delete --no-deref refs/heads/symref &&
test_must_fail git refs exists refs/heads/symref &&
git refs exists refs/heads/foo
)
'
test_expect_success 'delete symref with --no-deref verifies target OID' '
test_when_finished "rm -rf repo" &&
setup_repo repo &&
(
cd repo &&
A=$(git rev-parse A) &&
B=$(git rev-parse B) &&
git update-ref refs/heads/foo $A &&
git symbolic-ref refs/heads/symref refs/heads/foo &&
test_must_fail git refs delete --no-deref refs/heads/symref $B &&
git refs exists refs/heads/symref &&
git refs delete --no-deref refs/heads/symref $A &&
test_must_fail git refs exists refs/heads/symref &&
git refs exists refs/heads/foo
)
'
test_expect_success 'delete with message records reason in reflog' '
test_when_finished "rm -rf repo" &&
setup_repo repo &&
(
cd repo &&
A=$(git rev-parse A) &&
git update-ref refs/heads/foo $A &&
git symbolic-ref HEAD refs/heads/foo &&
git refs delete --message=delete-reason refs/heads/foo &&
test_must_fail git refs exists refs/heads/foo &&
test-tool ref-store main for-each-reflog-ent HEAD >actual &&
test_grep "delete-reason$" actual
)
'
test_expect_success 'delete with empty message fails' '
test_when_finished "rm -rf repo" &&
setup_repo repo &&
(
cd repo &&
A=$(git rev-parse A) &&
git update-ref refs/heads/foo $A &&
test_must_fail git refs delete --message= refs/heads/foo 2>err &&
test_grep "empty message" err &&
git refs exists refs/heads/foo
)
'
test_expect_success 'delete without arguments fails' '
test_when_finished "rm -rf repo" &&
setup_repo repo &&
test_must_fail git -C repo refs delete 2>err &&
test_grep "requires reference name" err
'
test_expect_success 'delete with too many arguments fails' '
test_when_finished "rm -rf repo" &&
setup_repo repo &&
test_must_fail git refs delete one two three 2>err &&
test_grep "requires reference name" err
'
test_done
|