@@ -10,17 +10,21 @@ import (
10
10
"testing"
11
11
"time"
12
12
13
+ "code.gitea.io/gitea/models/actions"
13
14
actions_model "code.gitea.io/gitea/models/actions"
14
15
"code.gitea.io/gitea/models/db"
16
+ git_model "code.gitea.io/gitea/models/git"
15
17
issues_model "code.gitea.io/gitea/models/issues"
16
18
repo_model "code.gitea.io/gitea/models/repo"
17
19
unit_model "code.gitea.io/gitea/models/unit"
18
20
"code.gitea.io/gitea/models/unittest"
19
21
user_model "code.gitea.io/gitea/models/user"
20
22
actions_module "code.gitea.io/gitea/modules/actions"
21
23
"code.gitea.io/gitea/modules/git"
24
+ "code.gitea.io/gitea/modules/gitrepo"
22
25
"code.gitea.io/gitea/modules/setting"
23
26
pull_service "code.gitea.io/gitea/services/pull"
27
+ release_service "code.gitea.io/gitea/services/release"
24
28
repo_service "code.gitea.io/gitea/services/repository"
25
29
files_service "code.gitea.io/gitea/services/repository/files"
26
30
@@ -285,3 +289,123 @@ func TestSkipCI(t *testing.T) {
285
289
assert .Equal (t , 1 , unittest .GetCount (t , & actions_model.ActionRun {RepoID : repo .ID }))
286
290
})
287
291
}
292
+
293
+ func TestCreateDeleteRefEvent (t * testing.T ) {
294
+ onGiteaRun (t , func (t * testing.T , u * url.URL ) {
295
+ user2 := unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 2 })
296
+
297
+ // create the repo
298
+ repo , err := repo_service .CreateRepository (db .DefaultContext , user2 , user2 , repo_service.CreateRepoOptions {
299
+ Name : "create-delete-ref-event" ,
300
+ Description : "test create delete ref ci event" ,
301
+ AutoInit : true ,
302
+ Gitignores : "Go" ,
303
+ License : "MIT" ,
304
+ Readme : "Default" ,
305
+ DefaultBranch : "main" ,
306
+ IsPrivate : false ,
307
+ })
308
+ assert .NoError (t , err )
309
+ assert .NotEmpty (t , repo )
310
+
311
+ // enable actions
312
+ err = repo_service .UpdateRepositoryUnits (db .DefaultContext , repo , []repo_model.RepoUnit {{
313
+ RepoID : repo .ID ,
314
+ Type : unit_model .TypeActions ,
315
+ }}, nil )
316
+ assert .NoError (t , err )
317
+
318
+ // add workflow file to the repo
319
+ addWorkflowToBaseResp , err := files_service .ChangeRepoFiles (git .DefaultContext , repo , user2 , & files_service.ChangeRepoFilesOptions {
320
+ Files : []* files_service.ChangeRepoFile {
321
+ {
322
+ Operation : "create" ,
323
+ TreePath : ".gitea/workflows/createdelete.yml" ,
324
+ 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 " ),
325
+ },
326
+ },
327
+ Message : "add workflow" ,
328
+ OldBranch : "main" ,
329
+ NewBranch : "main" ,
330
+ Author : & files_service.IdentityOptions {
331
+ Name : user2 .Name ,
332
+ Email : user2 .Email ,
333
+ },
334
+ Committer : & files_service.IdentityOptions {
335
+ Name : user2 .Name ,
336
+ Email : user2 .Email ,
337
+ },
338
+ Dates : & files_service.CommitDateOptions {
339
+ Author : time .Now (),
340
+ Committer : time .Now (),
341
+ },
342
+ })
343
+ assert .NoError (t , err )
344
+ assert .NotEmpty (t , addWorkflowToBaseResp )
345
+
346
+ // Get the commit ID of the default branch
347
+ gitRepo , err := gitrepo .OpenRepository (git .DefaultContext , repo )
348
+ assert .NoError (t , err )
349
+ defer gitRepo .Close ()
350
+ branch , err := git_model .GetBranch (db .DefaultContext , repo .ID , repo .DefaultBranch )
351
+ assert .NoError (t , err )
352
+
353
+ // create a branch
354
+ err = repo_service .CreateNewBranchFromCommit (db .DefaultContext , user2 , repo , gitRepo , branch .CommitID , "test-create-branch" )
355
+ assert .NoError (t , err )
356
+ run := unittest .AssertExistsAndLoadBean (t , & actions.ActionRun {
357
+ Title : "add workflow" ,
358
+ Index : 1 ,
359
+ RepoID : repo .ID ,
360
+ Event : "create" ,
361
+ Ref : "refs/heads/test-create-branch" ,
362
+ WorkflowID : "createdelete.yml" ,
363
+ CommitSHA : branch .CommitID ,
364
+ })
365
+ assert .NotNil (t , run )
366
+
367
+ // create a tag
368
+ err = release_service .CreateNewTag (db .DefaultContext , user2 , repo , branch .CommitID , "test-create-tag" , "test create tag event" )
369
+ assert .NoError (t , err )
370
+ run = unittest .AssertExistsAndLoadBean (t , & actions.ActionRun {
371
+ Title : "add workflow" ,
372
+ Index : 2 ,
373
+ RepoID : repo .ID ,
374
+ Event : "create" ,
375
+ Ref : "refs/tags/test-create-tag" ,
376
+ WorkflowID : "createdelete.yml" ,
377
+ CommitSHA : branch .CommitID ,
378
+ })
379
+ assert .NotNil (t , run )
380
+
381
+ // delete the branch
382
+ err = repo_service .DeleteBranch (db .DefaultContext , user2 , repo , gitRepo , "test-create-branch" )
383
+ assert .NoError (t , err )
384
+ run = unittest .AssertExistsAndLoadBean (t , & actions.ActionRun {
385
+ Title : "add workflow" ,
386
+ Index : 3 ,
387
+ RepoID : repo .ID ,
388
+ Event : "delete" ,
389
+ Ref : "main" ,
390
+ WorkflowID : "createdelete.yml" ,
391
+ CommitSHA : branch .CommitID ,
392
+ })
393
+ assert .NotNil (t , run )
394
+
395
+ // delete the tag
396
+ tag , err := repo_model .GetRelease (db .DefaultContext , repo .ID , "test-create-tag" )
397
+ assert .NoError (t , err )
398
+ err = release_service .DeleteReleaseByID (db .DefaultContext , repo , tag , user2 , true )
399
+ assert .NoError (t , err )
400
+ run = unittest .AssertExistsAndLoadBean (t , & actions.ActionRun {
401
+ Title : "add workflow" ,
402
+ Index : 4 ,
403
+ RepoID : repo .ID ,
404
+ Event : "delete" ,
405
+ Ref : "main" ,
406
+ WorkflowID : "createdelete.yml" ,
407
+ CommitSHA : branch .CommitID ,
408
+ })
409
+ assert .NotNil (t , run )
410
+ })
411
+ }
0 commit comments