From b56848f006cbd6529863a2ed2a8bb51094b042a1 Mon Sep 17 00:00:00 2001 From: Eng Zer Jun Date: Tue, 22 Mar 2022 22:43:29 +0800 Subject: [PATCH] test: use `T.TempDir` to create temporary test directory (#44947) The directory created by `T.TempDir` is automatically removed when the test and all its subtests complete. Reference: https://pkg.go.dev/testing#T.TempDir Signed-off-by: Eng Zer Jun --- pkg/infra/fs/copy_test.go | 32 ++++--------------- pkg/infra/fs/exists_test.go | 7 +--- .../ngalert/api/api_alertmanager_test.go | 12 +------ .../ngalert/notifier/alertmanager_test.go | 8 +---- .../notifier/multiorg_alertmanager_test.go | 21 ++---------- pkg/tests/testinfra/testinfra.go | 10 ++---- 6 files changed, 14 insertions(+), 76 deletions(-) diff --git a/pkg/infra/fs/copy_test.go b/pkg/infra/fs/copy_test.go index 98df755b3ce..f77dbc5a0b3 100644 --- a/pkg/infra/fs/copy_test.go +++ b/pkg/infra/fs/copy_test.go @@ -77,25 +77,15 @@ func TestCopyFile_NonExistentDestDir(t *testing.T) { } func TestCopyRecursive_NonExistentDest(t *testing.T) { - src, err := ioutil.TempDir("", "") - require.NoError(t, err) - t.Cleanup(func() { - err := os.RemoveAll(src) - assert.NoError(t, err) - }) + src := t.TempDir() - err = os.MkdirAll(filepath.Join(src, "data"), 0750) + err := os.MkdirAll(filepath.Join(src, "data"), 0750) require.NoError(t, err) // nolint:gosec err = ioutil.WriteFile(filepath.Join(src, "data", "file.txt"), []byte("Test"), 0644) require.NoError(t, err) - dstParent, err := ioutil.TempDir("", "") - require.NoError(t, err) - t.Cleanup(func() { - err := os.RemoveAll(dstParent) - assert.NoError(t, err) - }) + dstParent := t.TempDir() dst := filepath.Join(dstParent, "dest") @@ -106,25 +96,15 @@ func TestCopyRecursive_NonExistentDest(t *testing.T) { } func TestCopyRecursive_ExistentDest(t *testing.T) { - src, err := ioutil.TempDir("", "") - require.NoError(t, err) - t.Cleanup(func() { - err := os.RemoveAll(src) - assert.NoError(t, err) - }) + src := t.TempDir() - err = os.MkdirAll(filepath.Join(src, "data"), 0750) + err := os.MkdirAll(filepath.Join(src, "data"), 0750) require.NoError(t, err) // nolint:gosec err = ioutil.WriteFile(filepath.Join(src, "data", "file.txt"), []byte("Test"), 0644) require.NoError(t, err) - dst, err := ioutil.TempDir("", "") - require.NoError(t, err) - t.Cleanup(func() { - err := os.RemoveAll(dst) - assert.NoError(t, err) - }) + dst := t.TempDir() err = CopyRecursive(src, dst) require.NoError(t, err) diff --git a/pkg/infra/fs/exists_test.go b/pkg/infra/fs/exists_test.go index 6d2ab13ced8..3b6dbec3442 100644 --- a/pkg/infra/fs/exists_test.go +++ b/pkg/infra/fs/exists_test.go @@ -31,12 +31,7 @@ func TestExists_Existent(t *testing.T) { } func TestExists_Dir(t *testing.T) { - f, err := ioutil.TempDir("", "") - require.NoError(t, err) - t.Cleanup(func() { - err := os.Remove(f) - assert.NoError(t, err) - }) + f := t.TempDir() exists, err := Exists(f) diff --git a/pkg/services/ngalert/api/api_alertmanager_test.go b/pkg/services/ngalert/api/api_alertmanager_test.go index 0e88ddc4542..625dfbb097d 100644 --- a/pkg/services/ngalert/api/api_alertmanager_test.go +++ b/pkg/services/ngalert/api/api_alertmanager_test.go @@ -2,9 +2,7 @@ package api import ( "context" - "io/ioutil" "net/http" - "os" "testing" "time" @@ -258,8 +256,7 @@ func createMultiOrgAlertmanager(t *testing.T) *notifier.MultiOrgAlertmanager { } configStore := notifier.NewFakeConfigStore(t, configs) orgStore := notifier.NewFakeOrgStore(t, []int64{1, 2, 3}) - tmpDir, err := ioutil.TempDir("", "test") - require.NoError(t, err) + tmpDir := t.TempDir() kvStore := notifier.NewFakeKVStore(t) secretsService := secretsManager.SetupTestService(t, fakes.NewFakeSecretsStore()) reg := prometheus.NewPedanticRegistry() @@ -276,18 +273,11 @@ func createMultiOrgAlertmanager(t *testing.T) *notifier.MultiOrgAlertmanager { mam, err := notifier.NewMultiOrgAlertmanager(cfg, &configStore, &orgStore, kvStore, decryptFn, m.GetMultiOrgAlertmanagerMetrics(), nil, log.New("testlogger")) require.NoError(t, err) - t.Cleanup(cleanOrgDirectories(tmpDir, t)) err = mam.LoadAndSyncAlertmanagersForOrgs(context.Background()) require.NoError(t, err) return mam } -func cleanOrgDirectories(path string, t *testing.T) func() { - return func() { - require.NoError(t, os.RemoveAll(path)) - } -} - var validConfig = setting.GetAlertmanagerDefaultConfiguration() var brokenConfig = ` diff --git a/pkg/services/ngalert/notifier/alertmanager_test.go b/pkg/services/ngalert/notifier/alertmanager_test.go index d3fa2bc1ea8..15804426c3f 100644 --- a/pkg/services/ngalert/notifier/alertmanager_test.go +++ b/pkg/services/ngalert/notifier/alertmanager_test.go @@ -3,8 +3,6 @@ package notifier import ( "context" "errors" - "io/ioutil" - "os" "sort" "testing" "time" @@ -29,11 +27,7 @@ import ( ) func setupAMTest(t *testing.T) *Alertmanager { - dir, err := ioutil.TempDir("", "") - require.NoError(t, err) - t.Cleanup(func() { - require.NoError(t, os.RemoveAll(dir)) - }) + dir := t.TempDir() cfg := &setting.Cfg{ DataPath: dir, } diff --git a/pkg/services/ngalert/notifier/multiorg_alertmanager_test.go b/pkg/services/ngalert/notifier/multiorg_alertmanager_test.go index 9b270bd9b70..6dd2f020be0 100644 --- a/pkg/services/ngalert/notifier/multiorg_alertmanager_test.go +++ b/pkg/services/ngalert/notifier/multiorg_alertmanager_test.go @@ -5,7 +5,6 @@ import ( "context" "errors" "io/fs" - "io/ioutil" "os" "path/filepath" "testing" @@ -31,8 +30,7 @@ func TestMultiOrgAlertmanager_SyncAlertmanagersForOrgs(t *testing.T) { orgs: []int64{1, 2, 3}, } - tmpDir, err := ioutil.TempDir("", "test") - require.NoError(t, err) + tmpDir := t.TempDir() kvStore := NewFakeKVStore(t) secretsService := secretsManager.SetupTestService(t, fakes.NewFakeSecretsStore()) decryptFn := secretsService.GetDecryptedValue @@ -50,8 +48,6 @@ func TestMultiOrgAlertmanager_SyncAlertmanagersForOrgs(t *testing.T) { require.NoError(t, err) ctx := context.Background() - t.Cleanup(cleanOrgDirectories(tmpDir, t)) - // Ensure that one Alertmanager is created per org. { require.NoError(t, mam.LoadAndSyncAlertmanagersForOrgs(ctx)) @@ -159,8 +155,7 @@ func TestMultiOrgAlertmanager_SyncAlertmanagersForOrgsWithFailures(t *testing.T) orgs: []int64{1, 2, 3}, } - tmpDir, err := ioutil.TempDir("", "test") - require.NoError(t, err) + tmpDir := t.TempDir() kvStore := NewFakeKVStore(t) secretsService := secretsManager.SetupTestService(t, fakes.NewFakeSecretsStore()) decryptFn := secretsService.GetDecryptedValue @@ -213,8 +208,7 @@ func TestMultiOrgAlertmanager_AlertmanagerFor(t *testing.T) { orgStore := &FakeOrgStore{ orgs: []int64{1, 2, 3}, } - tmpDir, err := ioutil.TempDir("", "test") - require.NoError(t, err) + tmpDir := t.TempDir() cfg := &setting.Cfg{ DataPath: tmpDir, UnifiedAlerting: setting.UnifiedAlertingSettings{AlertmanagerConfigPollInterval: 3 * time.Minute, DefaultConfiguration: setting.GetAlertmanagerDefaultConfiguration()}, // do not poll in tests. @@ -228,8 +222,6 @@ func TestMultiOrgAlertmanager_AlertmanagerFor(t *testing.T) { require.NoError(t, err) ctx := context.Background() - t.Cleanup(cleanOrgDirectories(tmpDir, t)) - // Ensure that one Alertmanagers is created per org. { require.NoError(t, mam.LoadAndSyncAlertmanagersForOrgs(ctx)) @@ -270,13 +262,6 @@ func TestMultiOrgAlertmanager_AlertmanagerFor(t *testing.T) { } } -// nolint:unused -func cleanOrgDirectories(path string, t *testing.T) func() { - return func() { - require.NoError(t, os.RemoveAll(path)) - } -} - var brokenConfig = ` "alertmanager_config": { "route": { diff --git a/pkg/tests/testinfra/testinfra.go b/pkg/tests/testinfra/testinfra.go index 4aaefae51b9..ad7d5f3029a 100644 --- a/pkg/tests/testinfra/testinfra.go +++ b/pkg/tests/testinfra/testinfra.go @@ -3,7 +3,6 @@ package testinfra import ( "context" "fmt" - "io/ioutil" "net" "net/http" "os" @@ -96,12 +95,7 @@ func SetUpDatabase(t *testing.T, grafDir string) *sqlstore.SQLStore { func CreateGrafDir(t *testing.T, opts ...GrafanaOpts) (string, string) { t.Helper() - tmpDir, err := ioutil.TempDir("", "") - require.NoError(t, err) - t.Cleanup(func() { - err := os.RemoveAll(tmpDir) - assert.NoError(t, err) - }) + tmpDir := t.TempDir() // Search upwards in directory tree for project root var rootDir string @@ -125,7 +119,7 @@ func CreateGrafDir(t *testing.T, opts ...GrafanaOpts) (string, string) { require.True(t, found, "Couldn't detect project root directory") cfgDir := filepath.Join(tmpDir, "conf") - err = os.MkdirAll(cfgDir, 0750) + err := os.MkdirAll(cfgDir, 0750) require.NoError(t, err) dataDir := filepath.Join(tmpDir, "data") // nolint:gosec