@@ -12,16 +12,19 @@ import (
12
12
13
13
actions_model "code.gitea.io/gitea/models/actions"
14
14
"code.gitea.io/gitea/models/db"
15
+ git_model "code.gitea.io/gitea/models/git"
15
16
issues_model "code.gitea.io/gitea/models/issues"
16
17
repo_model "code.gitea.io/gitea/models/repo"
17
18
unit_model "code.gitea.io/gitea/models/unit"
18
19
"code.gitea.io/gitea/models/unittest"
19
20
user_model "code.gitea.io/gitea/models/user"
20
21
actions_module "code.gitea.io/gitea/modules/actions"
21
22
"code.gitea.io/gitea/modules/git"
23
+ "code.gitea.io/gitea/modules/gitrepo"
22
24
"code.gitea.io/gitea/modules/setting"
23
25
"code.gitea.io/gitea/modules/test"
24
26
pull_service "code.gitea.io/gitea/services/pull"
27
+ release_service "code.gitea.io/gitea/services/release"
25
28
repo_service "code.gitea.io/gitea/services/repository"
26
29
files_service "code.gitea.io/gitea/services/repository/files"
27
30
@@ -324,3 +327,119 @@ func TestSkipCI(t *testing.T) {
324
327
assert .Equal (t , 1 , unittest .GetCount (t , & actions_model.ActionRun {RepoID : repo .ID }))
325
328
})
326
329
}
330
+
331
+ func TestCreateDeleteRefEvent (t * testing.T ) {
332
+ onGiteaRun (t , func (t * testing.T , u * url.URL ) {
333
+ user2 := unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 2 })
334
+
335
+ // create the repo
336
+ repo , err := repo_service .CreateRepository (db .DefaultContext , user2 , user2 , repo_service.CreateRepoOptions {
337
+ Name : "create-delete-ref-event" ,
338
+ Description : "test create delete ref ci event" ,
339
+ AutoInit : true ,
340
+ Gitignores : "Go" ,
341
+ License : "MIT" ,
342
+ Readme : "Default" ,
343
+ DefaultBranch : "main" ,
344
+ IsPrivate : false ,
345
+ })
346
+ assert .NoError (t , err )
347
+ assert .NotEmpty (t , repo )
348
+
349
+ // enable actions
350
+ err = repo_service .UpdateRepositoryUnits (db .DefaultContext , repo , []repo_model.RepoUnit {{
351
+ RepoID : repo .ID ,
352
+ Type : unit_model .TypeActions ,
353
+ }}, nil )
354
+ assert .NoError (t , err )
355
+
356
+ // add workflow file to the repo
357
+ addWorkflowToBaseResp , err := files_service .ChangeRepoFiles (git .DefaultContext , repo , user2 , & files_service.ChangeRepoFilesOptions {
358
+ Files : []* files_service.ChangeRepoFile {
359
+ {
360
+ Operation : "create" ,
361
+ TreePath : ".gitea/workflows/createdelete.yml" ,
362
+ 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 " ),
363
+ },
364
+ },
365
+ Message : "add workflow" ,
366
+ OldBranch : "main" ,
367
+ NewBranch : "main" ,
368
+ Author : & files_service.IdentityOptions {
369
+ Name : user2 .Name ,
370
+ Email : user2 .Email ,
371
+ },
372
+ Committer : & files_service.IdentityOptions {
373
+ Name : user2 .Name ,
374
+ Email : user2 .Email ,
375
+ },
376
+ Dates : & files_service.CommitDateOptions {
377
+ Author : time .Now (),
378
+ Committer : time .Now (),
379
+ },
380
+ })
381
+ assert .NoError (t , err )
382
+ assert .NotEmpty (t , addWorkflowToBaseResp )
383
+
384
+ // Get the commit ID of the default branch
385
+ gitRepo , err := gitrepo .OpenRepository (git .DefaultContext , repo )
386
+ assert .NoError (t , err )
387
+ defer gitRepo .Close ()
388
+ branch , err := git_model .GetBranch (db .DefaultContext , repo .ID , repo .DefaultBranch )
389
+ assert .NoError (t , err )
390
+
391
+ // create a branch
392
+ err = repo_service .CreateNewBranchFromCommit (db .DefaultContext , user2 , repo , gitRepo , branch .CommitID , "test-create-branch" )
393
+ assert .NoError (t , err )
394
+ run := unittest .AssertExistsAndLoadBean (t , & actions_model.ActionRun {
395
+ Title : "add workflow" ,
396
+ RepoID : repo .ID ,
397
+ Event : "create" ,
398
+ Ref : "refs/heads/test-create-branch" ,
399
+ WorkflowID : "createdelete.yml" ,
400
+ CommitSHA : branch .CommitID ,
401
+ })
402
+ assert .NotNil (t , run )
403
+
404
+ // create a tag
405
+ err = release_service .CreateNewTag (db .DefaultContext , user2 , repo , branch .CommitID , "test-create-tag" , "test create tag event" )
406
+ assert .NoError (t , err )
407
+ run = unittest .AssertExistsAndLoadBean (t , & actions_model.ActionRun {
408
+ Title : "add workflow" ,
409
+ RepoID : repo .ID ,
410
+ Event : "create" ,
411
+ Ref : "refs/tags/test-create-tag" ,
412
+ WorkflowID : "createdelete.yml" ,
413
+ CommitSHA : branch .CommitID ,
414
+ })
415
+ assert .NotNil (t , run )
416
+
417
+ // delete the branch
418
+ err = repo_service .DeleteBranch (db .DefaultContext , user2 , repo , gitRepo , "test-create-branch" )
419
+ assert .NoError (t , err )
420
+ run = unittest .AssertExistsAndLoadBean (t , & actions_model.ActionRun {
421
+ Title : "add workflow" ,
422
+ RepoID : repo .ID ,
423
+ Event : "delete" ,
424
+ Ref : "main" ,
425
+ WorkflowID : "createdelete.yml" ,
426
+ CommitSHA : branch .CommitID ,
427
+ })
428
+ assert .NotNil (t , run )
429
+
430
+ // delete the tag
431
+ tag , err := repo_model .GetRelease (db .DefaultContext , repo .ID , "test-create-tag" )
432
+ assert .NoError (t , err )
433
+ err = release_service .DeleteReleaseByID (db .DefaultContext , repo , tag , user2 , true )
434
+ assert .NoError (t , err )
435
+ run = unittest .AssertExistsAndLoadBean (t , & actions_model.ActionRun {
436
+ Title : "add workflow" ,
437
+ RepoID : repo .ID ,
438
+ Event : "delete" ,
439
+ Ref : "main" ,
440
+ WorkflowID : "createdelete.yml" ,
441
+ CommitSHA : branch .CommitID ,
442
+ })
443
+ assert .NotNil (t , run )
444
+ })
445
+ }
0 commit comments