@@ -41,3 +41,56 @@ EXTEND = true
4141 assert .Equal (t , "white rabbit" , extended .Second )
4242 assert .True (t , extended .Extend )
4343}
44+
45+ // Test_getCronSettings2 tests that getCronSettings can not handle two levels of embedding
46+ func Test_getCronSettings2 (t * testing.T ) {
47+ type BaseStruct struct {
48+ Enabled bool
49+ RunAtStart bool
50+ Schedule string
51+ }
52+
53+ type Extended struct {
54+ BaseStruct
55+ Extend bool
56+ }
57+ type Extended2 struct {
58+ Extended
59+ Third string
60+ }
61+
62+ iniStr := `
63+ [cron.test]
64+ ENABLED = TRUE
65+ RUN_AT_START = TRUE
66+ SCHEDULE = @every 1h
67+ EXTEND = true
68+ THIRD = white rabbit
69+ `
70+ cfg , err := NewConfigProviderFromData (iniStr )
71+ assert .NoError (t , err )
72+
73+ extended := & Extended2 {
74+ Extended : Extended {
75+ BaseStruct : BaseStruct {
76+ Enabled : false ,
77+ RunAtStart : false ,
78+ Schedule : "@every 72h" ,
79+ },
80+ Extend : false ,
81+ },
82+ Third : "black rabbit" ,
83+ }
84+
85+ _ , err = getCronSettings (cfg , "test" , extended )
86+ assert .NoError (t , err )
87+
88+ // This confirms the first level of embedding works
89+ assert .Equal (t , "white rabbit" , extended .Third )
90+ assert .True (t , extended .Extend )
91+
92+ // This confirms 2 levels of embedding doesn't work
93+ assert .False (t , extended .Enabled )
94+ assert .False (t , extended .RunAtStart )
95+ assert .Equal (t , "@every 72h" , extended .Schedule )
96+ }
0 commit comments