diff --git a/shared/featureconfig/config.go b/shared/featureconfig/config.go index de781cb91..d8ce81237 100644 --- a/shared/featureconfig/config.go +++ b/shared/featureconfig/config.go @@ -94,8 +94,14 @@ func Init(c *Flags) { // InitWithReset sets the global config and returns function that is used to reset configuration. func InitWithReset(c *Flags) func() { + var prevConfig Flags + if featureConfig != nil { + prevConfig = *featureConfig + } else { + prevConfig = Flags{} + } resetFunc := func() { - Init(&Flags{}) + Init(&prevConfig) } Init(c) return resetFunc diff --git a/shared/featureconfig/config_test.go b/shared/featureconfig/config_test.go index e8909f60e..699d9efb7 100644 --- a/shared/featureconfig/config_test.go +++ b/shared/featureconfig/config_test.go @@ -9,6 +9,7 @@ import ( ) func TestInitFeatureConfig(t *testing.T) { + defer Init(&Flags{}) cfg := &Flags{ MedallaTestnet: true, } @@ -21,6 +22,27 @@ func TestInitFeatureConfig(t *testing.T) { Init(cfg) } +func TestInitWithReset(t *testing.T) { + defer Init(&Flags{}) + Init(&Flags{ + OnyxTestnet: true, + }) + assert.Equal(t, false, Get().AltonaTestnet) + assert.Equal(t, true, Get().OnyxTestnet) + + // Overwrite previously set value (value that didn't come by default). + resetCfg := InitWithReset(&Flags{ + OnyxTestnet: false, + }) + assert.Equal(t, false, Get().AltonaTestnet) + assert.Equal(t, false, Get().OnyxTestnet) + + // Reset must get to previously set configuration (not to default config values). + resetCfg() + assert.Equal(t, false, Get().AltonaTestnet) + assert.Equal(t, true, Get().OnyxTestnet) +} + func TestConfigureBeaconConfig(t *testing.T) { app := cli.App{} set := flag.NewFlagSet("test", 0)