gitea源码

actions_test.go 5.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. // Copyright 2022 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package actions
  4. import (
  5. "strings"
  6. "testing"
  7. actions_model "code.gitea.io/gitea/models/actions"
  8. "code.gitea.io/gitea/models/db"
  9. unittest "code.gitea.io/gitea/models/unittest"
  10. act_model "github.com/nektos/act/pkg/model"
  11. "github.com/stretchr/testify/assert"
  12. )
  13. func TestReadWorkflow_WorkflowDispatchConfig(t *testing.T) {
  14. yaml := `
  15. name: local-action-docker-url
  16. `
  17. workflow, err := act_model.ReadWorkflow(strings.NewReader(yaml))
  18. assert.NoError(t, err, "read workflow should succeed")
  19. workflowDispatch := workflowDispatchConfig(workflow)
  20. assert.Nil(t, workflowDispatch)
  21. yaml = `
  22. name: local-action-docker-url
  23. on: push
  24. `
  25. workflow, err = act_model.ReadWorkflow(strings.NewReader(yaml))
  26. assert.NoError(t, err, "read workflow should succeed")
  27. workflowDispatch = workflowDispatchConfig(workflow)
  28. assert.Nil(t, workflowDispatch)
  29. yaml = `
  30. name: local-action-docker-url
  31. on: workflow_dispatch
  32. `
  33. workflow, err = act_model.ReadWorkflow(strings.NewReader(yaml))
  34. assert.NoError(t, err, "read workflow should succeed")
  35. workflowDispatch = workflowDispatchConfig(workflow)
  36. assert.NotNil(t, workflowDispatch)
  37. assert.Nil(t, workflowDispatch.Inputs)
  38. yaml = `
  39. name: local-action-docker-url
  40. on: [push, pull_request]
  41. `
  42. workflow, err = act_model.ReadWorkflow(strings.NewReader(yaml))
  43. assert.NoError(t, err, "read workflow should succeed")
  44. workflowDispatch = workflowDispatchConfig(workflow)
  45. assert.Nil(t, workflowDispatch)
  46. yaml = `
  47. name: local-action-docker-url
  48. on:
  49. push:
  50. pull_request:
  51. `
  52. workflow, err = act_model.ReadWorkflow(strings.NewReader(yaml))
  53. assert.NoError(t, err, "read workflow should succeed")
  54. workflowDispatch = workflowDispatchConfig(workflow)
  55. assert.Nil(t, workflowDispatch)
  56. yaml = `
  57. name: local-action-docker-url
  58. on: [push, workflow_dispatch]
  59. `
  60. workflow, err = act_model.ReadWorkflow(strings.NewReader(yaml))
  61. assert.NoError(t, err, "read workflow should succeed")
  62. workflowDispatch = workflowDispatchConfig(workflow)
  63. assert.NotNil(t, workflowDispatch)
  64. assert.Nil(t, workflowDispatch.Inputs)
  65. yaml = `
  66. name: local-action-docker-url
  67. on:
  68. - push
  69. - workflow_dispatch
  70. `
  71. workflow, err = act_model.ReadWorkflow(strings.NewReader(yaml))
  72. assert.NoError(t, err, "read workflow should succeed")
  73. workflowDispatch = workflowDispatchConfig(workflow)
  74. assert.NotNil(t, workflowDispatch)
  75. assert.Nil(t, workflowDispatch.Inputs)
  76. yaml = `
  77. name: local-action-docker-url
  78. on:
  79. push:
  80. pull_request:
  81. workflow_dispatch:
  82. inputs:
  83. `
  84. workflow, err = act_model.ReadWorkflow(strings.NewReader(yaml))
  85. assert.NoError(t, err, "read workflow should succeed")
  86. workflowDispatch = workflowDispatchConfig(workflow)
  87. assert.NotNil(t, workflowDispatch)
  88. assert.Nil(t, workflowDispatch.Inputs)
  89. yaml = `
  90. name: local-action-docker-url
  91. on:
  92. push:
  93. pull_request:
  94. workflow_dispatch:
  95. inputs:
  96. logLevel:
  97. description: 'Log level'
  98. required: true
  99. default: 'warning'
  100. type: choice
  101. options:
  102. - info
  103. - warning
  104. - debug
  105. boolean_default_true:
  106. description: 'Test scenario tags'
  107. required: true
  108. type: boolean
  109. default: true
  110. boolean_default_false:
  111. description: 'Test scenario tags'
  112. required: true
  113. type: boolean
  114. default: false
  115. `
  116. workflow, err = act_model.ReadWorkflow(strings.NewReader(yaml))
  117. assert.NoError(t, err, "read workflow should succeed")
  118. workflowDispatch = workflowDispatchConfig(workflow)
  119. assert.NotNil(t, workflowDispatch)
  120. assert.Equal(t, WorkflowDispatchInput{
  121. Name: "logLevel",
  122. Default: "warning",
  123. Description: "Log level",
  124. Options: []string{
  125. "info",
  126. "warning",
  127. "debug",
  128. },
  129. Required: true,
  130. Type: "choice",
  131. }, workflowDispatch.Inputs[0])
  132. assert.Equal(t, WorkflowDispatchInput{
  133. Name: "boolean_default_true",
  134. Default: "true",
  135. Description: "Test scenario tags",
  136. Required: true,
  137. Type: "boolean",
  138. }, workflowDispatch.Inputs[1])
  139. assert.Equal(t, WorkflowDispatchInput{
  140. Name: "boolean_default_false",
  141. Default: "false",
  142. Description: "Test scenario tags",
  143. Required: true,
  144. Type: "boolean",
  145. }, workflowDispatch.Inputs[2])
  146. }
  147. func Test_loadIsRefDeleted(t *testing.T) {
  148. unittest.PrepareTestEnv(t)
  149. runs, total, err := db.FindAndCount[actions_model.ActionRun](t.Context(),
  150. actions_model.FindRunOptions{RepoID: 4, Ref: "refs/heads/test"})
  151. assert.NoError(t, err)
  152. assert.Len(t, runs, 1)
  153. assert.EqualValues(t, 1, total)
  154. for _, run := range runs {
  155. assert.False(t, run.IsRefDeleted)
  156. }
  157. assert.NoError(t, loadIsRefDeleted(t.Context(), 4, runs))
  158. for _, run := range runs {
  159. assert.True(t, run.IsRefDeleted)
  160. }
  161. }