diff --git a/cmd/kubeadm/app/master/manifests_test.go b/cmd/kubeadm/app/master/manifests_test.go index 11d028d6678..72d5bb055b2 100644 --- a/cmd/kubeadm/app/master/manifests_test.go +++ b/cmd/kubeadm/app/master/manifests_test.go @@ -33,7 +33,7 @@ func TestWriteStaticPodManifests(t *testing.T) { if err != nil { t.Fatalf("Couldn't create tmpdir") } - defer os.Remove(tmpdir) + defer os.RemoveAll(tmpdir) // set up tmp GlobalEnvParams values for testing oldEnv := kubeadmapi.GlobalEnvParams diff --git a/cmd/kubeadm/app/phases/certs/pki_helpers_test.go b/cmd/kubeadm/app/phases/certs/pki_helpers_test.go index a8d16d9bf94..ea593fcded2 100644 --- a/cmd/kubeadm/app/phases/certs/pki_helpers_test.go +++ b/cmd/kubeadm/app/phases/certs/pki_helpers_test.go @@ -125,7 +125,7 @@ func TestWriteKeysAndCert(t *testing.T) { if err != nil { t.Fatalf("Couldn't create tmpdir") } - defer os.Remove(tmpdir) + defer os.RemoveAll(tmpdir) caKey, err := rsa.GenerateKey(rand.Reader, 2048) if err != nil { diff --git a/cmd/kubeadm/app/phases/kubeconfig/kubeconfig_test.go b/cmd/kubeadm/app/phases/kubeconfig/kubeconfig_test.go index b543226751d..d85bf3ded3a 100644 --- a/cmd/kubeadm/app/phases/kubeconfig/kubeconfig_test.go +++ b/cmd/kubeadm/app/phases/kubeconfig/kubeconfig_test.go @@ -142,7 +142,7 @@ func TestWriteKubeconfigToDisk(t *testing.T) { if err != nil { t.Fatalf("Couldn't create tmpdir") } - defer os.Remove(tmpdir) + defer os.RemoveAll(tmpdir) // set up tmp GlobalEnvParams values for testing oldEnv := kubeadmapi.GlobalEnvParams diff --git a/pkg/client/unversioned/clientcmd/loader_test.go b/pkg/client/unversioned/clientcmd/loader_test.go index 2558243da55..74319788aba 100644 --- a/pkg/client/unversioned/clientcmd/loader_test.go +++ b/pkg/client/unversioned/clientcmd/loader_test.go @@ -129,7 +129,7 @@ func TestErrorReadingNonFile(t *testing.T) { if err != nil { t.Fatalf("Couldn't create tmpdir") } - defer os.Remove(tmpdir) + defer os.RemoveAll(tmpdir) loadingRules := ClientConfigLoadingRules{ ExplicitPath: tmpdir, @@ -224,14 +224,15 @@ func TestResolveRelativePaths(t *testing.T) { } configDir1, _ := ioutil.TempDir("", "") + defer os.RemoveAll(configDir1) configFile1 := path.Join(configDir1, ".kubeconfig") configDir1, _ = filepath.Abs(configDir1) - defer os.Remove(configFile1) + configDir2, _ := ioutil.TempDir("", "") + defer os.RemoveAll(configDir2) configDir2, _ = ioutil.TempDir(configDir2, "") configFile2 := path.Join(configDir2, ".kubeconfig") configDir2, _ = filepath.Abs(configDir2) - defer os.Remove(configFile2) WriteToFile(pathResolutionConfig1, configFile1) WriteToFile(pathResolutionConfig2, configFile2) diff --git a/pkg/kubectl/proxy_server_test.go b/pkg/kubectl/proxy_server_test.go index 8a5e1e8afa8..13213a9ff10 100644 --- a/pkg/kubectl/proxy_server_test.go +++ b/pkg/kubectl/proxy_server_test.go @@ -22,6 +22,7 @@ import ( "net/http" "net/http/httptest" "net/url" + "os" "path/filepath" "strings" "testing" @@ -234,6 +235,7 @@ func TestFileServing(t *testing.T) { if err != nil { t.Fatalf("error creating tmp dir: %v", err) } + defer os.RemoveAll(dir) if err := ioutil.WriteFile(filepath.Join(dir, fname), []byte(data), 0755); err != nil { t.Fatalf("error writing tmp file: %v", err) } diff --git a/pkg/kubelet/cm/container_manager_linux_test.go b/pkg/kubelet/cm/container_manager_linux_test.go index 37a4d645044..31e8c5356c9 100644 --- a/pkg/kubelet/cm/container_manager_linux_test.go +++ b/pkg/kubelet/cm/container_manager_linux_test.go @@ -152,6 +152,7 @@ func TestSoftRequirementsValidationSuccess(t *testing.T) { req := require.New(t) tempDir, err := ioutil.TempDir("", "") req.NoError(err) + defer os.RemoveAll(tempDir) req.NoError(ioutil.WriteFile(path.Join(tempDir, "cpu.cfs_period_us"), []byte("0"), os.ModePerm)) req.NoError(ioutil.WriteFile(path.Join(tempDir, "cpu.cfs_quota_us"), []byte("0"), os.ModePerm)) mountInt := &fakeMountInterface{ diff --git a/pkg/kubelet/dockertools/docker_manager_test.go b/pkg/kubelet/dockertools/docker_manager_test.go index a72b2676d84..4957757135c 100644 --- a/pkg/kubelet/dockertools/docker_manager_test.go +++ b/pkg/kubelet/dockertools/docker_manager_test.go @@ -17,6 +17,7 @@ limitations under the License. package dockertools import ( + "flag" "fmt" "io/ioutil" "net" @@ -59,6 +60,21 @@ import ( "k8s.io/kubernetes/pkg/util/intstr" ) +var testTempDir string + +func TestMain(m *testing.M) { + dir, err := ioutil.TempDir("", "dockertools") + if err != nil { + panic(err) + } + testTempDir = dir + + flag.Parse() + status := m.Run() + os.RemoveAll(testTempDir) + os.Exit(status) +} + type fakeHTTP struct { url string err error @@ -81,7 +97,7 @@ func (f *fakeRuntimeHelper) GenerateRunContainerOptions(pod *v1.Pod, container * var opts kubecontainer.RunContainerOptions var err error if len(container.TerminationMessagePath) != 0 { - testPodContainerDir, err = ioutil.TempDir("", "fooPodContainerDir") + testPodContainerDir, err = ioutil.TempDir(testTempDir, "fooPodContainerDir") if err != nil { return nil, err } diff --git a/pkg/kubelet/kubelet_cadvisor_test.go b/pkg/kubelet/kubelet_cadvisor_test.go index 6c21547d5f4..3e544189fa2 100644 --- a/pkg/kubelet/kubelet_cadvisor_test.go +++ b/pkg/kubelet/kubelet_cadvisor_test.go @@ -36,6 +36,7 @@ func TestGetContainerInfo(t *testing.T) { } testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() fakeRuntime := testKubelet.fakeRuntime kubelet := testKubelet.kubelet cadvisorReq := &cadvisorapi.ContainerInfoRequest{} @@ -72,6 +73,7 @@ func TestGetRawContainerInfoRoot(t *testing.T) { }, } testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet mockCadvisor := testKubelet.fakeCadvisor cadvisorReq := &cadvisorapi.ContainerInfoRequest{} @@ -99,6 +101,7 @@ func TestGetRawContainerInfoSubcontainers(t *testing.T) { }, } testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet mockCadvisor := testKubelet.fakeCadvisor cadvisorReq := &cadvisorapi.ContainerInfoRequest{} @@ -117,6 +120,7 @@ func TestGetRawContainerInfoSubcontainers(t *testing.T) { func TestGetContainerInfoWhenCadvisorFailed(t *testing.T) { containerID := "ab2cdf" testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet mockCadvisor := testKubelet.fakeCadvisor fakeRuntime := testKubelet.fakeRuntime @@ -152,6 +156,7 @@ func TestGetContainerInfoWhenCadvisorFailed(t *testing.T) { func TestGetContainerInfoOnNonExistContainer(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet mockCadvisor := testKubelet.fakeCadvisor fakeRuntime := testKubelet.fakeRuntime @@ -166,6 +171,7 @@ func TestGetContainerInfoOnNonExistContainer(t *testing.T) { func TestGetContainerInfoWhenContainerRuntimeFailed(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet mockCadvisor := testKubelet.fakeCadvisor fakeRuntime := testKubelet.fakeRuntime @@ -187,6 +193,7 @@ func TestGetContainerInfoWhenContainerRuntimeFailed(t *testing.T) { func TestGetContainerInfoWithNoContainers(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet mockCadvisor := testKubelet.fakeCadvisor @@ -205,6 +212,7 @@ func TestGetContainerInfoWithNoContainers(t *testing.T) { func TestGetContainerInfoWithNoMatchingContainers(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() fakeRuntime := testKubelet.fakeRuntime kubelet := testKubelet.kubelet mockCadvisor := testKubelet.fakeCadvisor @@ -253,6 +261,7 @@ func TestHasDedicatedImageFs(t *testing.T) { } for testName, testCase := range testCases { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet mockCadvisor := testKubelet.fakeCadvisor mockCadvisor.On("Start").Return(nil) diff --git a/pkg/kubelet/kubelet_getters_test.go b/pkg/kubelet/kubelet_getters_test.go index 0c05c39435f..c72145d9750 100644 --- a/pkg/kubelet/kubelet_getters_test.go +++ b/pkg/kubelet/kubelet_getters_test.go @@ -25,6 +25,7 @@ import ( func TestKubeletDirs(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet root := kubelet.rootDirectory @@ -87,6 +88,7 @@ func TestKubeletDirs(t *testing.T) { func TestKubeletDirsCompat(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet root := kubelet.rootDirectory if err := os.MkdirAll(root, 0750); err != nil { diff --git a/pkg/kubelet/kubelet_network_test.go b/pkg/kubelet/kubelet_network_test.go index 8f4c74b07bf..10be66aba6e 100644 --- a/pkg/kubelet/kubelet_network_test.go +++ b/pkg/kubelet/kubelet_network_test.go @@ -30,6 +30,7 @@ import ( func TestNodeIPParam(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet tests := []struct { nodeIP string @@ -98,6 +99,7 @@ func TestParseResolvConf(t *testing.T) { {"#comment\nnameserver 1.2.3.4\n#comment\nsearch foo\ncomment", []string{"1.2.3.4"}, []string{"foo"}}, } testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet for i, tc := range testCases { ns, srch, err := kubelet.parseResolvConf(strings.NewReader(tc.data)) @@ -258,6 +260,7 @@ func TestCleanupBandwidthLimits(t *testing.T) { } testKube := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKube.Cleanup() testKube.kubelet.shaper = shaper for _, pod := range test.pods { diff --git a/pkg/kubelet/kubelet_node_status_test.go b/pkg/kubelet/kubelet_node_status_test.go index 2ca5fbd63df..46262f78328 100644 --- a/pkg/kubelet/kubelet_node_status_test.go +++ b/pkg/kubelet/kubelet_node_status_test.go @@ -114,6 +114,7 @@ func TestUpdateNewNodeStatus(t *testing.T) { inputImageList, expectedImageList := generateTestingImageList(maxImagesInNodeStatus + 1) testKubelet := newTestKubeletWithImageList( t, inputImageList, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet kubeClient := testKubelet.fakeKubeClient existingNode := v1.Node{ObjectMeta: metav1.ObjectMeta{Name: testKubeletHostname}} @@ -253,6 +254,7 @@ func TestUpdateNewNodeStatus(t *testing.T) { func TestUpdateNewNodeOutOfDiskStatusWithTransitionFrequency(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet kubeClient := testKubelet.fakeKubeClient existingNode := v1.Node{ObjectMeta: metav1.ObjectMeta{Name: testKubeletHostname}} @@ -328,6 +330,7 @@ func TestUpdateNewNodeOutOfDiskStatusWithTransitionFrequency(t *testing.T) { func TestUpdateExistingNodeStatus(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet kubeClient := testKubelet.fakeKubeClient existingNode := v1.Node{ @@ -523,6 +526,7 @@ func TestUpdateExistingNodeStatus(t *testing.T) { func TestUpdateExistingNodeOutOfDiskStatusWithTransitionFrequency(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet clock := testKubelet.fakeClock // Do not set nano second, because apiserver function doesn't support nano second. (Only support @@ -681,6 +685,7 @@ func TestUpdateExistingNodeOutOfDiskStatusWithTransitionFrequency(t *testing.T) func TestUpdateNodeStatusWithRuntimeStateError(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet clock := testKubelet.fakeClock kubeClient := testKubelet.fakeKubeClient @@ -900,6 +905,7 @@ func TestUpdateNodeStatusWithRuntimeStateError(t *testing.T) { func TestUpdateNodeStatusError(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet // No matching node for the kubelet testKubelet.fakeKubeClient.ReactionChain = fake.NewSimpleClientset(&v1.NodeList{Items: []v1.Node{}}).ReactionChain @@ -914,6 +920,7 @@ func TestUpdateNodeStatusError(t *testing.T) { func TestRegisterWithApiServer(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet kubeClient := testKubelet.fakeKubeClient kubeClient.AddReactor("create", "nodes", func(action core.Action) (bool, runtime.Object, error) { @@ -1094,6 +1101,7 @@ func TestTryRegisterWithApiServer(t *testing.T) { for _, tc := range cases { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled is a don't-care for this test */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet kubeClient := testKubelet.fakeKubeClient diff --git a/pkg/kubelet/kubelet_pods_test.go b/pkg/kubelet/kubelet_pods_test.go index 1247e382c74..ea73e8125aa 100644 --- a/pkg/kubelet/kubelet_pods_test.go +++ b/pkg/kubelet/kubelet_pods_test.go @@ -114,6 +114,7 @@ func TestMakeMounts(t *testing.T) { func TestRunInContainerNoSuchPod(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet fakeRuntime := testKubelet.fakeRuntime fakeRuntime.PodList = []*containertest.FakePod{} @@ -133,6 +134,7 @@ func TestRunInContainerNoSuchPod(t *testing.T) { func TestRunInContainer(t *testing.T) { for _, testError := range []error{nil, errors.New("bar")} { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet fakeRuntime := testKubelet.fakeRuntime fakeCommandRunner := containertest.FakeContainerCommandRunner{ @@ -166,6 +168,7 @@ func TestRunInContainer(t *testing.T) { func TestGenerateRunContainerOptions_DNSConfigurationParams(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet clusterNS := "203.0.113.1" @@ -925,6 +928,7 @@ func TestMakeEnvironmentVariables(t *testing.T) { for _, tc := range testCases { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kl := testKubelet.kubelet kl.masterServiceNamespace = tc.masterServiceNs if tc.nilLister { @@ -1398,6 +1402,7 @@ func TestExec(t *testing.T) { for _, tc := range testcases { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet testKubelet.fakeRuntime.PodList = []*containertest.FakePod{ {Pod: &kubecontainer.Pod{ @@ -1488,6 +1493,7 @@ func TestPortForward(t *testing.T) { for _, tc := range testcases { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet testKubelet.fakeRuntime.PodList = []*containertest.FakePod{ {Pod: &kubecontainer.Pod{ @@ -1635,6 +1641,7 @@ func TestHasHostMountPVC(t *testing.T) { for k, v := range tests { testKubelet := newTestKubelet(t, false) + defer testKubelet.Cleanup() pod := &v1.Pod{ Spec: v1.PodSpec{}, } diff --git a/pkg/kubelet/kubelet_resources_test.go b/pkg/kubelet/kubelet_resources_test.go index b0a09da9222..69f37bd5cf2 100644 --- a/pkg/kubelet/kubelet_resources_test.go +++ b/pkg/kubelet/kubelet_resources_test.go @@ -33,6 +33,7 @@ func TestPodResourceLimitsDefaulting(t *testing.T) { cpuCores := resource.MustParse("10") memoryCapacity := resource.MustParse("10Gi") tk := newTestKubelet(t, true) + defer tk.Cleanup() tk.fakeCadvisor.On("VersionInfo").Return(&cadvisorapi.VersionInfo{}, nil) tk.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{ NumCores: int(cpuCores.Value()), diff --git a/pkg/kubelet/kubelet_test.go b/pkg/kubelet/kubelet_test.go index d29f5139f6a..c8e6b437f15 100644 --- a/pkg/kubelet/kubelet_test.go +++ b/pkg/kubelet/kubelet_test.go @@ -107,6 +107,12 @@ type TestKubelet struct { volumePlugin *volumetest.FakeVolumePlugin } +func (tk *TestKubelet) Cleanup() { + if tk.kubelet != nil { + os.RemoveAll(tk.kubelet.rootDirectory) + } +} + // newTestKubelet returns test kubelet with two images. func newTestKubelet(t *testing.T, controllerAttachDetachEnabled bool) *TestKubelet { imageList := []kubecontainer.Image{ @@ -291,6 +297,7 @@ var emptyPodUIDs map[types.UID]kubetypes.SyncPodType func TestSyncLoopTimeUpdate(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil) kubelet := testKubelet.kubelet @@ -316,6 +323,7 @@ func TestSyncLoopTimeUpdate(t *testing.T) { func TestSyncLoopAbort(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil) kubelet := testKubelet.kubelet kubelet.runtimeState.setRuntimeSync(time.Now()) @@ -336,6 +344,7 @@ func TestSyncLoopAbort(t *testing.T) { func TestSyncPodsStartPod(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() testKubelet.fakeCadvisor.On("VersionInfo").Return(&cadvisorapi.VersionInfo{}, nil) testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil) testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil) @@ -358,6 +367,7 @@ func TestSyncPodsDeletesWhenSourcesAreReady(t *testing.T) { ready := false testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() fakeRuntime := testKubelet.fakeRuntime testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil) testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil) @@ -412,6 +422,7 @@ func (ls testNodeLister) List() (v1.NodeList, error) { // Tests that we handle port conflicts correctly by setting the failed status in status map. func TestHandlePortConflicts(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kl := testKubelet.kubelet testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil) testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil) @@ -529,6 +540,7 @@ func TestCriticalPrioritySorting(t *testing.T) { // Tests that we handle host name conflicts correctly by setting the failed status in status map. func TestHandleHostNameConflicts(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kl := testKubelet.kubelet testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil) testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil) @@ -580,6 +592,7 @@ func TestHandleHostNameConflicts(t *testing.T) { // Tests that we handle not matching labels selector correctly by setting the failed status in status map. func TestHandleNodeSelector(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kl := testKubelet.kubelet nodes := []v1.Node{ { @@ -620,6 +633,7 @@ func TestHandleNodeSelector(t *testing.T) { // Tests that we handle exceeded resources correctly by setting the failed status in status map. func TestHandleMemExceeded(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kl := testKubelet.kubelet nodes := []v1.Node{ {ObjectMeta: metav1.ObjectMeta{Name: testKubeletHostname}, @@ -669,6 +683,7 @@ func TestHandleMemExceeded(t *testing.T) { // TODO(filipg): This test should be removed once StatusSyncer can do garbage collection without external signal. func TestPurgingObsoleteStatusMapEntries(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil) testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil) testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil) @@ -700,6 +715,7 @@ func TestPurgingObsoleteStatusMapEntries(t *testing.T) { func TestValidateContainerLogStatus(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet containerName := "x" testCases := []struct { @@ -826,6 +842,7 @@ func updateDiskSpacePolicy(kubelet *Kubelet, mockCadvisor *cadvisortest.Mock, ro func TestCreateMirrorPod(t *testing.T) { for _, updateType := range []kubetypes.SyncPodType{kubetypes.SyncPodCreate, kubetypes.SyncPodUpdate} { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() testKubelet.fakeCadvisor.On("Start").Return(nil) testKubelet.fakeCadvisor.On("VersionInfo").Return(&cadvisorapi.VersionInfo{}, nil) testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil) @@ -852,6 +869,7 @@ func TestCreateMirrorPod(t *testing.T) { func TestDeleteOutdatedMirrorPod(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() testKubelet.fakeCadvisor.On("Start").Return(nil) testKubelet.fakeCadvisor.On("VersionInfo").Return(&cadvisorapi.VersionInfo{}, nil) testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil) @@ -894,6 +912,7 @@ func TestDeleteOutdatedMirrorPod(t *testing.T) { func TestDeleteOrphanedMirrorPods(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() testKubelet.fakeCadvisor.On("Start").Return(nil) testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil) testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil) @@ -985,6 +1004,7 @@ func TestGetContainerInfoForMirrorPods(t *testing.T) { } testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() fakeRuntime := testKubelet.fakeRuntime mockCadvisor := testKubelet.fakeCadvisor cadvisorReq := &cadvisorapi.ContainerInfoRequest{} @@ -1015,6 +1035,7 @@ func TestGetContainerInfoForMirrorPods(t *testing.T) { func TestHostNetworkAllowed(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() testKubelet.fakeCadvisor.On("Start").Return(nil) testKubelet.fakeCadvisor.On("VersionInfo").Return(&cadvisorapi.VersionInfo{}, nil) testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil) @@ -1047,6 +1068,7 @@ func TestHostNetworkAllowed(t *testing.T) { func TestHostNetworkDisallowed(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() testKubelet.fakeCadvisor.On("Start").Return(nil) testKubelet.fakeCadvisor.On("VersionInfo").Return(&cadvisorapi.VersionInfo{}, nil) testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil) @@ -1078,6 +1100,7 @@ func TestHostNetworkDisallowed(t *testing.T) { func TestPrivilegeContainerAllowed(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() testKubelet.fakeCadvisor.On("Start").Return(nil) testKubelet.fakeCadvisor.On("VersionInfo").Return(&cadvisorapi.VersionInfo{}, nil) testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil) @@ -1107,6 +1130,7 @@ func TestPrivilegeContainerAllowed(t *testing.T) { func TestPrivilegedContainerDisallowed(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() testKubelet.fakeCadvisor.On("VersionInfo").Return(&cadvisorapi.VersionInfo{}, nil) testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil) testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil) @@ -1133,6 +1157,7 @@ func TestPrivilegedContainerDisallowed(t *testing.T) { func TestNetworkErrorsWithoutHostNetwork(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() testKubelet.fakeCadvisor.On("VersionInfo").Return(&cadvisorapi.VersionInfo{}, nil) testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil) testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil) @@ -1174,6 +1199,7 @@ func TestNetworkErrorsWithoutHostNetwork(t *testing.T) { func TestFilterOutTerminatedPods(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet pods := newTestPods(5) pods[0].Status.Phase = v1.PodFailed @@ -1240,6 +1266,7 @@ func TestMakePortMappings(t *testing.T) { func TestSyncPodsSetStatusToFailedForPodsThatRunTooLong(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() fakeRuntime := testKubelet.fakeRuntime testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil) kubelet := testKubelet.kubelet @@ -1287,6 +1314,7 @@ func TestSyncPodsSetStatusToFailedForPodsThatRunTooLong(t *testing.T) { func TestSyncPodsDoesNotSetPodsThatDidNotRunTooLongToFailed(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() fakeRuntime := testKubelet.fakeRuntime testKubelet.fakeCadvisor.On("Start").Return(nil) testKubelet.fakeCadvisor.On("VersionInfo").Return(&cadvisorapi.VersionInfo{}, nil) @@ -1356,6 +1384,7 @@ func podWithUidNameNsSpec(uid types.UID, name, namespace string, spec v1.PodSpec func TestDeletePodDirsForDeletedPods(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() testKubelet.fakeCadvisor.On("Start").Return(nil) testKubelet.fakeCadvisor.On("VersionInfo").Return(&cadvisorapi.VersionInfo{}, nil) testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil) @@ -1395,6 +1424,7 @@ func syncAndVerifyPodDir(t *testing.T, testKubelet *TestKubelet, pods []*v1.Pod, func TestDoesNotDeletePodDirsForTerminatedPods(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() testKubelet.fakeCadvisor.On("Start").Return(nil) testKubelet.fakeCadvisor.On("VersionInfo").Return(&cadvisorapi.VersionInfo{}, nil) testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil) @@ -1417,6 +1447,7 @@ func TestDoesNotDeletePodDirsForTerminatedPods(t *testing.T) { func TestDoesNotDeletePodDirsIfContainerIsRunning(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() testKubelet.fakeCadvisor.On("Start").Return(nil) testKubelet.fakeCadvisor.On("VersionInfo").Return(&cadvisorapi.VersionInfo{}, nil) testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil) @@ -1449,6 +1480,7 @@ func TestDoesNotDeletePodDirsIfContainerIsRunning(t *testing.T) { func TestGetPodsToSync(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet clock := testKubelet.fakeClock pods := newTestPods(5) @@ -1479,6 +1511,7 @@ func TestGetPodsToSync(t *testing.T) { func TestGenerateAPIPodStatusWithSortedContainers(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() testKubelet.fakeCadvisor.On("VersionInfo").Return(&cadvisorapi.VersionInfo{}, nil) testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil) testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil) @@ -1541,6 +1574,7 @@ func TestGenerateAPIPodStatusWithReasonCache(t *testing.T) { testErrorReason := fmt.Errorf("test-error") emptyContainerID := (&kubecontainer.ContainerID{}).String() testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() testKubelet.fakeCadvisor.On("VersionInfo").Return(&cadvisorapi.VersionInfo{}, nil) testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil) testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil) @@ -1730,6 +1764,7 @@ func TestGenerateAPIPodStatusWithDifferentRestartPolicies(t *testing.T) { testErrorReason := fmt.Errorf("test-error") emptyContainerID := (&kubecontainer.ContainerID{}).String() testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() testKubelet.fakeCadvisor.On("VersionInfo").Return(&cadvisorapi.VersionInfo{}, nil) testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil) testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil) @@ -1896,6 +1931,7 @@ func (a *testPodAdmitHandler) Admit(attrs *lifecycle.PodAdmitAttributes) lifecyc // Test verifies that the kubelet invokes an admission handler during HandlePodAdditions. func TestHandlePodAdditionsInvokesPodAdmitHandlers(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kl := testKubelet.kubelet kl.nodeLister = testNodeLister{nodes: []v1.Node{ { @@ -1975,6 +2011,7 @@ func (a *testPodSyncLoopHandler) ShouldSync(pod *v1.Pod) bool { // TestGetPodsToSyncInvokesPodSyncLoopHandlers ensures that the get pods to sync routine invokes the handler. func TestGetPodsToSyncInvokesPodSyncLoopHandlers(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet pods := newTestPods(5) expected := []*v1.Pod{pods[0]} @@ -2010,6 +2047,7 @@ func (a *testPodSyncHandler) ShouldEvict(pod *v1.Pod) lifecycle.ShouldEvictRespo // TestGenerateAPIPodStatusInvokesPodSyncHandlers invokes the handlers and reports the proper status func TestGenerateAPIPodStatusInvokesPodSyncHandlers(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet pod := newTestPods(1)[0] podsToEvict := []*v1.Pod{pod} @@ -2027,6 +2065,7 @@ func TestGenerateAPIPodStatusInvokesPodSyncHandlers(t *testing.T) { func TestSyncPodKillPod(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kl := testKubelet.kubelet pod := &v1.Pod{ ObjectMeta: metav1.ObjectMeta{ diff --git a/pkg/kubelet/kubelet_volumes_test.go b/pkg/kubelet/kubelet_volumes_test.go index f9d20112dd6..1097c244168 100644 --- a/pkg/kubelet/kubelet_volumes_test.go +++ b/pkg/kubelet/kubelet_volumes_test.go @@ -86,6 +86,7 @@ func TestListVolumesForPod(t *testing.T) { func TestPodVolumesExist(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet pods := []*v1.Pod{ @@ -170,6 +171,7 @@ func TestPodVolumesExist(t *testing.T) { func TestVolumeAttachAndMountControllerDisabled(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet pod := podWithUidNameNsSpec("12345678", "foo", "test", v1.PodSpec{ @@ -215,6 +217,7 @@ func TestVolumeAttachAndMountControllerDisabled(t *testing.T) { func TestVolumeUnmountAndDetachControllerDisabled(t *testing.T) { testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet pod := podWithUidNameNsSpec("12345678", "foo", "test", v1.PodSpec{ @@ -285,6 +288,7 @@ func TestVolumeUnmountAndDetachControllerDisabled(t *testing.T) { func TestVolumeAttachAndMountControllerEnabled(t *testing.T) { testKubelet := newTestKubelet(t, true /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet kubeClient := testKubelet.fakeKubeClient kubeClient.AddReactor("get", "nodes", @@ -353,6 +357,7 @@ func TestVolumeAttachAndMountControllerEnabled(t *testing.T) { func TestVolumeUnmountAndDetachControllerEnabled(t *testing.T) { testKubelet := newTestKubelet(t, true /* controllerAttachDetachEnabled */) + defer testKubelet.Cleanup() kubelet := testKubelet.kubelet kubeClient := testKubelet.fakeKubeClient kubeClient.AddReactor("get", "nodes", diff --git a/pkg/storage/storagebackend/factory/tls_test.go b/pkg/storage/storagebackend/factory/tls_test.go index 448cf16f377..23c76346c32 100644 --- a/pkg/storage/storagebackend/factory/tls_test.go +++ b/pkg/storage/storagebackend/factory/tls_test.go @@ -20,6 +20,7 @@ import ( "io/ioutil" "os" "path" + "path/filepath" "testing" "golang.org/x/net/context" @@ -35,6 +36,7 @@ import ( func TestTLSConnection(t *testing.T) { certFile, keyFile, caFile := configureTLSCerts(t) + defer os.RemoveAll(filepath.Dir(certFile)) tlsInfo := &transport.TLSInfo{ CertFile: certFile, diff --git a/pkg/volume/flocker/flocker_test.go b/pkg/volume/flocker/flocker_test.go index 9b7d5b7d7b7..a7e8e13f342 100644 --- a/pkg/volume/flocker/flocker_test.go +++ b/pkg/volume/flocker/flocker_test.go @@ -165,7 +165,8 @@ func TestPlugin(t *testing.T) { func TestGetByName(t *testing.T) { assert := assert.New(t) - plugMgr, _ := newInitializedVolumePlugMgr(t) + plugMgr, dir := newInitializedVolumePlugMgr(t) + defer os.RemoveAll(dir) plug, err := plugMgr.FindPluginByName(pluginName) assert.NotNil(plug, "Can't find the plugin by name") @@ -174,7 +175,8 @@ func TestGetByName(t *testing.T) { func TestCanSupport(t *testing.T) { assert := assert.New(t) - plugMgr, _ := newInitializedVolumePlugMgr(t) + plugMgr, dir := newInitializedVolumePlugMgr(t) + defer os.RemoveAll(dir) plug, err := plugMgr.FindPluginByName(pluginName) assert.NoError(err) @@ -242,7 +244,8 @@ func TestGetFlockerVolumeSource(t *testing.T) { func TestNewMounterDatasetName(t *testing.T) { assert := assert.New(t) - plugMgr, _ := newInitializedVolumePlugMgr(t) + plugMgr, dir := newInitializedVolumePlugMgr(t) + defer os.RemoveAll(dir) plug, err := plugMgr.FindPluginByName(pluginName) assert.NoError(err) @@ -263,7 +266,8 @@ func TestNewMounterDatasetName(t *testing.T) { func TestNewMounterDatasetUUID(t *testing.T) { assert := assert.New(t) - plugMgr, _ := newInitializedVolumePlugMgr(t) + plugMgr, dir := newInitializedVolumePlugMgr(t) + defer os.RemoveAll(dir) plug, err := plugMgr.FindPluginByName(pluginName) assert.NoError(err) diff --git a/pkg/volume/flocker/flocker_util_test.go b/pkg/volume/flocker/flocker_util_test.go index d10c1c148d2..c47ca006715 100644 --- a/pkg/volume/flocker/flocker_util_test.go +++ b/pkg/volume/flocker/flocker_util_test.go @@ -18,6 +18,7 @@ package flocker import ( "fmt" + "os" "testing" "k8s.io/kubernetes/pkg/api/v1" @@ -38,7 +39,9 @@ func TestFlockerUtil_CreateVolume(t *testing.T) { } fakeFlockerClient := newFakeFlockerClient() - provisioner := newTestableProvisioner(assert, options).(*flockerVolumeProvisioner) + dir, p := newTestableProvisioner(assert, options) + provisioner := p.(*flockerVolumeProvisioner) + defer os.RemoveAll(dir) provisioner.flockerClient = fakeFlockerClient flockerUtil := &FlockerUtil{} diff --git a/pkg/volume/flocker/flocker_volume_test.go b/pkg/volume/flocker/flocker_volume_test.go index 3bd6fa40eff..82c1bd20c83 100644 --- a/pkg/volume/flocker/flocker_volume_test.go +++ b/pkg/volume/flocker/flocker_volume_test.go @@ -18,6 +18,7 @@ package flocker import ( "fmt" + "os" "testing" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -29,7 +30,7 @@ import ( "github.com/stretchr/testify/assert" ) -func newTestableProvisioner(assert *assert.Assertions, options volume.VolumeOptions) volume.Provisioner { +func newTestableProvisioner(assert *assert.Assertions, options volume.VolumeOptions) (string, volume.Provisioner) { tmpDir, err := utiltesting.MkTmpdir("flockervolumeTest") assert.NoError(err, fmt.Sprintf("can't make a temp dir: %v", err)) @@ -41,7 +42,7 @@ func newTestableProvisioner(assert *assert.Assertions, options volume.VolumeOpti provisioner, err := plug.(*flockerPlugin).newProvisionerInternal(options, &fakeFlockerUtil{}) - return provisioner + return tmpDir, provisioner } func TestProvision(t *testing.T) { @@ -53,7 +54,8 @@ func TestProvision(t *testing.T) { PersistentVolumeReclaimPolicy: v1.PersistentVolumeReclaimDelete, } - provisioner := newTestableProvisioner(assert, options) + dir, provisioner := newTestableProvisioner(assert, options) + defer os.RemoveAll(dir) persistentSpec, err := provisioner.Provision() assert.NoError(err, "Provision() failed: ", err) @@ -81,7 +83,8 @@ func TestProvision(t *testing.T) { }, } - provisioner = newTestableProvisioner(assert, options) + dir, provisioner = newTestableProvisioner(assert, options) + defer os.RemoveAll(dir) persistentSpec, err = provisioner.Provision() assert.Error(err, "Provision() did not fail with Parameters specified") @@ -92,8 +95,8 @@ func TestProvision(t *testing.T) { PersistentVolumeReclaimPolicy: v1.PersistentVolumeReclaimDelete, } - provisioner = newTestableProvisioner(assert, options) + dir, provisioner = newTestableProvisioner(assert, options) + defer os.RemoveAll(dir) persistentSpec, err = provisioner.Provision() assert.Error(err, "Provision() did not fail with Selector specified") - } diff --git a/pkg/volume/testing/testing.go b/pkg/volume/testing/testing.go index 4da0587d58b..5d2894e5230 100644 --- a/pkg/volume/testing/testing.go +++ b/pkg/volume/testing/testing.go @@ -508,6 +508,7 @@ func FindEmptyDirectoryUsageOnTmpfs() (*resource.Quantity, error) { if err != nil { return nil, err } + defer os.RemoveAll(tmpDir) out, err := exec.Command("nice", "-n", "19", "du", "-s", "-B", "1", tmpDir).CombinedOutput() if err != nil { return nil, fmt.Errorf("failed command 'du' on %s with error %v", tmpDir, err) diff --git a/pkg/volume/util/atomic_writer_test.go b/pkg/volume/util/atomic_writer_test.go index 7bcfd6823c3..6cec58a4180 100644 --- a/pkg/volume/util/atomic_writer_test.go +++ b/pkg/volume/util/atomic_writer_test.go @@ -37,6 +37,7 @@ func TestNewAtomicWriter(t *testing.T) { if err != nil { t.Fatalf("unexpected error creating tmp dir: %v", err) } + defer os.RemoveAll(targetDir) _, err = NewAtomicWriter(targetDir, "-test-") if err != nil { @@ -225,6 +226,7 @@ func TestPathsToRemove(t *testing.T) { t.Errorf("%v: unexpected error creating tmp dir: %v", tc.name, err) continue } + defer os.RemoveAll(targetDir) writer := &AtomicWriter{targetDir: targetDir, logContext: "-test-"} err = writer.Write(tc.payload1) @@ -382,6 +384,7 @@ IAAAAAAAsDyZDwU=` t.Errorf("%v: unexpected error creating tmp dir: %v", tc.name, err) continue } + defer os.RemoveAll(targetDir) writer := &AtomicWriter{targetDir: targetDir, logContext: "-test-"} err = writer.Write(tc.payload) @@ -557,6 +560,7 @@ func TestUpdate(t *testing.T) { t.Errorf("%v: unexpected error creating tmp dir: %v", tc.name, err) continue } + defer os.RemoveAll(targetDir) writer := &AtomicWriter{targetDir: targetDir, logContext: "-test-"} @@ -724,6 +728,7 @@ func TestMultipleUpdates(t *testing.T) { t.Errorf("%v: unexpected error creating tmp dir: %v", tc.name, err) continue } + defer os.RemoveAll(targetDir) writer := &AtomicWriter{targetDir: targetDir, logContext: "-test-"}