kubeadm: Don't hardcode temp path in a test

Hardcoding a temp path of /tmp/... is not portable and can potentially cause
other issues (such as flakyness) too.
Use TempFile instead.

Signed-off-by: Rostislav M. Georgiev <rostislavg@vmware.com>
This commit is contained in:
Rostislav M. Georgiev 2019-03-06 12:27:31 +02:00
parent 9c75270b2b
commit 5a3b1a0c7c

View File

@ -18,11 +18,9 @@ package upgrade
import (
"bytes"
"fmt"
"io/ioutil"
"os"
"testing"
"time"
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
)
@ -77,17 +75,25 @@ func TestGetK8sVersionFromUserInput(t *testing.T) {
name: "Version is optional",
},
}
for tnum, tt := range tcases {
for _, tt := range tcases {
t.Run(tt.name, func(t *testing.T) {
flags := &applyPlanFlags{}
if len(tt.clusterConfig) > 0 {
tmpfile := fmt.Sprintf("/tmp/kubeadm-upgrade-common-test-%d-%d.yaml", tnum, time.Now().Unix())
if err := ioutil.WriteFile(tmpfile, []byte(tt.clusterConfig), 0666); err != nil {
file, err := ioutil.TempFile("", "kubeadm-upgrade-common-test-*.yaml")
if err != nil {
t.Fatalf("Failed to create test config file: %+v", err)
}
defer os.Remove(tmpfile)
flags.cfgPath = tmpfile
tmpFileName := file.Name()
defer os.Remove(tmpFileName)
_, err = file.WriteString(tt.clusterConfig)
file.Close()
if err != nil {
t.Fatalf("Failed to write test config file contents: %+v", err)
}
flags.cfgPath = tmpFileName
}
userVersion, err := getK8sVersionFromUserInput(flags, tt.args, tt.isVersionMandatory)