@@ -279,6 +279,44 @@ signer:
279
279
require .Equal (t , "http://yaml-da:26657" , cfgFromViper .DA .Address , "DA.Address should match YAML" )
280
280
require .Equal (t , "file" , cfgFromViper .Signer .SignerType , "Signer.SignerType should match YAML" )
281
281
require .Equal (t , "something/config" , cfgFromViper .Signer .SignerPath , "Signer.SignerPath should match YAML" )
282
+
283
+ // Test that default flag values don't override config values when not explicitly set
284
+ t .Run ("default flag values don't override config when not explicitly set" , func (t * testing.T ) {
285
+ // Create a viper instance that simulates having default values but IsSet() returns false
286
+ flagViper := viper .New ()
287
+ flagViper .Set (FlagRootDir , tempDir )
288
+
289
+ // Create a command and parse empty args to simulate flags with defaults but not explicitly set
290
+ cmd = & cobra.Command {Use : "test" }
291
+ AddFlags (cmd )
292
+ AddGlobalFlags (cmd , "test" )
293
+
294
+ // Bind the flags to viper - this populates viper with default values
295
+ // but since no args were provided, IsSet() will return false for these flags
296
+ err = flagViper .BindPFlags (cmd .Flags ())
297
+ require .NoError (t , err )
298
+ err = flagViper .BindPFlags (cmd .PersistentFlags ())
299
+ require .NoError (t , err )
300
+
301
+ // Parse empty command line - this means all flags have default values but IsSet() = false
302
+ err = cmd .ParseFlags ([]string {})
303
+ require .NoError (t , err )
304
+
305
+ // Sanity check.
306
+ // Verify that IsSet returns false for flag values (this is the key behavior we're testing)
307
+ require .False (t , flagViper .IsSet ("rollkit.node.aggregator" ), "Flag should not be considered 'set' when using default" )
308
+ require .False (t , flagViper .IsSet ("rollkit.node.block_time" ), "Flag should not be considered 'set' when using default" )
309
+ require .False (t , flagViper .IsSet ("rollkit.da.address" ), "Flag should not be considered 'set' when using default" )
310
+
311
+ cfgFromViper , err = LoadFromViper (flagViper )
312
+ require .NoError (t , err )
313
+
314
+ // These values should come from YAML, not be overridden by flag defaults
315
+ require .True (t , cfgFromViper .Node .Aggregator , "Node.Aggregator should remain true from YAML, not overridden by flag default" )
316
+ require .Equal (t , "5s" , cfgFromViper .Node .BlockTime .String (), "Node.BlockTime should remain 5s from YAML, not overridden by flag default" )
317
+ require .Equal (t , "http://yaml-da:26657" , cfgFromViper .DA .Address , "DA.Address should remain from YAML, not overridden by flag default" )
318
+ require .Equal (t , "something/config" , cfgFromViper .Signer .SignerPath , "Signer.SignerPath should remain from YAML, not overridden by flag default" )
319
+ })
282
320
}
283
321
284
322
func TestDAConfig_GetDataNamespace (t * testing.T ) {
0 commit comments