gitea源码

commit_status_test.go 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. // Copyright 2024 The Gitea Authors.
  2. // All rights reserved.
  3. // SPDX-License-Identifier: MIT
  4. package pull
  5. import (
  6. "testing"
  7. git_model "code.gitea.io/gitea/models/git"
  8. "code.gitea.io/gitea/modules/commitstatus"
  9. "github.com/stretchr/testify/assert"
  10. )
  11. func TestMergeRequiredContextsCommitStatus(t *testing.T) {
  12. cases := []struct {
  13. commitStatuses []*git_model.CommitStatus
  14. requiredContexts []string
  15. expected commitstatus.CommitStatusState
  16. }{
  17. {
  18. commitStatuses: []*git_model.CommitStatus{},
  19. requiredContexts: []string{},
  20. expected: commitstatus.CommitStatusPending,
  21. },
  22. {
  23. commitStatuses: []*git_model.CommitStatus{
  24. {Context: "Build xxx", State: commitstatus.CommitStatusSkipped},
  25. },
  26. requiredContexts: []string{"Build*"},
  27. expected: commitstatus.CommitStatusSuccess,
  28. },
  29. {
  30. commitStatuses: []*git_model.CommitStatus{
  31. {Context: "Build 1", State: commitstatus.CommitStatusSkipped},
  32. {Context: "Build 2", State: commitstatus.CommitStatusSuccess},
  33. {Context: "Build 3", State: commitstatus.CommitStatusSuccess},
  34. },
  35. requiredContexts: []string{"Build*"},
  36. expected: commitstatus.CommitStatusSuccess,
  37. },
  38. {
  39. commitStatuses: []*git_model.CommitStatus{
  40. {Context: "Build 1", State: commitstatus.CommitStatusSuccess},
  41. {Context: "Build 2", State: commitstatus.CommitStatusSuccess},
  42. {Context: "Build 2t", State: commitstatus.CommitStatusPending},
  43. },
  44. requiredContexts: []string{"Build*", "Build 2t*"},
  45. expected: commitstatus.CommitStatusPending,
  46. },
  47. {
  48. commitStatuses: []*git_model.CommitStatus{
  49. {Context: "Build 1", State: commitstatus.CommitStatusSuccess},
  50. {Context: "Build 2", State: commitstatus.CommitStatusSuccess},
  51. {Context: "Build 2t", State: commitstatus.CommitStatusFailure},
  52. },
  53. requiredContexts: []string{"Build*", "Build 2t*"},
  54. expected: commitstatus.CommitStatusFailure,
  55. },
  56. {
  57. commitStatuses: []*git_model.CommitStatus{
  58. {Context: "Build 1", State: commitstatus.CommitStatusSuccess},
  59. {Context: "Build 2", State: commitstatus.CommitStatusSuccess},
  60. {Context: "Build 2t", State: commitstatus.CommitStatusFailure},
  61. },
  62. requiredContexts: []string{"Build*"},
  63. expected: commitstatus.CommitStatusFailure,
  64. },
  65. {
  66. commitStatuses: []*git_model.CommitStatus{
  67. {Context: "Build 1", State: commitstatus.CommitStatusSuccess},
  68. {Context: "Build 2", State: commitstatus.CommitStatusSuccess},
  69. {Context: "Build 2t", State: commitstatus.CommitStatusSuccess},
  70. },
  71. requiredContexts: []string{"Build*", "Build 2t*", "Build 3*"},
  72. expected: commitstatus.CommitStatusPending,
  73. },
  74. {
  75. commitStatuses: []*git_model.CommitStatus{
  76. {Context: "Build 1", State: commitstatus.CommitStatusSuccess},
  77. {Context: "Build 2", State: commitstatus.CommitStatusSuccess},
  78. {Context: "Build 2t", State: commitstatus.CommitStatusSuccess},
  79. },
  80. requiredContexts: []string{"Build*", "Build *", "Build 2t*", "Build 1*"},
  81. expected: commitstatus.CommitStatusSuccess,
  82. },
  83. }
  84. for i, c := range cases {
  85. assert.Equal(t, c.expected, MergeRequiredContextsCommitStatus(c.commitStatuses, c.requiredContexts), "case %d", i)
  86. }
  87. }