From 79c893df5ad31e0fe487b40615d977ad2bf59cc6 Mon Sep 17 00:00:00 2001 From: Claudiu Belu Date: Wed, 15 Jun 2022 15:17:24 +0300 Subject: [PATCH] Replaces path.Operation with filepath.Operation (staging) The path module has a few different functions: Clean, Split, Join, Ext, Dir, Base, IsAbs. These functions do not take into account the OS-specific path separator, meaning that they won't behave as intended on Windows. For example, Dir is supposed to return all but the last element of the path. For the path "C:\some\dir\somewhere", it is supposed to return "C:\some\dir\", however, it returns ".". Instead of these functions, the ones in filepath should be used instead. Kubernetes-commit: 856bb5c8f266f5276f1a576f47be622d7cb384e7 --- tools/clientcmd/api/helpers.go | 5 ++--- tools/clientcmd/config.go | 3 +-- tools/clientcmd/loader_test.go | 19 +++++++++---------- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/tools/clientcmd/api/helpers.go b/tools/clientcmd/api/helpers.go index dd5f9180..261dcacb 100644 --- a/tools/clientcmd/api/helpers.go +++ b/tools/clientcmd/api/helpers.go @@ -21,7 +21,6 @@ import ( "errors" "fmt" "os" - "path" "path/filepath" "reflect" "strings" @@ -115,7 +114,7 @@ func ShortenConfig(config *Config) { // FlattenConfig changes the config object into a self-contained config (useful for making secrets) func FlattenConfig(config *Config) error { for key, authInfo := range config.AuthInfos { - baseDir, err := MakeAbs(path.Dir(authInfo.LocationOfOrigin), "") + baseDir, err := MakeAbs(filepath.Dir(authInfo.LocationOfOrigin), "") if err != nil { return err } @@ -130,7 +129,7 @@ func FlattenConfig(config *Config) error { config.AuthInfos[key] = authInfo } for key, cluster := range config.Clusters { - baseDir, err := MakeAbs(path.Dir(cluster.LocationOfOrigin), "") + baseDir, err := MakeAbs(filepath.Dir(cluster.LocationOfOrigin), "") if err != nil { return err } diff --git a/tools/clientcmd/config.go b/tools/clientcmd/config.go index 31f89631..2cd213cc 100644 --- a/tools/clientcmd/config.go +++ b/tools/clientcmd/config.go @@ -19,7 +19,6 @@ package clientcmd import ( "errors" "os" - "path" "path/filepath" "reflect" "sort" @@ -148,7 +147,7 @@ func NewDefaultPathOptions() *PathOptions { EnvVar: RecommendedConfigPathEnvVar, ExplicitFileFlag: RecommendedConfigPathFlag, - GlobalFileSubpath: path.Join(RecommendedHomeDir, RecommendedFileName), + GlobalFileSubpath: filepath.Join(RecommendedHomeDir, RecommendedFileName), LoadingRules: NewDefaultClientConfigLoadingRules(), } diff --git a/tools/clientcmd/loader_test.go b/tools/clientcmd/loader_test.go index fbc45283..778ef03c 100644 --- a/tools/clientcmd/loader_test.go +++ b/tools/clientcmd/loader_test.go @@ -21,7 +21,6 @@ import ( "flag" "fmt" "os" - "path" "path/filepath" "reflect" "strings" @@ -539,13 +538,13 @@ func TestResolveRelativePaths(t *testing.T) { configDir1, _ := os.MkdirTemp("", "") defer os.RemoveAll(configDir1) - configFile1 := path.Join(configDir1, ".kubeconfig") + configFile1 := filepath.Join(configDir1, ".kubeconfig") configDir1, _ = filepath.Abs(configDir1) configDir2, _ := os.MkdirTemp("", "") defer os.RemoveAll(configDir2) configDir2, _ = os.MkdirTemp(configDir2, "") - configFile2 := path.Join(configDir2, ".kubeconfig") + configFile2 := filepath.Join(configDir2, ".kubeconfig") configDir2, _ = filepath.Abs(configDir2) WriteToFile(pathResolutionConfig1, configFile1) @@ -564,11 +563,11 @@ func TestResolveRelativePaths(t *testing.T) { for key, cluster := range mergedConfig.Clusters { if key == "relative-server-1" { foundClusterCount++ - matchStringArg(path.Join(configDir1, pathResolutionConfig1.Clusters["relative-server-1"].CertificateAuthority), cluster.CertificateAuthority, t) + matchStringArg(filepath.Join(configDir1, pathResolutionConfig1.Clusters["relative-server-1"].CertificateAuthority), cluster.CertificateAuthority, t) } if key == "relative-server-2" { foundClusterCount++ - matchStringArg(path.Join(configDir2, pathResolutionConfig2.Clusters["relative-server-2"].CertificateAuthority), cluster.CertificateAuthority, t) + matchStringArg(filepath.Join(configDir2, pathResolutionConfig2.Clusters["relative-server-2"].CertificateAuthority), cluster.CertificateAuthority, t) } if key == "absolute-server-1" { foundClusterCount++ @@ -587,13 +586,13 @@ func TestResolveRelativePaths(t *testing.T) { for key, authInfo := range mergedConfig.AuthInfos { if key == "relative-user-1" { foundAuthInfoCount++ - matchStringArg(path.Join(configDir1, pathResolutionConfig1.AuthInfos["relative-user-1"].ClientCertificate), authInfo.ClientCertificate, t) - matchStringArg(path.Join(configDir1, pathResolutionConfig1.AuthInfos["relative-user-1"].ClientKey), authInfo.ClientKey, t) + matchStringArg(filepath.Join(configDir1, pathResolutionConfig1.AuthInfos["relative-user-1"].ClientCertificate), authInfo.ClientCertificate, t) + matchStringArg(filepath.Join(configDir1, pathResolutionConfig1.AuthInfos["relative-user-1"].ClientKey), authInfo.ClientKey, t) } if key == "relative-user-2" { foundAuthInfoCount++ - matchStringArg(path.Join(configDir2, pathResolutionConfig2.AuthInfos["relative-user-2"].ClientCertificate), authInfo.ClientCertificate, t) - matchStringArg(path.Join(configDir2, pathResolutionConfig2.AuthInfos["relative-user-2"].ClientKey), authInfo.ClientKey, t) + matchStringArg(filepath.Join(configDir2, pathResolutionConfig2.AuthInfos["relative-user-2"].ClientCertificate), authInfo.ClientCertificate, t) + matchStringArg(filepath.Join(configDir2, pathResolutionConfig2.AuthInfos["relative-user-2"].ClientKey), authInfo.ClientKey, t) } if key == "absolute-user-1" { foundAuthInfoCount++ @@ -607,7 +606,7 @@ func TestResolveRelativePaths(t *testing.T) { } if key == "relative-cmd-1" { foundAuthInfoCount++ - matchStringArg(path.Join(configDir1, pathResolutionConfig1.AuthInfos[key].Exec.Command), authInfo.Exec.Command, t) + matchStringArg(filepath.Join(configDir1, pathResolutionConfig1.AuthInfos[key].Exec.Command), authInfo.Exec.Command, t) } if key == "absolute-cmd-1" { foundAuthInfoCount++