Refactor map field handling for clientcmd.LoadFromFile

pull/6/head
Paul Morie 2015-11-11 14:55:58 -05:00
parent 961a02a602
commit 1cb58baf2f
3 changed files with 36 additions and 4 deletions

View File

@ -240,6 +240,16 @@ func LoadFromFile(filename string) (*clientcmdapi.Config, error) {
config.Contexts[key] = obj
}
if config.AuthInfos == nil {
config.AuthInfos = map[string]*clientcmdapi.AuthInfo{}
}
if config.Clusters == nil {
config.Clusters = map[string]*clientcmdapi.Cluster{}
}
if config.Contexts == nil {
config.Contexts = map[string]*clientcmdapi.Context{}
}
return config, nil
}

View File

@ -174,6 +174,32 @@ func TestConflictingCurrentContext(t *testing.T) {
}
}
func TestLoadingEmptyMaps(t *testing.T) {
configFile, _ := ioutil.TempFile("", "")
defer os.Remove(configFile.Name())
mockConfig := clientcmdapi.Config{
CurrentContext: "any-context-value",
}
WriteToFile(mockConfig, configFile.Name())
config, err := LoadFromFile(configFile.Name())
if err != nil {
t.Errorf("Unexpected error: %v", err)
}
if config.Clusters == nil {
t.Error("expected config.Clusters to be non-nil")
}
if config.AuthInfos == nil {
t.Error("expected config.AuthInfos to be non-nil")
}
if config.Contexts == nil {
t.Error("expected config.Contexts to be non-nil")
}
}
func TestResolveRelativePaths(t *testing.T) {
pathResolutionConfig1 := clientcmdapi.Config{
AuthInfos: map[string]*clientcmdapi.AuthInfo{

View File

@ -430,10 +430,6 @@ func getConfigFromFileOrDie(filename string) *clientcmdapi.Config {
return clientcmdapi.NewConfig()
}
if config.Clusters == nil {
config.Clusters = map[string]*clientcmdapi.Cluster{}
}
return config
}