Skip to content

Commit 74a99aa

Browse files
Allow empty configuration merging (#2432)
* Enable empty configuration merging * Test that a default configuration is correctly deleted * Reset config after every merge test
1 parent bd02844 commit 74a99aa

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

Diff for: commands/daemon/settings.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,13 @@ func (s *ArduinoCoreServerImpl) SettingsMerge(ctx context.Context, req *rpc.Sett
7979
// Set each value individually.
8080
// This is done because Viper ignores empty strings or maps when
8181
// using the MergeConfigMap function.
82+
updatedSettings := configuration.Init("")
8283
for k, v := range mapped {
83-
configuration.Settings.Set(k, v)
84+
updatedSettings.Set(k, v)
8485
}
86+
configPath := configuration.Settings.ConfigFileUsed()
87+
updatedSettings.SetConfigFile(configPath)
88+
configuration.Settings = updatedSettings
8589

8690
return &rpc.SettingsMergeResponse{}, nil
8791
}

Diff for: commands/daemon/settings_test.go

+9
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,13 @@ func TestMerge(t *testing.T) {
8181
require.Equal(t, "", configuration.Settings.GetString("foo"))
8282
require.Equal(t, false, configuration.Settings.GetBool("sketch.always_export_binaries"))
8383

84+
bulkSettings = `{"network": {}}`
85+
res, err = svc.SettingsMerge(context.Background(), &rpc.SettingsMergeRequest{JsonData: bulkSettings})
86+
require.NotNil(t, res)
87+
require.NoError(t, err)
88+
89+
require.Equal(t, "", configuration.Settings.GetString("proxy"))
90+
8491
reset()
8592
}
8693

@@ -113,6 +120,8 @@ func TestGetMergedValue(t *testing.T) {
113120
res, err = svc.SettingsGetValue(context.Background(), key)
114121
require.NoError(t, err)
115122
require.Equal(t, `"bar"`, res.GetJsonData())
123+
124+
reset()
116125
}
117126

118127
func TestGetValueNotFound(t *testing.T) {

0 commit comments

Comments
 (0)