loading up the forgejo repo on tangled to test page performance
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Fix `environment-to-ini` inherited key bug (#27543)

Fix #27541

The INI package has a quirk: by default, the keys are inherited.
When maintaining the keys, the newly added sub key should not be
affected by the parent key.

authored by

wxiaoguang and committed by
GitHub
e2e02801 28ead9ea

+28 -1
+2 -1
modules/setting/config_env.go
··· 149 149 continue 150 150 } 151 151 } 152 - key := section.Key(keyName) 152 + key := ConfigSectionKey(section, keyName) 153 153 if key == nil { 154 + changed = true 154 155 key, err = section.NewKey(keyName, keyValue) 155 156 if err != nil { 156 157 log.Error("Error creating key: %s in section: %s with value: %s : %v", keyName, sectionName, keyValue, err)
+26
modules/setting/config_env_test.go
··· 115 115 EnvironmentToConfig(cfg, []string{"GITEA__sec__key__FILE=" + tmpFile}) 116 116 assert.Equal(t, "value-from-file\n", cfg.Section("sec").Key("key").String()) 117 117 } 118 + 119 + func TestEnvironmentToConfigSubSecKey(t *testing.T) { 120 + // the INI package has a quirk: by default, the keys are inherited. 121 + // when maintaining the keys, the newly added sub key should not be affected by the parent key. 122 + cfg, err := NewConfigProviderFromData(` 123 + [sec] 124 + key = some 125 + `) 126 + assert.NoError(t, err) 127 + 128 + changed := EnvironmentToConfig(cfg, []string{"GITEA__sec_0X2E_sub__key=some"}) 129 + assert.True(t, changed) 130 + 131 + tmpFile := t.TempDir() + "/test-sub-sec-key.ini" 132 + defer os.Remove(tmpFile) 133 + err = cfg.SaveTo(tmpFile) 134 + assert.NoError(t, err) 135 + bs, err := os.ReadFile(tmpFile) 136 + assert.NoError(t, err) 137 + assert.Equal(t, `[sec] 138 + key = some 139 + 140 + [sec.sub] 141 + key = some 142 + `, string(bs)) 143 + }