gitea源码

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. // Copyright 2020 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package setting
  4. import (
  5. "testing"
  6. "github.com/stretchr/testify/assert"
  7. )
  8. func Test_getCronSettings(t *testing.T) {
  9. type BaseStruct struct {
  10. Base bool
  11. Second string
  12. }
  13. type Extended struct {
  14. BaseStruct
  15. Extend bool
  16. }
  17. iniStr := `
  18. [cron.test]
  19. BASE = true
  20. SECOND = white rabbit
  21. EXTEND = true
  22. `
  23. cfg, err := NewConfigProviderFromData(iniStr)
  24. assert.NoError(t, err)
  25. extended := &Extended{
  26. BaseStruct: BaseStruct{
  27. Second: "queen of hearts",
  28. },
  29. }
  30. _, err = getCronSettings(cfg, "test", extended)
  31. assert.NoError(t, err)
  32. assert.True(t, extended.Base)
  33. assert.Equal(t, "white rabbit", extended.Second)
  34. assert.True(t, extended.Extend)
  35. }
  36. // Test_getCronSettings2 tests that getCronSettings can not handle two levels of embedding
  37. func Test_getCronSettings2(t *testing.T) {
  38. type BaseStruct struct {
  39. Enabled bool
  40. RunAtStart bool
  41. Schedule string
  42. }
  43. type Extended struct {
  44. BaseStruct
  45. Extend bool
  46. }
  47. type Extended2 struct {
  48. Extended
  49. Third string
  50. }
  51. iniStr := `
  52. [cron.test]
  53. ENABLED = TRUE
  54. RUN_AT_START = TRUE
  55. SCHEDULE = @every 1h
  56. EXTEND = true
  57. THIRD = white rabbit
  58. `
  59. cfg, err := NewConfigProviderFromData(iniStr)
  60. assert.NoError(t, err)
  61. extended := &Extended2{
  62. Extended: Extended{
  63. BaseStruct: BaseStruct{
  64. Enabled: false,
  65. RunAtStart: false,
  66. Schedule: "@every 72h",
  67. },
  68. Extend: false,
  69. },
  70. Third: "black rabbit",
  71. }
  72. _, err = getCronSettings(cfg, "test", extended)
  73. assert.NoError(t, err)
  74. // This confirms the first level of embedding works
  75. assert.Equal(t, "white rabbit", extended.Third)
  76. assert.True(t, extended.Extend)
  77. // This confirms 2 levels of embedding doesn't work
  78. assert.False(t, extended.Enabled)
  79. assert.False(t, extended.RunAtStart)
  80. assert.Equal(t, "@every 72h", extended.Schedule)
  81. }