1
1
use super :: * ;
2
2
3
- #[ tokio:: test]
4
- async fn deltect_conflict ( ) {
5
- let Test {
6
- repository,
7
- project_id,
8
- controller,
9
- ..
10
- } = & Test :: default ( ) ;
11
-
12
- controller
13
- . set_base_branch ( * project_id, & "refs/remotes/origin/master" . parse ( ) . unwrap ( ) )
14
- . await
15
- . unwrap ( ) ;
16
-
17
- let branch1_id = {
18
- let branch1_id = controller
19
- . create_virtual_branch ( * project_id, & branch:: BranchCreateRequest :: default ( ) )
20
- . await
21
- . unwrap ( ) ;
22
- fs:: write ( repository. path ( ) . join ( "file.txt" ) , "branch one" ) . unwrap ( ) ;
23
-
24
- branch1_id
25
- } ;
26
-
27
- // unapply first vbranch
28
- controller
29
- . convert_to_real_branch ( * project_id, branch1_id, Default :: default ( ) )
30
- . await
31
- . unwrap ( ) ;
32
-
33
- {
34
- // create another vbranch that conflicts with the first one
35
- controller
36
- . create_virtual_branch ( * project_id, & branch:: BranchCreateRequest :: default ( ) )
37
- . await
38
- . unwrap ( ) ;
39
- fs:: write ( repository. path ( ) . join ( "file.txt" ) , "branch two" ) . unwrap ( ) ;
40
- }
41
-
42
- {
43
- assert ! ( matches!(
44
- controller
45
- . apply_virtual_branch( * project_id, branch1_id)
46
- . await
47
- . unwrap_err( )
48
- . downcast_ref( ) ,
49
- Some ( Marker :: ProjectConflict )
50
- ) ) ;
51
- }
52
- }
53
-
54
3
#[ tokio:: test]
55
4
async fn rebase_commit ( ) {
56
5
let Test {
@@ -76,7 +25,7 @@ async fn rebase_commit() {
76
25
. await
77
26
. unwrap ( ) ;
78
27
79
- let branch1_id = {
28
+ let mut branch1_id = {
80
29
// create a branch with some commited work
81
30
let branch1_id = controller
82
31
. create_virtual_branch ( * project_id, & branch:: BranchCreateRequest :: default ( ) )
@@ -99,9 +48,9 @@ async fn rebase_commit() {
99
48
branch1_id
100
49
} ;
101
50
102
- {
51
+ let unapplied_branch = {
103
52
// unapply first vbranch
104
- controller
53
+ let unapplied_branch = controller
105
54
. convert_to_real_branch ( * project_id, branch1_id, Default :: default ( ) )
106
55
. await
107
56
. unwrap ( ) ;
@@ -116,25 +65,18 @@ async fn rebase_commit() {
116
65
) ;
117
66
118
67
let ( branches, _) = controller. list_virtual_branches ( * project_id) . await . unwrap ( ) ;
119
- assert_eq ! ( branches. len( ) , 1 ) ;
120
- assert_eq ! ( branches[ 0 ] . id, branch1_id) ;
121
- assert_eq ! ( branches[ 0 ] . files. len( ) , 0 ) ;
122
- assert_eq ! ( branches[ 0 ] . commits. len( ) , 1 ) ;
123
- assert ! ( !branches[ 0 ] . active) ;
124
- }
68
+ assert_eq ! ( branches. len( ) , 0 ) ;
69
+
70
+ git:: Refname :: from_str ( & unapplied_branch) . unwrap ( )
71
+ } ;
125
72
126
73
{
127
74
// fetch remote
128
75
controller. update_base_branch ( * project_id) . await . unwrap ( ) ;
129
76
130
77
// branch is stil unapplied
131
78
let ( branches, _) = controller. list_virtual_branches ( * project_id) . await . unwrap ( ) ;
132
- assert_eq ! ( branches. len( ) , 1 ) ;
133
- assert_eq ! ( branches[ 0 ] . id, branch1_id) ;
134
- assert_eq ! ( branches[ 0 ] . files. len( ) , 0 ) ;
135
- assert_eq ! ( branches[ 0 ] . commits. len( ) , 1 ) ;
136
- assert ! ( !branches[ 0 ] . active) ;
137
- assert ! ( !branches[ 0 ] . conflicted) ;
79
+ assert_eq ! ( branches. len( ) , 0 ) ;
138
80
139
81
assert_eq ! (
140
82
fs:: read_to_string( repository. path( ) . join( "another_file.txt" ) ) . unwrap( ) ,
@@ -148,8 +90,8 @@ async fn rebase_commit() {
148
90
149
91
{
150
92
// apply first vbranch again
151
- controller
152
- . apply_virtual_branch ( * project_id, branch1_id )
93
+ branch1_id = controller
94
+ . create_virtual_branch_from_branch ( * project_id, & unapplied_branch )
153
95
. await
154
96
. unwrap ( ) ;
155
97
@@ -158,7 +100,7 @@ async fn rebase_commit() {
158
100
assert_eq ! ( branches. len( ) , 1 ) ;
159
101
assert_eq ! ( branches[ 0 ] . id, branch1_id) ;
160
102
assert_eq ! ( branches[ 0 ] . files. len( ) , 0 ) ;
161
- assert_eq ! ( branches[ 0 ] . commits. len( ) , 1 ) ;
103
+ assert_eq ! ( branches[ 0 ] . commits. len( ) , 2 ) ;
162
104
assert ! ( branches[ 0 ] . active) ;
163
105
assert ! ( !branches[ 0 ] . conflicted) ;
164
106
@@ -197,7 +139,7 @@ async fn rebase_work() {
197
139
. await
198
140
. unwrap ( ) ;
199
141
200
- let branch1_id = {
142
+ let mut branch1_id = {
201
143
// make a branch with some work
202
144
let branch1_id = controller
203
145
. create_virtual_branch ( * project_id, & branch:: BranchCreateRequest :: default ( ) )
@@ -215,54 +157,47 @@ async fn rebase_work() {
215
157
branch1_id
216
158
} ;
217
159
218
- {
160
+ let unapplied_branch = {
219
161
// unapply first vbranch
220
- controller
162
+ let unapplied_branch = controller
221
163
. convert_to_real_branch ( * project_id, branch1_id, Default :: default ( ) )
222
164
. await
223
165
. unwrap ( ) ;
224
166
225
167
let ( branches, _) = controller. list_virtual_branches ( * project_id) . await . unwrap ( ) ;
226
- assert_eq ! ( branches. len( ) , 1 ) ;
227
- assert_eq ! ( branches[ 0 ] . id, branch1_id) ;
228
- assert_eq ! ( branches[ 0 ] . files. len( ) , 1 ) ;
229
- assert_eq ! ( branches[ 0 ] . commits. len( ) , 0 ) ;
230
- assert ! ( !branches[ 0 ] . active) ;
168
+ assert_eq ! ( branches. len( ) , 0 ) ;
231
169
232
170
assert ! ( !repository. path( ) . join( "another_file.txt" ) . exists( ) ) ;
233
171
assert ! ( !repository. path( ) . join( "file.txt" ) . exists( ) ) ;
234
- }
172
+
173
+ git:: Refname :: from_str ( & unapplied_branch) . unwrap ( )
174
+ } ;
235
175
236
176
{
237
177
// fetch remote
238
178
controller. update_base_branch ( * project_id) . await . unwrap ( ) ;
239
179
240
180
// first branch is stil unapplied
241
181
let ( branches, _) = controller. list_virtual_branches ( * project_id) . await . unwrap ( ) ;
242
- assert_eq ! ( branches. len( ) , 1 ) ;
243
- assert_eq ! ( branches[ 0 ] . id, branch1_id) ;
244
- assert_eq ! ( branches[ 0 ] . files. len( ) , 1 ) ;
245
- assert_eq ! ( branches[ 0 ] . commits. len( ) , 0 ) ;
246
- assert ! ( !branches[ 0 ] . active) ;
247
- assert ! ( !branches[ 0 ] . conflicted) ;
182
+ assert_eq ! ( branches. len( ) , 0 ) ;
248
183
249
184
assert ! ( !repository. path( ) . join( "another_file.txt" ) . exists( ) ) ;
250
185
assert ! ( repository. path( ) . join( "file.txt" ) . exists( ) ) ;
251
186
}
252
187
253
188
{
254
189
// apply first vbranch again
255
- controller
256
- . apply_virtual_branch ( * project_id, branch1_id )
190
+ branch1_id = controller
191
+ . create_virtual_branch_from_branch ( * project_id, & unapplied_branch )
257
192
. await
258
193
. unwrap ( ) ;
259
194
260
195
// workdir should be rebased, and work should be restored
261
196
let ( branches, _) = controller. list_virtual_branches ( * project_id) . await . unwrap ( ) ;
262
197
assert_eq ! ( branches. len( ) , 1 ) ;
263
198
assert_eq ! ( branches[ 0 ] . id, branch1_id) ;
264
- assert_eq ! ( branches[ 0 ] . files. len( ) , 1 ) ;
265
- assert_eq ! ( branches[ 0 ] . commits. len( ) , 0 ) ;
199
+ assert_eq ! ( branches[ 0 ] . files. len( ) , 0 ) ;
200
+ assert_eq ! ( branches[ 0 ] . commits. len( ) , 1 ) ;
266
201
assert ! ( branches[ 0 ] . active) ;
267
202
assert ! ( !branches[ 0 ] . conflicted) ;
268
203
0 commit comments