Merge pull request #116656 from HirazawaUi/fik-fd-leaks

Cleanup fd leaks and file removal cleanup
This commit is contained in:
Kubernetes Prow Robot
2023-05-24 22:50:50 -07:00
committed by GitHub
44 changed files with 216 additions and 121 deletions

View File

@@ -26,6 +26,8 @@ import (
"strings" "strings"
"testing" "testing"
utiltesting "k8s.io/client-go/util/testing"
"github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp"
"github.com/lithammer/dedent" "github.com/lithammer/dedent"
"github.com/pkg/errors" "github.com/pkg/errors"
@@ -195,7 +197,7 @@ func TestFileExistingCheck(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("Failed to create file: %v", err) t.Fatalf("Failed to create file: %v", err)
} }
defer os.Remove(f.Name()) defer utiltesting.CloseAndRemove(t, f)
var tests = []struct { var tests = []struct {
name string name string
check FileExistingCheck check FileExistingCheck
@@ -234,7 +236,7 @@ func TestFileAvailableCheck(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("Failed to create file: %v", err) t.Fatalf("Failed to create file: %v", err)
} }
defer os.Remove(f.Name()) defer utiltesting.CloseAndRemove(t, f)
var tests = []struct { var tests = []struct {
name string name string
check FileAvailableCheck check FileAvailableCheck
@@ -461,8 +463,8 @@ func TestConfigRootCAs(t *testing.T) {
if err != nil { if err != nil {
t.Errorf("failed configRootCAs:\n\texpected: succeed creating temp CA file\n\tactual:%v", err) t.Errorf("failed configRootCAs:\n\texpected: succeed creating temp CA file\n\tactual:%v", err)
} }
defer os.Remove(f.Name()) defer utiltesting.CloseAndRemove(t, f)
if err := os.WriteFile(f.Name(), []byte(externalEtcdRootCAFileContent), 0644); err != nil { if _, err := f.Write([]byte(externalEtcdRootCAFileContent)); err != nil {
t.Errorf("failed configRootCAs:\n\texpected: succeed writing contents to temp CA file %s\n\tactual:%v", f.Name(), err) t.Errorf("failed configRootCAs:\n\texpected: succeed writing contents to temp CA file %s\n\tactual:%v", f.Name(), err)
} }
@@ -490,8 +492,8 @@ func TestConfigCertAndKey(t *testing.T) {
err, err,
) )
} }
defer os.Remove(certFile.Name()) defer utiltesting.CloseAndRemove(t, certFile)
if err := os.WriteFile(certFile.Name(), []byte(externalEtcdCertFileContent), 0644); err != nil { if _, err := certFile.Write([]byte(externalEtcdCertFileContent)); err != nil {
t.Errorf( t.Errorf(
"failed configCertAndKey:\n\texpected: succeed writing contents to temp CertFile file %s\n\tactual:%v", "failed configCertAndKey:\n\texpected: succeed writing contents to temp CertFile file %s\n\tactual:%v",
certFile.Name(), certFile.Name(),
@@ -506,8 +508,8 @@ func TestConfigCertAndKey(t *testing.T) {
err, err,
) )
} }
defer os.Remove(keyFile.Name()) defer utiltesting.CloseAndRemove(t, keyFile)
if err := os.WriteFile(keyFile.Name(), []byte(externalEtcdKeyFileContent), 0644); err != nil { if _, err := keyFile.Write([]byte(externalEtcdKeyFileContent)); err != nil {
t.Errorf( t.Errorf(
"failed configCertAndKey:\n\texpected: succeed writing contents to temp KeyFile file %s\n\tactual:%v", "failed configCertAndKey:\n\texpected: succeed writing contents to temp KeyFile file %s\n\tactual:%v",
keyFile.Name(), keyFile.Name(),

View File

@@ -24,6 +24,8 @@ import (
"reflect" "reflect"
"testing" "testing"
utiltesting "k8s.io/client-go/util/testing"
"github.com/pkg/errors" "github.com/pkg/errors"
v1 "k8s.io/api/core/v1" v1 "k8s.io/api/core/v1"
@@ -172,7 +174,7 @@ func TestGetPatchSetsForPathMustBeDirectory(t *testing.T) {
if err != nil { if err != nil {
t.Errorf("error creating temporary file: %v", err) t.Errorf("error creating temporary file: %v", err)
} }
defer os.Remove(tempFile.Name()) defer utiltesting.CloseAndRemove(t, tempFile)
_, _, _, err = getPatchSetsFromPath(tempFile.Name(), testKnownTargets, io.Discard) _, _, _, err = getPatchSetsFromPath(tempFile.Name(), testKnownTargets, io.Discard)
var pathErr *os.PathError var pathErr *os.PathError

View File

@@ -22,6 +22,8 @@ import (
"testing" "testing"
"time" "time"
utiltesting "k8s.io/client-go/util/testing"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config" kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
) )
@@ -320,7 +322,7 @@ providers:
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
defer os.Remove(file.Name()) defer utiltesting.CloseAndRemove(t, file)
_, err = file.WriteString(testcase.configData) _, err = file.WriteString(testcase.configData)
if err != nil { if err != nil {

View File

@@ -25,6 +25,8 @@ import (
"reflect" "reflect"
"testing" "testing"
utiltesting "k8s.io/client-go/util/testing"
"github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp"
certificatesv1 "k8s.io/api/certificates/v1" certificatesv1 "k8s.io/api/certificates/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors" apierrors "k8s.io/apimachinery/pkg/api/errors"
@@ -324,8 +326,8 @@ users:
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
defer os.Remove(f.Name()) defer utiltesting.CloseAndRemove(t, f)
os.WriteFile(f.Name(), testData, os.FileMode(0755)) f.Write(testData)
config, err := loadRESTClientConfig(f.Name()) config, err := loadRESTClientConfig(f.Name())
if err != nil { if err != nil {

View File

@@ -26,6 +26,8 @@ import (
"testing" "testing"
"time" "time"
utiltesting "k8s.io/client-go/util/testing"
v1 "k8s.io/api/core/v1" v1 "k8s.io/api/core/v1"
apitesting "k8s.io/cri-api/pkg/apis/testing" apitesting "k8s.io/cri-api/pkg/apis/testing"
"k8s.io/utils/pointer" "k8s.io/utils/pointer"
@@ -79,7 +81,7 @@ func TestReadLogs(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("unable to create temp file") t.Fatalf("unable to create temp file")
} }
defer os.Remove(file.Name()) defer utiltesting.CloseAndRemove(t, file)
file.WriteString(`{"log":"line1\n","stream":"stdout","time":"2020-09-27T11:18:01.00000000Z"}` + "\n") file.WriteString(`{"log":"line1\n","stream":"stdout","time":"2020-09-27T11:18:01.00000000Z"}` + "\n")
file.WriteString(`{"log":"line2\n","stream":"stdout","time":"2020-09-27T11:18:02.00000000Z"}` + "\n") file.WriteString(`{"log":"line2\n","stream":"stdout","time":"2020-09-27T11:18:02.00000000Z"}` + "\n")
file.WriteString(`{"log":"line3\n","stream":"stdout","time":"2020-09-27T11:18:03.00000000Z"}` + "\n") file.WriteString(`{"log":"line3\n","stream":"stdout","time":"2020-09-27T11:18:03.00000000Z"}` + "\n")

View File

@@ -29,6 +29,8 @@ import (
"testing" "testing"
"time" "time"
utiltesting "k8s.io/client-go/util/testing"
"k8s.io/api/imagepolicy/v1alpha1" "k8s.io/api/imagepolicy/v1alpha1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apiserver/pkg/admission" "k8s.io/apiserver/pkg/admission"
@@ -67,7 +69,7 @@ imagePolicy:
` `
func TestNewFromConfig(t *testing.T) { func TestNewFromConfig(t *testing.T) {
dir, err := ioutil.TempDir("", "") dir, err := os.MkdirTemp("", "")
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -200,8 +202,7 @@ current-context: default
if err != nil { if err != nil {
return err return err
} }
p := tempfile.Name() defer utiltesting.CloseAndRemove(t, tempfile)
defer os.Remove(p)
tmpl, err := template.New("test").Parse(tt.kubeConfigTmpl) tmpl, err := template.New("test").Parse(tt.kubeConfigTmpl)
if err != nil { if err != nil {
@@ -215,8 +216,7 @@ current-context: default
if err != nil { if err != nil {
return err return err
} }
pc := tempconfigfile.Name() defer os.Remove(tempconfigfile.Name())
defer os.Remove(pc)
configTmpl, err := template.New("testconfig").Parse(defaultConfigTmplJSON) configTmpl, err := template.New("testconfig").Parse(defaultConfigTmplJSON)
if err != nil { if err != nil {
@@ -229,7 +229,7 @@ current-context: default
RetryBackoff int RetryBackoff int
DefaultAllow bool DefaultAllow bool
}{ }{
KubeConfig: p, KubeConfig: tempfile.Name(),
AllowTTL: 500, AllowTTL: 500,
DenyTTL: 500, DenyTTL: 500,
RetryBackoff: 500, RetryBackoff: 500,
@@ -240,7 +240,7 @@ current-context: default
} }
// Create a new admission controller // Create a new admission controller
configFile, err := os.Open(pc) configFile, err := os.Open(tempconfigfile.Name())
if err != nil { if err != nil {
return fmt.Errorf("failed to read test config: %v", err) return fmt.Errorf("failed to read test config: %v", err)
} }
@@ -358,13 +358,13 @@ func (m *mockService) HTTPStatusCode() int { return m.statusCode }
// newImagePolicyWebhook creates a temporary kubeconfig file from the provided arguments and attempts to load // newImagePolicyWebhook creates a temporary kubeconfig file from the provided arguments and attempts to load
// a new newImagePolicyWebhook from it. // a new newImagePolicyWebhook from it.
func newImagePolicyWebhook(callbackURL string, clientCert, clientKey, ca []byte, cacheTime time.Duration, defaultAllow bool) (*Plugin, error) { func newImagePolicyWebhook(t *testing.T, callbackURL string, clientCert, clientKey, ca []byte, cacheTime time.Duration, defaultAllow bool) (*Plugin, error) {
tempfile, err := ioutil.TempFile("", "") tempfile, err := ioutil.TempFile("", "")
if err != nil { if err != nil {
return nil, err return nil, err
} }
p := tempfile.Name() p := tempfile.Name()
defer os.Remove(p) defer utiltesting.CloseAndRemove(t, tempfile)
config := v1.Config{ config := v1.Config{
Clusters: []v1.NamedCluster{ Clusters: []v1.NamedCluster{
{ {
@@ -386,7 +386,7 @@ func newImagePolicyWebhook(callbackURL string, clientCert, clientKey, ca []byte,
return nil, err return nil, err
} }
pc := tempconfigfile.Name() pc := tempconfigfile.Name()
defer os.Remove(pc) defer utiltesting.CloseAndRemove(t, tempconfigfile)
configTmpl, err := template.New("testconfig").Parse(defaultConfigTmplYAML) configTmpl, err := template.New("testconfig").Parse(defaultConfigTmplYAML)
if err != nil { if err != nil {
@@ -478,7 +478,7 @@ func TestTLSConfig(t *testing.T) {
} }
defer server.Close() defer server.Close()
wh, err := newImagePolicyWebhook(server.URL, tt.clientCert, tt.clientKey, tt.clientCA, -1, false) wh, err := newImagePolicyWebhook(t, server.URL, tt.clientCert, tt.clientKey, tt.clientCA, -1, false)
if err != nil { if err != nil {
t.Errorf("%s: failed to create client: %v", tt.test, err) t.Errorf("%s: failed to create client: %v", tt.test, err)
return return
@@ -559,7 +559,7 @@ func TestWebhookCache(t *testing.T) {
defer s.Close() defer s.Close()
// Create an admission controller that caches successful responses. // Create an admission controller that caches successful responses.
wh, err := newImagePolicyWebhook(s.URL, clientCert, clientKey, caCert, 200, false) wh, err := newImagePolicyWebhook(t, s.URL, clientCert, clientKey, caCert, 200, false)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -753,7 +753,7 @@ func TestContainerCombinations(t *testing.T) {
} }
defer server.Close() defer server.Close()
wh, err := newImagePolicyWebhook(server.URL, clientCert, clientKey, caCert, 0, false) wh, err := newImagePolicyWebhook(t, server.URL, clientCert, clientKey, caCert, 0, false)
if err != nil { if err != nil {
t.Errorf("%s: failed to create client: %v", tt.test, err) t.Errorf("%s: failed to create client: %v", tt.test, err)
return return
@@ -847,7 +847,7 @@ func TestDefaultAllow(t *testing.T) {
} }
defer server.Close() defer server.Close()
wh, err := newImagePolicyWebhook(server.URL, clientCert, clientKey, caCert, 0, tt.defaultAllow) wh, err := newImagePolicyWebhook(t, server.URL, clientCert, clientKey, caCert, 0, tt.defaultAllow)
if err != nil { if err != nil {
t.Errorf("%s: failed to create client: %v", tt.test, err) t.Errorf("%s: failed to create client: %v", tt.test, err)
return return
@@ -954,7 +954,7 @@ func TestAnnotationFiltering(t *testing.T) {
} }
defer server.Close() defer server.Close()
wh, err := newImagePolicyWebhook(server.URL, clientCert, clientKey, caCert, 0, true) wh, err := newImagePolicyWebhook(t, server.URL, clientCert, clientKey, caCert, 0, true)
if err != nil { if err != nil {
t.Errorf("%s: failed to create client: %v", tt.test, err) t.Errorf("%s: failed to create client: %v", tt.test, err)
return return
@@ -1047,7 +1047,7 @@ func TestReturnedAnnotationAdd(t *testing.T) {
} }
defer server.Close() defer server.Close()
wh, err := newImagePolicyWebhook(server.URL, clientCert, clientKey, caCert, 0, true) wh, err := newImagePolicyWebhook(t, server.URL, clientCert, clientKey, caCert, 0, true)
if err != nil { if err != nil {
t.Errorf("%s: failed to create client: %v", tt.test, err) t.Errorf("%s: failed to create client: %v", tt.test, err)
return return

View File

@@ -23,6 +23,8 @@ import (
"reflect" "reflect"
"testing" "testing"
utiltesting "k8s.io/client-go/util/testing"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apiserver/pkg/apis/apiserver" "k8s.io/apiserver/pkg/apis/apiserver"
) )
@@ -281,7 +283,7 @@ spec:
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
defer os.Remove(f.Name()) defer utiltesting.CloseAndRemove(t, f)
if err := ioutil.WriteFile(f.Name(), []byte(tc.contents), os.FileMode(0755)); err != nil { if err := ioutil.WriteFile(f.Name(), []byte(tc.contents), os.FileMode(0755)); err != nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@@ -704,6 +704,7 @@ func bootstrapTestDir(t *testing.T) string {
// Write the certificate files to disk or fail // Write the certificate files to disk or fail
for fileName, fileData := range files { for fileName, fileData := range files {
if err := ioutil.WriteFile(filepath.Join(dir, fileName), fileData, 0400); err != nil { if err := ioutil.WriteFile(filepath.Join(dir, fileName), fileData, 0400); err != nil {
os.RemoveAll(dir)
t.Fatal(err) t.Fatal(err)
} }
} }
@@ -713,6 +714,10 @@ func bootstrapTestDir(t *testing.T) string {
func newKubeConfigFile(config v1.Config) (string, error) { func newKubeConfigFile(config v1.Config) (string, error) {
configFile, err := ioutil.TempFile("", "") configFile, err := ioutil.TempFile("", "")
if err != nil {
return "", err
}
defer configFile.Close()
if err != nil { if err != nil {
return "", fmt.Errorf("unable to create the Kubernetes client config file: %v", err) return "", fmt.Errorf("unable to create the Kubernetes client config file: %v", err)

View File

@@ -34,6 +34,8 @@ import (
"text/template" "text/template"
"time" "time"
utiltesting "k8s.io/client-go/util/testing"
"github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp"
authorizationv1 "k8s.io/api/authorization/v1" authorizationv1 "k8s.io/api/authorization/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -185,7 +187,7 @@ current-context: default
return err return err
} }
p := tempfile.Name() p := tempfile.Name()
defer os.Remove(p) defer utiltesting.CloseAndRemove(t, tempfile)
tmpl, err := template.New("test").Parse(tt.configTmpl) tmpl, err := template.New("test").Parse(tt.configTmpl)
if err != nil { if err != nil {

View File

@@ -322,7 +322,7 @@ func TestRequestBody(t *testing.T) {
} }
// test error set when failing to read file // test error set when failing to read file
f, err := os.CreateTemp("", "test") f, err := os.CreateTemp("", "")
if err != nil { if err != nil {
t.Fatalf("unable to create temp file") t.Fatalf("unable to create temp file")
} }

View File

@@ -23,6 +23,8 @@ import (
"reflect" "reflect"
"testing" "testing"
utiltesting "k8s.io/client-go/util/testing"
"sigs.k8s.io/yaml" "sigs.k8s.io/yaml"
) )
@@ -53,11 +55,9 @@ func newMergedConfig(certFile, certContent, keyFile, keyContent, caFile, caConte
func TestMinifySuccess(t *testing.T) { func TestMinifySuccess(t *testing.T) {
certFile, _ := os.CreateTemp("", "") certFile, _ := os.CreateTemp("", "")
defer os.Remove(certFile.Name())
keyFile, _ := os.CreateTemp("", "") keyFile, _ := os.CreateTemp("", "")
defer os.Remove(keyFile.Name())
caFile, _ := os.CreateTemp("", "") caFile, _ := os.CreateTemp("", "")
defer os.Remove(caFile.Name()) defer utiltesting.CloseAndRemove(t, certFile, keyFile, caFile)
mutatingConfig := newMergedConfig(certFile.Name(), "cert", keyFile.Name(), "key", caFile.Name(), "ca", t) mutatingConfig := newMergedConfig(certFile.Name(), "cert", keyFile.Name(), "key", caFile.Name(), "ca", t)
@@ -89,11 +89,9 @@ func TestMinifySuccess(t *testing.T) {
func TestMinifyMissingContext(t *testing.T) { func TestMinifyMissingContext(t *testing.T) {
certFile, _ := os.CreateTemp("", "") certFile, _ := os.CreateTemp("", "")
defer os.Remove(certFile.Name())
keyFile, _ := os.CreateTemp("", "") keyFile, _ := os.CreateTemp("", "")
defer os.Remove(keyFile.Name())
caFile, _ := os.CreateTemp("", "") caFile, _ := os.CreateTemp("", "")
defer os.Remove(caFile.Name()) defer utiltesting.CloseAndRemove(t, certFile, keyFile, caFile)
mutatingConfig := newMergedConfig(certFile.Name(), "cert", keyFile.Name(), "key", caFile.Name(), "ca", t) mutatingConfig := newMergedConfig(certFile.Name(), "cert", keyFile.Name(), "key", caFile.Name(), "ca", t)
mutatingConfig.CurrentContext = "missing" mutatingConfig.CurrentContext = "missing"
@@ -107,11 +105,9 @@ func TestMinifyMissingContext(t *testing.T) {
func TestMinifyMissingCluster(t *testing.T) { func TestMinifyMissingCluster(t *testing.T) {
certFile, _ := os.CreateTemp("", "") certFile, _ := os.CreateTemp("", "")
defer os.Remove(certFile.Name())
keyFile, _ := os.CreateTemp("", "") keyFile, _ := os.CreateTemp("", "")
defer os.Remove(keyFile.Name())
caFile, _ := os.CreateTemp("", "") caFile, _ := os.CreateTemp("", "")
defer os.Remove(caFile.Name()) defer utiltesting.CloseAndRemove(t, certFile, keyFile, caFile)
mutatingConfig := newMergedConfig(certFile.Name(), "cert", keyFile.Name(), "key", caFile.Name(), "ca", t) mutatingConfig := newMergedConfig(certFile.Name(), "cert", keyFile.Name(), "key", caFile.Name(), "ca", t)
delete(mutatingConfig.Clusters, mutatingConfig.Contexts[mutatingConfig.CurrentContext].Cluster) delete(mutatingConfig.Clusters, mutatingConfig.Contexts[mutatingConfig.CurrentContext].Cluster)
@@ -125,11 +121,9 @@ func TestMinifyMissingCluster(t *testing.T) {
func TestMinifyMissingAuthInfo(t *testing.T) { func TestMinifyMissingAuthInfo(t *testing.T) {
certFile, _ := os.CreateTemp("", "") certFile, _ := os.CreateTemp("", "")
defer os.Remove(certFile.Name())
keyFile, _ := os.CreateTemp("", "") keyFile, _ := os.CreateTemp("", "")
defer os.Remove(keyFile.Name())
caFile, _ := os.CreateTemp("", "") caFile, _ := os.CreateTemp("", "")
defer os.Remove(caFile.Name()) defer utiltesting.CloseAndRemove(t, certFile, keyFile, caFile)
mutatingConfig := newMergedConfig(certFile.Name(), "cert", keyFile.Name(), "key", caFile.Name(), "ca", t) mutatingConfig := newMergedConfig(certFile.Name(), "cert", keyFile.Name(), "key", caFile.Name(), "ca", t)
delete(mutatingConfig.AuthInfos, mutatingConfig.Contexts[mutatingConfig.CurrentContext].AuthInfo) delete(mutatingConfig.AuthInfos, mutatingConfig.Contexts[mutatingConfig.CurrentContext].AuthInfo)
@@ -143,11 +137,9 @@ func TestMinifyMissingAuthInfo(t *testing.T) {
func TestFlattenSuccess(t *testing.T) { func TestFlattenSuccess(t *testing.T) {
certFile, _ := os.CreateTemp("", "") certFile, _ := os.CreateTemp("", "")
defer os.Remove(certFile.Name())
keyFile, _ := os.CreateTemp("", "") keyFile, _ := os.CreateTemp("", "")
defer os.Remove(keyFile.Name())
caFile, _ := os.CreateTemp("", "") caFile, _ := os.CreateTemp("", "")
defer os.Remove(caFile.Name()) defer utiltesting.CloseAndRemove(t, certFile, keyFile, caFile)
certData := "cert" certData := "cert"
keyData := "key" keyData := "key"
@@ -208,11 +200,9 @@ func TestFlattenSuccess(t *testing.T) {
func Example_minifyAndShorten() { func Example_minifyAndShorten() {
certFile, _ := os.CreateTemp("", "") certFile, _ := os.CreateTemp("", "")
defer os.Remove(certFile.Name())
keyFile, _ := os.CreateTemp("", "") keyFile, _ := os.CreateTemp("", "")
defer os.Remove(keyFile.Name())
caFile, _ := os.CreateTemp("", "") caFile, _ := os.CreateTemp("", "")
defer os.Remove(caFile.Name()) defer utiltesting.CloseAndRemove(&testing.T{}, certFile, keyFile, caFile)
certData := "cert" certData := "cert"
keyData := "key" keyData := "key"
@@ -245,11 +235,9 @@ func Example_minifyAndShorten() {
func TestShortenSuccess(t *testing.T) { func TestShortenSuccess(t *testing.T) {
certFile, _ := os.CreateTemp("", "") certFile, _ := os.CreateTemp("", "")
defer os.Remove(certFile.Name())
keyFile, _ := os.CreateTemp("", "") keyFile, _ := os.CreateTemp("", "")
defer os.Remove(keyFile.Name())
caFile, _ := os.CreateTemp("", "") caFile, _ := os.CreateTemp("", "")
defer os.Remove(caFile.Name()) defer utiltesting.CloseAndRemove(t, certFile, keyFile, caFile)
certData := "cert" certData := "cert"
keyData := "key" keyData := "key"

View File

@@ -22,6 +22,8 @@ import (
"strings" "strings"
"testing" "testing"
utiltesting "k8s.io/client-go/util/testing"
"github.com/imdario/mergo" "github.com/imdario/mergo"
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
@@ -177,7 +179,7 @@ func TestCAOverridesCAData(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("could not create tempfile: %v", err) t.Fatalf("could not create tempfile: %v", err)
} }
defer os.Remove(file.Name()) defer utiltesting.CloseAndRemove(t, file)
config := createCAValidTestConfig() config := createCAValidTestConfig()
clientBuilder := NewNonInteractiveClientConfig(*config, "clean", &ConfigOverrides{ clientBuilder := NewNonInteractiveClientConfig(*config, "clean", &ConfigOverrides{
@@ -312,8 +314,7 @@ func TestModifyContext(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
defer os.Remove(tempPath.Name()) defer utiltesting.CloseAndRemove(t, tempPath)
pathOptions := NewDefaultPathOptions() pathOptions := NewDefaultPathOptions()
config := createValidTestConfig() config := createValidTestConfig()
@@ -498,7 +499,7 @@ func TestBasicTokenFile(t *testing.T) {
t.Errorf("Unexpected error: %v", err) t.Errorf("Unexpected error: %v", err)
return return
} }
defer os.Remove(f.Name()) defer utiltesting.CloseAndRemove(t, f)
if err := os.WriteFile(f.Name(), []byte(token), 0644); err != nil { if err := os.WriteFile(f.Name(), []byte(token), 0644); err != nil {
t.Errorf("Unexpected error: %v", err) t.Errorf("Unexpected error: %v", err)
return return
@@ -534,7 +535,7 @@ func TestPrecedenceTokenFile(t *testing.T) {
t.Errorf("Unexpected error: %v", err) t.Errorf("Unexpected error: %v", err)
return return
} }
defer os.Remove(f.Name()) defer utiltesting.CloseAndRemove(t, f)
if err := os.WriteFile(f.Name(), []byte(token), 0644); err != nil { if err := os.WriteFile(f.Name(), []byte(token), 0644); err != nil {
t.Errorf("Unexpected error: %v", err) t.Errorf("Unexpected error: %v", err)
return return
@@ -923,7 +924,7 @@ users:
if err != nil { if err != nil {
t.Error(err) t.Error(err)
} }
defer os.Remove(tmpfile.Name()) defer utiltesting.CloseAndRemove(t, tmpfile)
if err := os.WriteFile(tmpfile.Name(), []byte(content), 0666); err != nil { if err := os.WriteFile(tmpfile.Name(), []byte(content), 0666); err != nil {
t.Error(err) t.Error(err)
} }

View File

@@ -27,6 +27,8 @@ import (
"strings" "strings"
"testing" "testing"
utiltesting "k8s.io/client-go/util/testing"
"github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp"
"sigs.k8s.io/yaml" "sigs.k8s.io/yaml"
@@ -197,7 +199,7 @@ func TestNoWarningMissingFiles(t *testing.T) {
func TestErrorReadingFile(t *testing.T) { func TestErrorReadingFile(t *testing.T) {
commandLineFile, _ := os.CreateTemp("", "") commandLineFile, _ := os.CreateTemp("", "")
defer os.Remove(commandLineFile.Name()) defer utiltesting.CloseAndRemove(t, commandLineFile)
if err := os.WriteFile(commandLineFile.Name(), []byte("bogus value"), 0644); err != nil { if err := os.WriteFile(commandLineFile.Name(), []byte("bogus value"), 0644); err != nil {
t.Fatalf("Error creating tempfile: %v", err) t.Fatalf("Error creating tempfile: %v", err)
@@ -238,9 +240,8 @@ func TestErrorReadingNonFile(t *testing.T) {
func TestConflictingCurrentContext(t *testing.T) { func TestConflictingCurrentContext(t *testing.T) {
commandLineFile, _ := os.CreateTemp("", "") commandLineFile, _ := os.CreateTemp("", "")
defer os.Remove(commandLineFile.Name())
envVarFile, _ := os.CreateTemp("", "") envVarFile, _ := os.CreateTemp("", "")
defer os.Remove(envVarFile.Name()) defer utiltesting.CloseAndRemove(t, commandLineFile, envVarFile)
mockCommandLineConfig := clientcmdapi.Config{ mockCommandLineConfig := clientcmdapi.Config{
CurrentContext: "any-context-value", CurrentContext: "any-context-value",
@@ -319,7 +320,7 @@ users: null
func TestLoadingEmptyMaps(t *testing.T) { func TestLoadingEmptyMaps(t *testing.T) {
configFile, _ := os.CreateTemp("", "") configFile, _ := os.CreateTemp("", "")
defer os.Remove(configFile.Name()) defer utiltesting.CloseAndRemove(t, configFile)
mockConfig := clientcmdapi.Config{ mockConfig := clientcmdapi.Config{
CurrentContext: "any-context-value", CurrentContext: "any-context-value",
@@ -345,7 +346,7 @@ func TestLoadingEmptyMaps(t *testing.T) {
func TestDuplicateClusterName(t *testing.T) { func TestDuplicateClusterName(t *testing.T) {
configFile, _ := os.CreateTemp("", "") configFile, _ := os.CreateTemp("", "")
defer os.Remove(configFile.Name()) defer utiltesting.CloseAndRemove(t, configFile)
err := os.WriteFile(configFile.Name(), []byte(` err := os.WriteFile(configFile.Name(), []byte(`
kind: Config kind: Config
@@ -387,7 +388,7 @@ users:
func TestDuplicateContextName(t *testing.T) { func TestDuplicateContextName(t *testing.T) {
configFile, _ := os.CreateTemp("", "") configFile, _ := os.CreateTemp("", "")
defer os.Remove(configFile.Name()) defer utiltesting.CloseAndRemove(t, configFile)
err := os.WriteFile(configFile.Name(), []byte(` err := os.WriteFile(configFile.Name(), []byte(`
kind: Config kind: Config
@@ -429,7 +430,7 @@ users:
func TestDuplicateUserName(t *testing.T) { func TestDuplicateUserName(t *testing.T) {
configFile, _ := os.CreateTemp("", "") configFile, _ := os.CreateTemp("", "")
defer os.Remove(configFile.Name()) defer utiltesting.CloseAndRemove(t, configFile)
err := os.WriteFile(configFile.Name(), []byte(` err := os.WriteFile(configFile.Name(), []byte(`
kind: Config kind: Config
@@ -469,7 +470,7 @@ users:
func TestDuplicateExtensionName(t *testing.T) { func TestDuplicateExtensionName(t *testing.T) {
configFile, _ := os.CreateTemp("", "") configFile, _ := os.CreateTemp("", "")
defer os.Remove(configFile.Name()) defer utiltesting.CloseAndRemove(t, configFile)
err := os.WriteFile(configFile.Name(), []byte(` err := os.WriteFile(configFile.Name(), []byte(`
kind: Config kind: Config
@@ -625,7 +626,7 @@ func TestResolveRelativePaths(t *testing.T) {
func TestMigratingFile(t *testing.T) { func TestMigratingFile(t *testing.T) {
sourceFile, _ := os.CreateTemp("", "") sourceFile, _ := os.CreateTemp("", "")
defer os.Remove(sourceFile.Name()) defer utiltesting.CloseAndRemove(t, sourceFile)
destinationFile, _ := os.CreateTemp("", "") destinationFile, _ := os.CreateTemp("", "")
// delete the file so that we'll write to it // delete the file so that we'll write to it
os.Remove(destinationFile.Name()) os.Remove(destinationFile.Name())
@@ -639,9 +640,8 @@ func TestMigratingFile(t *testing.T) {
if _, err := loadingRules.Load(); err != nil { if _, err := loadingRules.Load(); err != nil {
t.Errorf("unexpected error %v", err) t.Errorf("unexpected error %v", err)
} }
// the load should have recreated this file // the load should have recreated this file
defer os.Remove(destinationFile.Name()) defer utiltesting.CloseAndRemove(t, destinationFile)
sourceContent, err := os.ReadFile(sourceFile.Name()) sourceContent, err := os.ReadFile(sourceFile.Name())
if err != nil { if err != nil {
@@ -659,9 +659,8 @@ func TestMigratingFile(t *testing.T) {
func TestMigratingFileLeaveExistingFileAlone(t *testing.T) { func TestMigratingFileLeaveExistingFileAlone(t *testing.T) {
sourceFile, _ := os.CreateTemp("", "") sourceFile, _ := os.CreateTemp("", "")
defer os.Remove(sourceFile.Name())
destinationFile, _ := os.CreateTemp("", "") destinationFile, _ := os.CreateTemp("", "")
defer os.Remove(destinationFile.Name()) defer utiltesting.CloseAndRemove(t, sourceFile, destinationFile)
WriteToFile(testConfigAlfa, sourceFile.Name()) WriteToFile(testConfigAlfa, sourceFile.Name())
@@ -687,7 +686,7 @@ func TestMigratingFileSourceMissingSkip(t *testing.T) {
sourceFilename := "some-missing-file" sourceFilename := "some-missing-file"
destinationFile, _ := os.CreateTemp("", "") destinationFile, _ := os.CreateTemp("", "")
// delete the file so that we'll write to it // delete the file so that we'll write to it
os.Remove(destinationFile.Name()) utiltesting.CloseAndRemove(t, destinationFile)
loadingRules := ClientConfigLoadingRules{ loadingRules := ClientConfigLoadingRules{
MigrationRules: map[string]string{destinationFile.Name(): sourceFilename}, MigrationRules: map[string]string{destinationFile.Name(): sourceFilename},
@@ -704,7 +703,7 @@ func TestMigratingFileSourceMissingSkip(t *testing.T) {
func TestFileLocking(t *testing.T) { func TestFileLocking(t *testing.T) {
f, _ := os.CreateTemp("", "") f, _ := os.CreateTemp("", "")
defer os.Remove(f.Name()) defer utiltesting.CloseAndRemove(t, f)
err := lockFile(f.Name()) err := lockFile(f.Name())
if err != nil { if err != nil {
@@ -720,9 +719,8 @@ func TestFileLocking(t *testing.T) {
func Example_noMergingOnExplicitPaths() { func Example_noMergingOnExplicitPaths() {
commandLineFile, _ := os.CreateTemp("", "") commandLineFile, _ := os.CreateTemp("", "")
defer os.Remove(commandLineFile.Name())
envVarFile, _ := os.CreateTemp("", "") envVarFile, _ := os.CreateTemp("", "")
defer os.Remove(envVarFile.Name()) defer utiltesting.CloseAndRemove(&testing.T{}, commandLineFile, envVarFile)
WriteToFile(testConfigAlfa, commandLineFile.Name()) WriteToFile(testConfigAlfa, commandLineFile.Name())
WriteToFile(testConfigConflictAlfa, envVarFile.Name()) WriteToFile(testConfigConflictAlfa, envVarFile.Name())
@@ -769,9 +767,8 @@ func Example_noMergingOnExplicitPaths() {
func Example_mergingSomeWithConflict() { func Example_mergingSomeWithConflict() {
commandLineFile, _ := os.CreateTemp("", "") commandLineFile, _ := os.CreateTemp("", "")
defer os.Remove(commandLineFile.Name())
envVarFile, _ := os.CreateTemp("", "") envVarFile, _ := os.CreateTemp("", "")
defer os.Remove(envVarFile.Name()) defer utiltesting.CloseAndRemove(&testing.T{}, commandLineFile, envVarFile)
WriteToFile(testConfigAlfa, commandLineFile.Name()) WriteToFile(testConfigAlfa, commandLineFile.Name())
WriteToFile(testConfigConflictAlfa, envVarFile.Name()) WriteToFile(testConfigConflictAlfa, envVarFile.Name())
@@ -825,13 +822,10 @@ func Example_mergingSomeWithConflict() {
func Example_mergingEverythingNoConflicts() { func Example_mergingEverythingNoConflicts() {
commandLineFile, _ := os.CreateTemp("", "") commandLineFile, _ := os.CreateTemp("", "")
defer os.Remove(commandLineFile.Name())
envVarFile, _ := os.CreateTemp("", "") envVarFile, _ := os.CreateTemp("", "")
defer os.Remove(envVarFile.Name())
currentDirFile, _ := os.CreateTemp("", "") currentDirFile, _ := os.CreateTemp("", "")
defer os.Remove(currentDirFile.Name())
homeDirFile, _ := os.CreateTemp("", "") homeDirFile, _ := os.CreateTemp("", "")
defer os.Remove(homeDirFile.Name()) defer utiltesting.CloseAndRemove(&testing.T{}, commandLineFile, envVarFile, currentDirFile, homeDirFile)
WriteToFile(testConfigAlfa, commandLineFile.Name()) WriteToFile(testConfigAlfa, commandLineFile.Name())
WriteToFile(testConfigBravo, envVarFile.Name()) WriteToFile(testConfigBravo, envVarFile.Name())

View File

@@ -23,6 +23,8 @@ import (
"strings" "strings"
"testing" "testing"
utiltesting "k8s.io/client-go/util/testing"
utilerrors "k8s.io/apimachinery/pkg/util/errors" utilerrors "k8s.io/apimachinery/pkg/util/errors"
clientcmdapi "k8s.io/client-go/tools/clientcmd/api" clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
) )
@@ -296,7 +298,7 @@ func TestValidateCleanClusterInfo(t *testing.T) {
func TestValidateCleanWithCAClusterInfo(t *testing.T) { func TestValidateCleanWithCAClusterInfo(t *testing.T) {
tempFile, _ := os.CreateTemp("", "") tempFile, _ := os.CreateTemp("", "")
defer os.Remove(tempFile.Name()) defer utiltesting.CloseAndRemove(t, tempFile)
config := clientcmdapi.NewConfig() config := clientcmdapi.NewConfig()
config.Clusters["clean"] = &clientcmdapi.Cluster{ config.Clusters["clean"] = &clientcmdapi.Cluster{
@@ -339,7 +341,7 @@ func TestValidateCertFilesNotFoundAuthInfo(t *testing.T) {
func TestValidateCertDataOverridesFiles(t *testing.T) { func TestValidateCertDataOverridesFiles(t *testing.T) {
tempFile, _ := os.CreateTemp("", "") tempFile, _ := os.CreateTemp("", "")
defer os.Remove(tempFile.Name()) defer utiltesting.CloseAndRemove(t, tempFile)
config := clientcmdapi.NewConfig() config := clientcmdapi.NewConfig()
config.AuthInfos["clean"] = &clientcmdapi.AuthInfo{ config.AuthInfos["clean"] = &clientcmdapi.AuthInfo{
@@ -359,7 +361,7 @@ func TestValidateCertDataOverridesFiles(t *testing.T) {
func TestValidateCleanCertFilesAuthInfo(t *testing.T) { func TestValidateCleanCertFilesAuthInfo(t *testing.T) {
tempFile, _ := os.CreateTemp("", "") tempFile, _ := os.CreateTemp("", "")
defer os.Remove(tempFile.Name()) defer utiltesting.CloseAndRemove(t, tempFile)
config := clientcmdapi.NewConfig() config := clientcmdapi.NewConfig()
config.AuthInfos["clean"] = &clientcmdapi.AuthInfo{ config.AuthInfos["clean"] = &clientcmdapi.AuthInfo{

View File

@@ -0,0 +1,40 @@
/*
Copyright 2023 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package testing
import (
"os"
"testing"
)
// CloseAndRemove is a helper to close and remove test file.
func CloseAndRemove(t *testing.T, files ...*os.File) {
t.Helper()
// We should close it first before remove a file, it's not only a good practice,
// but also can avoid failed file removing on Windows OS.
for _, f := range files {
if f == nil {
continue
}
if err := f.Close(); err != nil {
t.Fatalf("Error closing %s: %v", f.Name(), err)
}
if err := os.Remove(f.Name()); err != nil {
t.Fatalf("Error removing %s: %v", f.Name(), err)
}
}
}

View File

@@ -21,6 +21,8 @@ import (
"reflect" "reflect"
"testing" "testing"
utiltesting "k8s.io/client-go/util/testing"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
internal "k8s.io/controller-manager/config" internal "k8s.io/controller-manager/config"
) )
@@ -117,7 +119,7 @@ controllerLeaders:
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
defer os.Remove(configFile.Name()) defer utiltesting.CloseAndRemove(t, configFile)
err = os.WriteFile(configFile.Name(), []byte(tc.content), os.FileMode(0755)) err = os.WriteFile(configFile.Name(), []byte(tc.content), os.FileMode(0755))
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)

View File

@@ -21,6 +21,8 @@ import (
"reflect" "reflect"
"testing" "testing"
utiltesting "k8s.io/client-go/util/testing"
"github.com/spf13/pflag" "github.com/spf13/pflag"
"k8s.io/controller-manager/config" "k8s.io/controller-manager/config"
@@ -188,7 +190,7 @@ controllerLeaders:
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
defer os.Remove(configFile.Name()) defer utiltesting.CloseAndRemove(t, configFile)
err = os.WriteFile(configFile.Name(), []byte(tc.configContent), os.FileMode(0755)) err = os.WriteFile(configFile.Name(), []byte(tc.configContent), os.FileMode(0755))
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)

View File

@@ -29,6 +29,7 @@ import (
"k8s.io/cli-runtime/pkg/genericiooptions" "k8s.io/cli-runtime/pkg/genericiooptions"
"k8s.io/client-go/tools/clientcmd" "k8s.io/client-go/tools/clientcmd"
clientcmdapi "k8s.io/client-go/tools/clientcmd/api" clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
utiltesting "k8s.io/client-go/util/testing"
cmdutil "k8s.io/kubectl/pkg/cmd/util" cmdutil "k8s.io/kubectl/pkg/cmd/util"
) )
@@ -52,7 +53,7 @@ func Example_view() {
expectedConfig: expectedConfig, expectedConfig: expectedConfig,
} }
output := test.run(nil) output := test.run(&testing.T{})
fmt.Printf("%v", output) fmt.Printf("%v", output)
// Output: // Output:
// apiVersion: v1 // apiVersion: v1
@@ -261,7 +262,7 @@ func TestAdditionalAuth(t *testing.T) {
func TestEmbedClientCert(t *testing.T) { func TestEmbedClientCert(t *testing.T) {
fakeCertFile, _ := os.CreateTemp(os.TempDir(), "") fakeCertFile, _ := os.CreateTemp(os.TempDir(), "")
defer os.Remove(fakeCertFile.Name()) defer utiltesting.CloseAndRemove(t, fakeCertFile)
fakeData := []byte("fake-data") fakeData := []byte("fake-data")
os.WriteFile(fakeCertFile.Name(), fakeData, 0600) os.WriteFile(fakeCertFile.Name(), fakeData, 0600)
expectedConfig := newRedFederalCowHammerConfig() expectedConfig := newRedFederalCowHammerConfig()
@@ -280,7 +281,7 @@ func TestEmbedClientCert(t *testing.T) {
func TestEmbedClientKey(t *testing.T) { func TestEmbedClientKey(t *testing.T) {
fakeKeyFile, _ := os.CreateTemp(os.TempDir(), "") fakeKeyFile, _ := os.CreateTemp(os.TempDir(), "")
defer os.Remove(fakeKeyFile.Name()) defer utiltesting.CloseAndRemove(t, fakeKeyFile)
fakeData := []byte("fake-data") fakeData := []byte("fake-data")
os.WriteFile(fakeKeyFile.Name(), fakeData, 0600) os.WriteFile(fakeKeyFile.Name(), fakeData, 0600)
expectedConfig := newRedFederalCowHammerConfig() expectedConfig := newRedFederalCowHammerConfig()
@@ -326,7 +327,7 @@ func TestEmbedNoKeyOrCertDisallowed(t *testing.T) {
func TestEmptyTokenAndCertAllowed(t *testing.T) { func TestEmptyTokenAndCertAllowed(t *testing.T) {
fakeCertFile, _ := os.CreateTemp(os.TempDir(), "cert-file") fakeCertFile, _ := os.CreateTemp(os.TempDir(), "cert-file")
defer os.Remove(fakeCertFile.Name()) defer utiltesting.CloseAndRemove(t, fakeCertFile)
expectedConfig := newRedFederalCowHammerConfig() expectedConfig := newRedFederalCowHammerConfig()
authInfo := clientcmdapi.NewAuthInfo() authInfo := clientcmdapi.NewAuthInfo()
authInfo.ClientCertificate = path.Base(fakeCertFile.Name()) authInfo.ClientCertificate = path.Base(fakeCertFile.Name())
@@ -569,7 +570,7 @@ func TestUnsetBytes(t *testing.T) {
func TestCAClearsInsecure(t *testing.T) { func TestCAClearsInsecure(t *testing.T) {
fakeCAFile, _ := os.CreateTemp(os.TempDir(), "ca-file") fakeCAFile, _ := os.CreateTemp(os.TempDir(), "ca-file")
defer os.Remove(fakeCAFile.Name()) defer utiltesting.CloseAndRemove(t, fakeCAFile)
clusterInfoWithInsecure := clientcmdapi.NewCluster() clusterInfoWithInsecure := clientcmdapi.NewCluster()
clusterInfoWithInsecure.InsecureSkipTLSVerify = true clusterInfoWithInsecure.InsecureSkipTLSVerify = true
@@ -638,7 +639,7 @@ func TestInsecureClearsCA(t *testing.T) {
func TestCADataClearsCA(t *testing.T) { func TestCADataClearsCA(t *testing.T) {
fakeCAFile, _ := os.CreateTemp(os.TempDir(), "") fakeCAFile, _ := os.CreateTemp(os.TempDir(), "")
defer os.Remove(fakeCAFile.Name()) defer utiltesting.CloseAndRemove(t, fakeCAFile)
fakeData := []byte("cadata") fakeData := []byte("cadata")
os.WriteFile(fakeCAFile.Name(), fakeData, 0600) os.WriteFile(fakeCAFile.Name(), fakeData, 0600)
@@ -852,7 +853,7 @@ func TestToBool(t *testing.T) {
func testConfigCommand(args []string, startingConfig clientcmdapi.Config, t *testing.T) (string, clientcmdapi.Config) { func testConfigCommand(args []string, startingConfig clientcmdapi.Config, t *testing.T) (string, clientcmdapi.Config) {
fakeKubeFile, _ := os.CreateTemp(os.TempDir(), "") fakeKubeFile, _ := os.CreateTemp(os.TempDir(), "")
defer os.Remove(fakeKubeFile.Name()) defer utiltesting.CloseAndRemove(t, fakeKubeFile)
err := clientcmd.WriteToFile(startingConfig, fakeKubeFile.Name()) err := clientcmd.WriteToFile(startingConfig, fakeKubeFile.Name())
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)

View File

@@ -18,6 +18,7 @@ package config
import ( import (
"bytes" "bytes"
utiltesting "k8s.io/client-go/util/testing"
"os" "os"
"strings" "strings"
"testing" "testing"
@@ -60,7 +61,7 @@ func (test currentContextTest) run(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
defer os.Remove(fakeKubeFile.Name()) defer utiltesting.CloseAndRemove(t, fakeKubeFile)
err = clientcmd.WriteToFile(test.startingConfig, fakeKubeFile.Name()) err = clientcmd.WriteToFile(test.startingConfig, fakeKubeFile.Name())
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)

View File

@@ -19,6 +19,7 @@ package config
import ( import (
"bytes" "bytes"
"fmt" "fmt"
utiltesting "k8s.io/client-go/util/testing"
"os" "os"
"reflect" "reflect"
"testing" "testing"
@@ -56,7 +57,7 @@ func (test deleteClusterTest) run(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
defer os.Remove(fakeKubeFile.Name()) defer utiltesting.CloseAndRemove(t, fakeKubeFile)
err = clientcmd.WriteToFile(test.config, fakeKubeFile.Name()) err = clientcmd.WriteToFile(test.config, fakeKubeFile.Name())
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)

View File

@@ -19,6 +19,7 @@ package config
import ( import (
"bytes" "bytes"
"fmt" "fmt"
utiltesting "k8s.io/client-go/util/testing"
"os" "os"
"reflect" "reflect"
"testing" "testing"
@@ -56,7 +57,7 @@ func (test deleteContextTest) run(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
defer os.Remove(fakeKubeFile.Name()) defer utiltesting.CloseAndRemove(t, fakeKubeFile)
err = clientcmd.WriteToFile(test.config, fakeKubeFile.Name()) err = clientcmd.WriteToFile(test.config, fakeKubeFile.Name())
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)

View File

@@ -21,6 +21,8 @@ import (
"os" "os"
"testing" "testing"
utiltesting "k8s.io/client-go/util/testing"
"k8s.io/client-go/tools/clientcmd" "k8s.io/client-go/tools/clientcmd"
clientcmdapi "k8s.io/client-go/tools/clientcmd/api" clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
) )
@@ -60,7 +62,7 @@ func (test getClustersTest) run(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
defer os.Remove(fakeKubeFile.Name()) defer utiltesting.CloseAndRemove(t, fakeKubeFile)
err = clientcmd.WriteToFile(test.config, fakeKubeFile.Name()) err = clientcmd.WriteToFile(test.config, fakeKubeFile.Name())
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)

View File

@@ -20,6 +20,8 @@ import (
"os" "os"
"testing" "testing"
utiltesting "k8s.io/client-go/util/testing"
"k8s.io/cli-runtime/pkg/genericiooptions" "k8s.io/cli-runtime/pkg/genericiooptions"
"k8s.io/client-go/tools/clientcmd" "k8s.io/client-go/tools/clientcmd"
clientcmdapi "k8s.io/client-go/tools/clientcmd/api" clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
@@ -147,7 +149,7 @@ func (test getContextsTest) run(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
defer os.Remove(fakeKubeFile.Name()) defer utiltesting.CloseAndRemove(t, fakeKubeFile)
err = clientcmd.WriteToFile(test.startingConfig, fakeKubeFile.Name()) err = clientcmd.WriteToFile(test.startingConfig, fakeKubeFile.Name())
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)

View File

@@ -23,6 +23,8 @@ import (
"strings" "strings"
"testing" "testing"
utiltesting "k8s.io/client-go/util/testing"
"k8s.io/client-go/tools/clientcmd" "k8s.io/client-go/tools/clientcmd"
clientcmdapi "k8s.io/client-go/tools/clientcmd/api" clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
) )
@@ -103,7 +105,7 @@ func TestRenameToAlreadyExistingContext(t *testing.T) {
func (test renameContextTest) run(t *testing.T) { func (test renameContextTest) run(t *testing.T) {
fakeKubeFile, _ := os.CreateTemp(os.TempDir(), "") fakeKubeFile, _ := os.CreateTemp(os.TempDir(), "")
defer os.Remove(fakeKubeFile.Name()) defer utiltesting.CloseAndRemove(t, fakeKubeFile)
err := clientcmd.WriteToFile(test.initialConfig, fakeKubeFile.Name()) err := clientcmd.WriteToFile(test.initialConfig, fakeKubeFile.Name())
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)

View File

@@ -21,6 +21,8 @@ import (
"os" "os"
"testing" "testing"
utiltesting "k8s.io/client-go/util/testing"
"k8s.io/client-go/tools/clientcmd" "k8s.io/client-go/tools/clientcmd"
clientcmdapi "k8s.io/client-go/tools/clientcmd/api" clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
) )
@@ -186,7 +188,7 @@ func (test setClusterTest) run(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
defer os.Remove(fakeKubeFile.Name()) defer utiltesting.CloseAndRemove(t, fakeKubeFile)
err = clientcmd.WriteToFile(test.config, fakeKubeFile.Name()) err = clientcmd.WriteToFile(test.config, fakeKubeFile.Name())
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)

View File

@@ -21,6 +21,8 @@ import (
"os" "os"
"testing" "testing"
utiltesting "k8s.io/client-go/util/testing"
"k8s.io/client-go/tools/clientcmd" "k8s.io/client-go/tools/clientcmd"
clientcmdapi "k8s.io/client-go/tools/clientcmd/api" clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
) )
@@ -110,7 +112,7 @@ func (test setContextTest) run(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
defer os.Remove(fakeKubeFile.Name()) defer utiltesting.CloseAndRemove(t, fakeKubeFile)
err = clientcmd.WriteToFile(test.config, fakeKubeFile.Name()) err = clientcmd.WriteToFile(test.config, fakeKubeFile.Name())
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)

View File

@@ -18,6 +18,7 @@ package config
import ( import (
"bytes" "bytes"
utiltesting "k8s.io/client-go/util/testing"
"os" "os"
"reflect" "reflect"
"testing" "testing"
@@ -457,7 +458,7 @@ func (test setCredentialsTest) run(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
defer os.Remove(fakeKubeFile.Name()) defer utiltesting.CloseAndRemove(t, fakeKubeFile)
err = clientcmd.WriteToFile(test.config, fakeKubeFile.Name()) err = clientcmd.WriteToFile(test.config, fakeKubeFile.Name())
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)

View File

@@ -21,6 +21,8 @@ import (
"os" "os"
"testing" "testing"
utiltesting "k8s.io/client-go/util/testing"
"reflect" "reflect"
"k8s.io/client-go/tools/clientcmd" "k8s.io/client-go/tools/clientcmd"
@@ -58,7 +60,7 @@ func (test setConfigTest) run(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
defer os.Remove(fakeKubeFile.Name()) defer utiltesting.CloseAndRemove(t, fakeKubeFile)
err = clientcmd.WriteToFile(test.config, fakeKubeFile.Name()) err = clientcmd.WriteToFile(test.config, fakeKubeFile.Name())
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)

View File

@@ -21,6 +21,8 @@ import (
"os" "os"
"testing" "testing"
utiltesting "k8s.io/client-go/util/testing"
"k8s.io/client-go/tools/clientcmd" "k8s.io/client-go/tools/clientcmd"
clientcmdapi "k8s.io/client-go/tools/clientcmd/api" clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
) )
@@ -109,7 +111,7 @@ func (test unsetConfigTest) run(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
defer os.Remove(fakeKubeFile.Name()) defer utiltesting.CloseAndRemove(t, fakeKubeFile)
err = clientcmd.WriteToFile(test.config, fakeKubeFile.Name()) err = clientcmd.WriteToFile(test.config, fakeKubeFile.Name())
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)

View File

@@ -21,6 +21,8 @@ import (
"os" "os"
"testing" "testing"
utiltesting "k8s.io/client-go/util/testing"
"k8s.io/client-go/tools/clientcmd" "k8s.io/client-go/tools/clientcmd"
clientcmdapi "k8s.io/client-go/tools/clientcmd/api" clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
) )
@@ -74,7 +76,7 @@ func (test useContextTest) run(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
defer os.Remove(fakeKubeFile.Name()) defer utiltesting.CloseAndRemove(t, fakeKubeFile)
err = clientcmd.WriteToFile(test.config, fakeKubeFile.Name()) err = clientcmd.WriteToFile(test.config, fakeKubeFile.Name())
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)

View File

@@ -20,6 +20,8 @@ import (
"os" "os"
"testing" "testing"
utiltesting "k8s.io/client-go/util/testing"
"k8s.io/cli-runtime/pkg/genericiooptions" "k8s.io/cli-runtime/pkg/genericiooptions"
"k8s.io/client-go/tools/clientcmd" "k8s.io/client-go/tools/clientcmd"
clientcmdapi "k8s.io/client-go/tools/clientcmd/api" clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
@@ -297,7 +299,7 @@ func (test viewClusterTest) run(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
defer os.Remove(fakeKubeFile.Name()) defer utiltesting.CloseAndRemove(t, fakeKubeFile)
err = clientcmd.WriteToFile(test.config, fakeKubeFile.Name()) err = clientcmd.WriteToFile(test.config, fakeKubeFile.Name())
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)

View File

@@ -483,6 +483,7 @@ func (f *TestFactory) Cleanup() {
return return
} }
f.tempConfigFile.Close()
os.Remove(f.tempConfigFile.Name()) os.Remove(f.tempConfigFile.Name())
} }

View File

@@ -19,11 +19,12 @@ package load
import ( import (
"bytes" "bytes"
"io/ioutil" "io/ioutil"
"os"
"reflect" "reflect"
"strings" "strings"
"testing" "testing"
utiltesting "k8s.io/client-go/util/testing"
"github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp"
"k8s.io/pod-security-admission/admission/api" "k8s.io/pod-security-admission/admission/api"
@@ -44,7 +45,7 @@ func writeTempFile(t *testing.T, content string) string {
t.Fatal(err) t.Fatal(err)
} }
t.Cleanup(func() { t.Cleanup(func() {
os.Remove(file.Name()) utiltesting.CloseAndRemove(t, file)
}) })
if err := ioutil.WriteFile(file.Name(), []byte(content), 0600); err != nil { if err := ioutil.WriteFile(file.Name(), []byte(content), 0600); err != nil {
t.Fatal(err) t.Fatal(err)

View File

@@ -19,11 +19,14 @@ package apimachinery
import ( import (
"crypto/x509" "crypto/x509"
"os" "os"
"testing"
utiltesting "k8s.io/client-go/util/testing"
"k8s.io/kubernetes/test/utils"
"k8s.io/client-go/util/cert" "k8s.io/client-go/util/cert"
"k8s.io/client-go/util/keyutil" "k8s.io/client-go/util/keyutil"
"k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/e2e/framework"
"k8s.io/kubernetes/test/utils"
) )
type certContext struct { type certContext struct {
@@ -52,6 +55,7 @@ func setupServerCert(namespaceName, serviceName string) *certContext {
if err != nil { if err != nil {
framework.Failf("Failed to create a temp file for ca cert generation %v", err) framework.Failf("Failed to create a temp file for ca cert generation %v", err)
} }
defer utiltesting.CloseAndRemove(&testing.T{}, caCertFile)
if err := os.WriteFile(caCertFile.Name(), utils.EncodeCertPEM(signingCert), 0644); err != nil { if err := os.WriteFile(caCertFile.Name(), utils.EncodeCertPEM(signingCert), 0644); err != nil {
framework.Failf("Failed to write CA cert %v", err) framework.Failf("Failed to write CA cert %v", err)
} }
@@ -74,6 +78,7 @@ func setupServerCert(namespaceName, serviceName string) *certContext {
if err != nil { if err != nil {
framework.Failf("Failed to create a temp file for cert generation %v", err) framework.Failf("Failed to create a temp file for cert generation %v", err)
} }
defer utiltesting.CloseAndRemove(&testing.T{}, certFile)
keyFile, err := os.CreateTemp(certDir, "server.key") keyFile, err := os.CreateTemp(certDir, "server.key")
if err != nil { if err != nil {
framework.Failf("Failed to create a temp file for key generation %v", err) framework.Failf("Failed to create a temp file for key generation %v", err)
@@ -88,6 +93,7 @@ func setupServerCert(namespaceName, serviceName string) *certContext {
if err = os.WriteFile(keyFile.Name(), privateKeyPEM, 0644); err != nil { if err = os.WriteFile(keyFile.Name(), privateKeyPEM, 0644); err != nil {
framework.Failf("Failed to write key file %v", err) framework.Failf("Failed to write key file %v", err)
} }
defer utiltesting.CloseAndRemove(&testing.T{}, keyFile)
return &certContext{ return &certContext{
cert: utils.EncodeCertPEM(signedCert), cert: utils.EncodeCertPEM(signedCert),
key: privateKeyPEM, key: privateKeyPEM,

View File

@@ -19,6 +19,9 @@ package services
import ( import (
"fmt" "fmt"
"os" "os"
"testing"
utiltesting "k8s.io/client-go/util/testing"
"k8s.io/apiserver/pkg/storage/storagebackend" "k8s.io/apiserver/pkg/storage/storagebackend"
netutils "k8s.io/utils/net" netutils "k8s.io/utils/net"
@@ -79,7 +82,7 @@ func (a *APIServer) Start() error {
if err != nil { if err != nil {
return fmt.Errorf("create temp file failed: %w", err) return fmt.Errorf("create temp file failed: %w", err)
} }
defer os.RemoveAll(saSigningKeyFile.Name()) defer utiltesting.CloseAndRemove(&testing.T{}, saSigningKeyFile)
if err = os.WriteFile(saSigningKeyFile.Name(), []byte(ecdsaPrivateKey), 0666); err != nil { if err = os.WriteFile(saSigningKeyFile.Name(), []byte(ecdsaPrivateKey), 0666); err != nil {
return fmt.Errorf("write file %s failed: %w", saSigningKeyFile.Name(), err) return fmt.Errorf("write file %s failed: %w", saSigningKeyFile.Name(), err)
} }

View File

@@ -31,6 +31,8 @@ import (
"testing" "testing"
"time" "time"
utiltesting "k8s.io/client-go/util/testing"
"k8s.io/api/admission/v1beta1" "k8s.io/api/admission/v1beta1"
admissionregistrationv1 "k8s.io/api/admissionregistration/v1" admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
corev1 "k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
@@ -87,7 +89,7 @@ func testWebhookClientAuth(t *testing.T, enableAggregatorRouting bool) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
defer os.Remove(kubeConfigFile.Name()) defer utiltesting.CloseAndRemove(t, kubeConfigFile)
if err := os.WriteFile(kubeConfigFile.Name(), []byte(` if err := os.WriteFile(kubeConfigFile.Name(), []byte(`
apiVersion: v1 apiVersion: v1
@@ -113,7 +115,7 @@ users:
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
defer os.Remove(admissionConfigFile.Name()) defer utiltesting.CloseAndRemove(t, admissionConfigFile)
if err := os.WriteFile(admissionConfigFile.Name(), []byte(` if err := os.WriteFile(admissionConfigFile.Name(), []byte(`
apiVersion: apiserver.k8s.io/v1alpha1 apiVersion: apiserver.k8s.io/v1alpha1

View File

@@ -44,6 +44,7 @@ import (
auditv1 "k8s.io/apiserver/pkg/apis/audit/v1" auditv1 "k8s.io/apiserver/pkg/apis/audit/v1"
clientset "k8s.io/client-go/kubernetes" clientset "k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest" "k8s.io/client-go/rest"
utiltesting "k8s.io/client-go/util/testing"
kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing" kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing"
"k8s.io/kubernetes/test/integration/framework" "k8s.io/kubernetes/test/integration/framework"
"k8s.io/kubernetes/test/utils" "k8s.io/kubernetes/test/utils"
@@ -281,7 +282,7 @@ func testWebhookReinvocationPolicy(t *testing.T, watchCache bool) {
if err != nil { if err != nil {
t.Fatalf("Failed to create audit log file: %v", err) t.Fatalf("Failed to create audit log file: %v", err)
} }
defer os.Remove(logFile.Name()) defer utiltesting.CloseAndRemove(t, logFile)
s := kubeapiservertesting.StartTestServerOrDie(t, kubeapiservertesting.NewDefaultTestServerOptions(), []string{ s := kubeapiservertesting.StartTestServerOrDie(t, kubeapiservertesting.NewDefaultTestServerOptions(), []string{
"--disable-admission-plugins=ServiceAccount", "--disable-admission-plugins=ServiceAccount",

View File

@@ -38,6 +38,7 @@ import (
"k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/strategicpatch" "k8s.io/apimachinery/pkg/util/strategicpatch"
client "k8s.io/client-go/kubernetes" client "k8s.io/client-go/kubernetes"
utiltesting "k8s.io/client-go/util/testing"
kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing" kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing"
"k8s.io/kubernetes/test/integration/framework" "k8s.io/kubernetes/test/integration/framework"
) )
@@ -73,7 +74,7 @@ egressSelections:
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
defer os.Remove(tracingConfigFile.Name()) defer utiltesting.CloseAndRemove(t, tracingConfigFile)
if err := os.WriteFile(tracingConfigFile.Name(), []byte(fmt.Sprintf(` if err := os.WriteFile(tracingConfigFile.Name(), []byte(fmt.Sprintf(`
apiVersion: apiserver.config.k8s.io/v1beta1 apiVersion: apiserver.config.k8s.io/v1beta1

View File

@@ -41,6 +41,8 @@ import (
"testing" "testing"
"time" "time"
utiltesting "k8s.io/client-go/util/testing"
"github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp"
authenticationv1beta1 "k8s.io/api/authentication/v1beta1" authenticationv1beta1 "k8s.io/api/authentication/v1beta1"
@@ -86,7 +88,7 @@ func getTestWebhookTokenAuth(serverURL string, customDial utilnet.DialFunc) (aut
if err != nil { if err != nil {
return nil, err return nil, err
} }
defer os.Remove(kubecfgFile.Name()) defer utiltesting.CloseAndRemove(&testing.T{}, kubecfgFile)
config := v1.Config{ config := v1.Config{
Clusters: []v1.NamedCluster{ Clusters: []v1.NamedCluster{
{ {

View File

@@ -22,6 +22,8 @@ import (
"testing" "testing"
"time" "time"
utiltesting "k8s.io/client-go/util/testing"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apiserver/pkg/authentication/authenticator" "k8s.io/apiserver/pkg/authentication/authenticator"
clientset "k8s.io/client-go/kubernetes" clientset "k8s.io/client-go/kubernetes"
@@ -38,7 +40,7 @@ func TestDynamicClientBuilder(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("create temp file failed: %v", err) t.Fatalf("create temp file failed: %v", err)
} }
defer os.RemoveAll(tmpfile.Name()) defer utiltesting.CloseAndRemove(t, tmpfile)
if err = os.WriteFile(tmpfile.Name(), []byte(ecdsaPrivateKey), 0666); err != nil { if err = os.WriteFile(tmpfile.Name(), []byte(ecdsaPrivateKey), 0666); err != nil {
t.Fatalf("write file %s failed: %v", tmpfile.Name(), err) t.Fatalf("write file %s failed: %v", tmpfile.Name(), err)

View File

@@ -41,6 +41,7 @@ import (
auditinternal "k8s.io/apiserver/pkg/apis/audit" auditinternal "k8s.io/apiserver/pkg/apis/audit"
auditv1 "k8s.io/apiserver/pkg/apis/audit/v1" auditv1 "k8s.io/apiserver/pkg/apis/audit/v1"
clientset "k8s.io/client-go/kubernetes" clientset "k8s.io/client-go/kubernetes"
utiltesting "k8s.io/client-go/util/testing"
kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing" kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing"
"k8s.io/kubernetes/test/integration/framework" "k8s.io/kubernetes/test/integration/framework"
"k8s.io/kubernetes/test/utils" "k8s.io/kubernetes/test/utils"
@@ -245,7 +246,7 @@ func runTestWithVersion(t *testing.T, version string) {
if err != nil { if err != nil {
t.Fatalf("Failed to create audit log file: %v", err) t.Fatalf("Failed to create audit log file: %v", err)
} }
defer os.Remove(logFile.Name()) defer utiltesting.CloseAndRemove(t, logFile)
// start api server // start api server
result := kubeapiservertesting.StartTestServerOrDie(t, nil, result := kubeapiservertesting.StartTestServerOrDie(t, nil,

View File

@@ -26,6 +26,8 @@ import (
"testing" "testing"
"time" "time"
utiltesting "k8s.io/client-go/util/testing"
clientv3 "go.etcd.io/etcd/client/v3" clientv3 "go.etcd.io/etcd/client/v3"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
@@ -81,7 +83,7 @@ func StartRealAPIServerOrDie(t *testing.T, configFuncs ...func(*options.ServerRu
if err != nil { if err != nil {
t.Fatalf("create temp file failed: %v", err) t.Fatalf("create temp file failed: %v", err)
} }
defer os.RemoveAll(saSigningKeyFile.Name()) defer utiltesting.CloseAndRemove(t, saSigningKeyFile)
if err = os.WriteFile(saSigningKeyFile.Name(), []byte(ecdsaPrivateKey), 0666); err != nil { if err = os.WriteFile(saSigningKeyFile.Name(), []byte(ecdsaPrivateKey), 0666); err != nil {
t.Fatalf("write file %s failed: %v", saSigningKeyFile.Name(), err) t.Fatalf("write file %s failed: %v", saSigningKeyFile.Name(), err)
} }

View File

@@ -695,6 +695,7 @@ func writeKubeConfigForWardleServerToKASConnection(t *testing.T, kubeClientConfi
t.Fatal(err) t.Fatal(err)
} }
defer wardleToKASKubeConfigFile.Close()
return wardleToKASKubeConfigFile.Name() return wardleToKASKubeConfigFile.Name()
} }

View File

@@ -99,6 +99,7 @@ func StartTestServer(ctx context.Context, t testing.TB, setup TestServerSetup) (
if err := os.WriteFile(proxyCACertFile.Name(), utils.EncodeCertPEM(proxySigningCert), 0644); err != nil { if err := os.WriteFile(proxyCACertFile.Name(), utils.EncodeCertPEM(proxySigningCert), 0644); err != nil {
t.Fatal(err) t.Fatal(err)
} }
defer proxyCACertFile.Close()
clientSigningKey, err := utils.NewPrivateKey() clientSigningKey, err := utils.NewPrivateKey()
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
@@ -111,7 +112,7 @@ func StartTestServer(ctx context.Context, t testing.TB, setup TestServerSetup) (
if err := os.WriteFile(clientCACertFile.Name(), utils.EncodeCertPEM(clientSigningCert), 0644); err != nil { if err := os.WriteFile(clientCACertFile.Name(), utils.EncodeCertPEM(clientSigningCert), 0644); err != nil {
t.Fatal(err) t.Fatal(err)
} }
defer clientCACertFile.Close()
listener, _, err := genericapiserveroptions.CreateListener("tcp", "127.0.0.1:0", net.ListenConfig{}) listener, _, err := genericapiserveroptions.CreateListener("tcp", "127.0.0.1:0", net.ListenConfig{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
@@ -121,7 +122,7 @@ func StartTestServer(ctx context.Context, t testing.TB, setup TestServerSetup) (
if err != nil { if err != nil {
t.Fatalf("create temp file failed: %v", err) t.Fatalf("create temp file failed: %v", err)
} }
defer os.RemoveAll(saSigningKeyFile.Name()) defer saSigningKeyFile.Close()
if err = os.WriteFile(saSigningKeyFile.Name(), []byte(ecdsaPrivateKey), 0666); err != nil { if err = os.WriteFile(saSigningKeyFile.Name(), []byte(ecdsaPrivateKey), 0666); err != nil {
t.Fatalf("write file %s failed: %v", saSigningKeyFile.Name(), err) t.Fatalf("write file %s failed: %v", saSigningKeyFile.Name(), err)
} }