config: load config file only on first access (closes #1659, closes #2096) (#2147)

This commit is contained in:
Stefan
2018-03-17 12:36:30 +01:00
committed by GitHub
parent e62fe06763
commit 86892467d9
5 changed files with 98 additions and 52 deletions

View File

@@ -27,22 +27,22 @@ func TestCRUD(t *testing.T) {
oldOsStdout := os.Stdout
oldConfigPath := ConfigPath
oldConfig := fs.Config
oldConfigData := configData
oldConfigFile := configFile
oldReadLine := ReadLine
os.Stdout = nil
ConfigPath = path
fs.Config = &fs.ConfigInfo{}
configData = nil
configFile = nil
defer func() {
os.Stdout = oldOsStdout
ConfigPath = oldConfigPath
ReadLine = oldReadLine
fs.Config = oldConfig
configData = oldConfigData
configFile = oldConfigFile
}()
LoadConfig()
assert.Equal(t, []string{}, configData.GetSectionList())
assert.Equal(t, []string{}, getConfigData().GetSectionList())
// Fake a remote
fs.Register(&fs.RegInfo{Name: "config_test_remote"})
@@ -59,25 +59,25 @@ func TestCRUD(t *testing.T) {
}
NewRemote("test")
assert.Equal(t, []string{"test"}, configData.GetSectionList())
assert.Equal(t, []string{"test"}, configFile.GetSectionList())
// Reload the config file to workaround this bug
// https://github.com/Unknwon/goconfig/issues/39
configData, err = loadConfigFile()
configFile, err = loadConfigFile()
require.NoError(t, err)
// normal rename, test → asdf
ReadLine = func() string { return "asdf" }
RenameRemote("test")
assert.Equal(t, []string{"asdf"}, configData.GetSectionList())
assert.Equal(t, []string{"asdf"}, configFile.GetSectionList())
// no-op rename, asdf → asdf
RenameRemote("asdf")
assert.Equal(t, []string{"asdf"}, configData.GetSectionList())
assert.Equal(t, []string{"asdf"}, configFile.GetSectionList())
// delete remote
DeleteRemote("asdf")
assert.Equal(t, []string{}, configData.GetSectionList())
assert.Equal(t, []string{}, configFile.GetSectionList())
}
// Test some error cases