diff --git a/pkg/minikube/service/service_test.go b/pkg/minikube/service/service_test.go index 5d589939cab1..7c06be53a0f5 100644 --- a/pkg/minikube/service/service_test.go +++ b/pkg/minikube/service/service_test.go @@ -21,6 +21,7 @@ import ( "context" "fmt" "os" + "path/filepath" "reflect" "strings" "testing" @@ -712,50 +713,49 @@ preferences: {} users: - name: minikube ` - var tests = []struct { - description string - kubeconfigPath string - config string - err bool + tests := []struct { + description string + config string + err bool }{ { - description: "ok", - kubeconfigPath: "/tmp/kube_config", - config: mockK8sConfig, - err: false, + description: "ok", + config: mockK8sConfig, + err: false, }, { - description: "empty config", - kubeconfigPath: "/tmp/kube_config", - config: "", - err: true, + description: "empty config", + config: "", + err: true, }, { - description: "broken config", - kubeconfigPath: "/tmp/kube_config", - config: "this**is&¬: yaml::valid: file", - err: true, + description: "broken config", + config: "this**is&¬: yaml::valid: file", + err: true, }, } for _, test := range tests { t.Run(test.description, func(t *testing.T) { - mockK8sConfigByte := []byte(test.config) - mockK8sConfigPath := test.kubeconfigPath - err := os.WriteFile(mockK8sConfigPath, mockK8sConfigByte, 0644) - defer os.Remove(mockK8sConfigPath) - if err != nil { - t.Fatalf("Unexpected error when writing to file %v. Error: %v", test.kubeconfigPath, err) + // Each sub-test gets its own temp dir & file for isolation and portability. + tmpDir := t.TempDir() + mockK8sConfigPath := filepath.Join(tmpDir, "kube_config") + + // Only write the file if we have any content; an empty string still creates a 0-byte file, + // which is what we want to simulate "empty config". + if err := os.WriteFile(mockK8sConfigPath, []byte(test.config), 0644); err != nil { + t.Fatalf("failed to write kubeconfig: %v", err) } t.Setenv("KUBECONFIG", mockK8sConfigPath) k8s := K8sClientGetter{} - _, err = k8s.GetCoreClient("minikube") + _, err := k8s.GetCoreClient("minikube") + if err != nil && !test.err { t.Fatalf("GetCoreClient returned unexpected error: %v", err) } if err == nil && test.err { - t.Fatal("GetCoreClient expected to return error but got nil") + t.Fatalf("GetCoreClient expected to return error but got nil") } }) }