@@ -11,6 +11,7 @@ import (
11
11
12
12
actions_model "code.gitea.io/gitea/models/actions"
13
13
"code.gitea.io/gitea/models/db"
14
+ git_model "code.gitea.io/gitea/models/git"
14
15
issues_model "code.gitea.io/gitea/models/issues"
15
16
repo_model "code.gitea.io/gitea/models/repo"
16
17
unit_model "code.gitea.io/gitea/models/unit"
@@ -19,6 +20,7 @@ import (
19
20
actions_module "code.gitea.io/gitea/modules/actions"
20
21
"code.gitea.io/gitea/modules/git"
21
22
pull_service "code.gitea.io/gitea/services/pull"
23
+ release_service "code.gitea.io/gitea/services/release"
22
24
repo_service "code.gitea.io/gitea/services/repository"
23
25
files_service "code.gitea.io/gitea/services/repository/files"
24
26
@@ -194,3 +196,123 @@ func TestPullRequestTargetEvent(t *testing.T) {
194
196
assert .Equal (t , 1 , unittest .GetCount (t , & actions_model.ActionRun {RepoID : baseRepo .ID }))
195
197
})
196
198
}
199
+
200
+ func TestCreateDeleteRefEvent (t * testing.T ) {
201
+ onGiteaRun (t , func (t * testing.T , u * url.URL ) {
202
+ user2 := unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 2 })
203
+
204
+ // create the repo
205
+ repo , err := repo_service .CreateRepository (db .DefaultContext , user2 , user2 , repo_service.CreateRepoOptions {
206
+ Name : "create-delete-ref-event" ,
207
+ Description : "test create delete ref ci event" ,
208
+ AutoInit : true ,
209
+ Gitignores : "Go" ,
210
+ License : "MIT" ,
211
+ Readme : "Default" ,
212
+ DefaultBranch : "main" ,
213
+ IsPrivate : false ,
214
+ })
215
+ assert .NoError (t , err )
216
+ assert .NotEmpty (t , repo )
217
+
218
+ // enable actions
219
+ err = repo_service .UpdateRepositoryUnits (db .DefaultContext , repo , []repo_model.RepoUnit {{
220
+ RepoID : repo .ID ,
221
+ Type : unit_model .TypeActions ,
222
+ }}, nil )
223
+ assert .NoError (t , err )
224
+
225
+ // reload units
226
+ repo .Units = nil
227
+ assert .NoError (t , repo .LoadUnits (db .DefaultContext ))
228
+
229
+ // add workflow file to the repo
230
+ addWorkflowToBaseResp , err := files_service .ChangeRepoFiles (git .DefaultContext , repo , user2 , & files_service.ChangeRepoFilesOptions {
231
+ Files : []* files_service.ChangeRepoFile {
232
+ {
233
+ Operation : "create" ,
234
+ TreePath : ".gitea/workflows/createdelete.yml" ,
235
+ ContentReader : strings .NewReader ("name: test\n on:\n [create,delete]\n jobs:\n test:\n runs-on: ubuntu-latest\n steps:\n - run: echo helloworld\n " ),
236
+ },
237
+ },
238
+ Message : "add workflow" ,
239
+ OldBranch : "main" ,
240
+ NewBranch : "main" ,
241
+ Author : & files_service.IdentityOptions {
242
+ Name : user2 .Name ,
243
+ Email : user2 .Email ,
244
+ },
245
+ Committer : & files_service.IdentityOptions {
246
+ Name : user2 .Name ,
247
+ Email : user2 .Email ,
248
+ },
249
+ Dates : & files_service.CommitDateOptions {
250
+ Author : time .Now (),
251
+ Committer : time .Now (),
252
+ },
253
+ })
254
+ assert .NoError (t , err )
255
+ assert .NotEmpty (t , addWorkflowToBaseResp )
256
+
257
+ // Get the commit ID of the default branch
258
+ gitRepo , err := git .OpenRepository (git .DefaultContext , repo_model .RepoPath (user2 .Name , repo .Name ))
259
+ assert .NoError (t , err )
260
+ defer gitRepo .Close ()
261
+ branch , err := git_model .GetBranch (db .DefaultContext , repo .ID , repo .DefaultBranch )
262
+ assert .NoError (t , err )
263
+
264
+ // create a branch
265
+ err = repo_service .CreateNewBranchFromCommit (db .DefaultContext , user2 , repo , gitRepo , branch .CommitID , "test-create-branch" )
266
+ assert .NoError (t , err )
267
+ run := unittest .AssertExistsAndLoadBean (t , & actions_model.ActionRun {
268
+ Title : "add workflow" ,
269
+ RepoID : repo .ID ,
270
+ Event : "create" ,
271
+ Ref : "refs/heads/test-create-branch" ,
272
+ WorkflowID : "createdelete.yml" ,
273
+ CommitSHA : branch .CommitID ,
274
+ })
275
+ assert .NotNil (t , run )
276
+
277
+ // create a tag
278
+ err = release_service .CreateNewTag (db .DefaultContext , user2 , repo , branch .CommitID , "test-create-tag" , "test create tag event" )
279
+ assert .NoError (t , err )
280
+ run = unittest .AssertExistsAndLoadBean (t , & actions_model.ActionRun {
281
+ Title : "add workflow" ,
282
+ RepoID : repo .ID ,
283
+ Event : "create" ,
284
+ Ref : "refs/tags/test-create-tag" ,
285
+ WorkflowID : "createdelete.yml" ,
286
+ CommitSHA : branch .CommitID ,
287
+ })
288
+ assert .NotNil (t , run )
289
+
290
+ // delete the branch
291
+ err = repo_service .DeleteBranch (db .DefaultContext , user2 , repo , gitRepo , "test-create-branch" )
292
+ assert .NoError (t , err )
293
+ run = unittest .AssertExistsAndLoadBean (t , & actions_model.ActionRun {
294
+ Title : "add workflow" ,
295
+ RepoID : repo .ID ,
296
+ Event : "delete" ,
297
+ Ref : "main" ,
298
+ WorkflowID : "createdelete.yml" ,
299
+ CommitSHA : branch .CommitID ,
300
+ })
301
+ assert .NotNil (t , run )
302
+
303
+ // delete the tag
304
+ tag , err := repo_model .GetRelease (db .DefaultContext , repo .ID , "test-create-tag" )
305
+ assert .NoError (t , err )
306
+ err = release_service .DeleteReleaseByID (db .DefaultContext , repo , tag , user2 , true )
307
+ assert .NoError (t , err )
308
+ run = unittest .AssertExistsAndLoadBean (t , & actions_model.ActionRun {
309
+ Title : "add workflow" ,
310
+ RepoID : repo .ID ,
311
+ Event : "delete" ,
312
+ Ref : "main" ,
313
+ WorkflowID : "createdelete.yml" ,
314
+ CommitSHA : branch .CommitID ,
315
+ })
316
+ assert .NotNil (t , run )
317
+ })
318
+ }
0 commit comments