mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-22 13:25:36 +03:00
Fix INI parsing for value with trailing slash (#26995)
Fix #26977 (a temp fix)
This commit is contained in:
parent
de68953bac
commit
e7745c94f8
2 changed files with 20 additions and 2 deletions
|
@ -174,9 +174,16 @@ func (s *iniConfigSection) ChildSections() (sections []ConfigSection) {
|
||||||
return sections
|
return sections
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func configProviderLoadOptions() ini.LoadOptions {
|
||||||
|
return ini.LoadOptions{
|
||||||
|
KeyValueDelimiterOnWrite: " = ",
|
||||||
|
IgnoreContinuation: true,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// NewConfigProviderFromData this function is mainly for testing purpose
|
// NewConfigProviderFromData this function is mainly for testing purpose
|
||||||
func NewConfigProviderFromData(configContent string) (ConfigProvider, error) {
|
func NewConfigProviderFromData(configContent string) (ConfigProvider, error) {
|
||||||
cfg, err := ini.Load(strings.NewReader(configContent))
|
cfg, err := ini.LoadSources(configProviderLoadOptions(), strings.NewReader(configContent))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -190,7 +197,7 @@ func NewConfigProviderFromData(configContent string) (ConfigProvider, error) {
|
||||||
// NewConfigProviderFromFile load configuration from file.
|
// NewConfigProviderFromFile load configuration from file.
|
||||||
// NOTE: do not print any log except error.
|
// NOTE: do not print any log except error.
|
||||||
func NewConfigProviderFromFile(file string, extraConfigs ...string) (ConfigProvider, error) {
|
func NewConfigProviderFromFile(file string, extraConfigs ...string) (ConfigProvider, error) {
|
||||||
cfg := ini.Empty(ini.LoadOptions{KeyValueDelimiterOnWrite: " = "})
|
cfg := ini.Empty(configProviderLoadOptions())
|
||||||
loadedFromEmpty := true
|
loadedFromEmpty := true
|
||||||
|
|
||||||
if file != "" {
|
if file != "" {
|
||||||
|
@ -339,6 +346,7 @@ func NewConfigProviderForLocale(source any, others ...any) (ConfigProvider, erro
|
||||||
iniFile, err := ini.LoadSources(ini.LoadOptions{
|
iniFile, err := ini.LoadSources(ini.LoadOptions{
|
||||||
IgnoreInlineComment: true,
|
IgnoreInlineComment: true,
|
||||||
UnescapeValueCommentSymbols: true,
|
UnescapeValueCommentSymbols: true,
|
||||||
|
IgnoreContinuation: true,
|
||||||
}, source, others...)
|
}, source, others...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("unable to load locale ini: %w", err)
|
return nil, fmt.Errorf("unable to load locale ini: %w", err)
|
||||||
|
|
|
@ -30,6 +30,16 @@ key = 123
|
||||||
secSub := cfg.Section("foo.bar.xxx")
|
secSub := cfg.Section("foo.bar.xxx")
|
||||||
assert.Equal(t, "123", secSub.Key("key").String())
|
assert.Equal(t, "123", secSub.Key("key").String())
|
||||||
})
|
})
|
||||||
|
t.Run("TrailingSlash", func(t *testing.T) {
|
||||||
|
cfg, _ := NewConfigProviderFromData(`
|
||||||
|
[foo]
|
||||||
|
key = E:\
|
||||||
|
xxx = yyy
|
||||||
|
`)
|
||||||
|
sec := cfg.Section("foo")
|
||||||
|
assert.Equal(t, "E:\\", sec.Key("key").String())
|
||||||
|
assert.Equal(t, "yyy", sec.Key("xxx").String())
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestConfigProviderHelper(t *testing.T) {
|
func TestConfigProviderHelper(t *testing.T) {
|
||||||
|
|
Loading…
Reference in a new issue