@@ -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