@@ -12,16 +12,19 @@ import (
1212
1313 actions_model "code.gitea.io/gitea/models/actions"
1414 "code.gitea.io/gitea/models/db"
15+ git_model "code.gitea.io/gitea/models/git"
1516 issues_model "code.gitea.io/gitea/models/issues"
1617 repo_model "code.gitea.io/gitea/models/repo"
1718 unit_model "code.gitea.io/gitea/models/unit"
1819 "code.gitea.io/gitea/models/unittest"
1920 user_model "code.gitea.io/gitea/models/user"
2021 actions_module "code.gitea.io/gitea/modules/actions"
2122 "code.gitea.io/gitea/modules/git"
23+ "code.gitea.io/gitea/modules/gitrepo"
2224 "code.gitea.io/gitea/modules/setting"
2325 "code.gitea.io/gitea/modules/test"
2426 pull_service "code.gitea.io/gitea/services/pull"
27+ release_service "code.gitea.io/gitea/services/release"
2528 repo_service "code.gitea.io/gitea/services/repository"
2629 files_service "code.gitea.io/gitea/services/repository/files"
2730
@@ -324,3 +327,119 @@ func TestSkipCI(t *testing.T) {
324327 assert .Equal (t , 1 , unittest .GetCount (t , & actions_model.ActionRun {RepoID : repo .ID }))
325328 })
326329}
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