diff --git a/api/apikey/service_test.go b/api/apikey/service_test.go index 3f184efb4..a941ffa2a 100644 --- a/api/apikey/service_test.go +++ b/api/apikey/service_test.go @@ -20,7 +20,7 @@ func Test_SatisfiesAPIKeyServiceInterface(t *testing.T) { func Test_GenerateApiKey(t *testing.T) { is := assert.New(t) - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) defer teardown() service := NewAPIKeyService(store.APIKeyRepository(), store.User()) @@ -74,7 +74,7 @@ func Test_GenerateApiKey(t *testing.T) { func Test_GetAPIKey(t *testing.T) { is := assert.New(t) - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) defer teardown() service := NewAPIKeyService(store.APIKeyRepository(), store.User()) @@ -94,7 +94,7 @@ func Test_GetAPIKey(t *testing.T) { func Test_GetAPIKeys(t *testing.T) { is := assert.New(t) - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) defer teardown() service := NewAPIKeyService(store.APIKeyRepository(), store.User()) @@ -115,7 +115,7 @@ func Test_GetAPIKeys(t *testing.T) { func Test_GetDigestUserAndKey(t *testing.T) { is := assert.New(t) - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) defer teardown() service := NewAPIKeyService(store.APIKeyRepository(), store.User()) @@ -151,7 +151,7 @@ func Test_GetDigestUserAndKey(t *testing.T) { func Test_UpdateAPIKey(t *testing.T) { is := assert.New(t) - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) defer teardown() service := NewAPIKeyService(store.APIKeyRepository(), store.User()) @@ -199,7 +199,7 @@ func Test_UpdateAPIKey(t *testing.T) { func Test_DeleteAPIKey(t *testing.T) { is := assert.New(t) - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) defer teardown() service := NewAPIKeyService(store.APIKeyRepository(), store.User()) @@ -240,7 +240,7 @@ func Test_DeleteAPIKey(t *testing.T) { func Test_InvalidateUserKeyCache(t *testing.T) { is := assert.New(t) - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) defer teardown() service := NewAPIKeyService(store.APIKeyRepository(), store.User()) diff --git a/api/archive/targz_test.go b/api/archive/targz_test.go index ed8a67543..df17b8f4f 100644 --- a/api/archive/targz_test.go +++ b/api/archive/targz_test.go @@ -9,7 +9,6 @@ import ( "path/filepath" "testing" - "github.com/docker/docker/pkg/ioutils" "github.com/stretchr/testify/assert" ) @@ -27,9 +26,7 @@ func listFiles(dir string) []string { } func Test_shouldCreateArhive(t *testing.T) { - tmpdir, _ := ioutils.TempDir("", "backup") - defer os.RemoveAll(tmpdir) - + tmpdir := t.TempDir() content := []byte("content") ioutil.WriteFile(path.Join(tmpdir, "outer"), content, 0600) os.MkdirAll(path.Join(tmpdir, "dir"), 0700) @@ -40,9 +37,7 @@ func Test_shouldCreateArhive(t *testing.T) { assert.Nil(t, err) assert.Equal(t, filepath.Join(tmpdir, fmt.Sprintf("%s.tar.gz", filepath.Base(tmpdir))), gzPath) - extractionDir, _ := ioutils.TempDir("", "extract") - defer os.RemoveAll(extractionDir) - + extractionDir := t.TempDir() cmd := exec.Command("tar", "-xzf", gzPath, "-C", extractionDir) err = cmd.Run() if err != nil { @@ -63,9 +58,7 @@ func Test_shouldCreateArhive(t *testing.T) { } func Test_shouldCreateArhiveXXXXX(t *testing.T) { - tmpdir, _ := ioutils.TempDir("", "backup") - defer os.RemoveAll(tmpdir) - + tmpdir := t.TempDir() content := []byte("content") ioutil.WriteFile(path.Join(tmpdir, "outer"), content, 0600) os.MkdirAll(path.Join(tmpdir, "dir"), 0700) @@ -76,9 +69,7 @@ func Test_shouldCreateArhiveXXXXX(t *testing.T) { assert.Nil(t, err) assert.Equal(t, filepath.Join(tmpdir, fmt.Sprintf("%s.tar.gz", filepath.Base(tmpdir))), gzPath) - extractionDir, _ := ioutils.TempDir("", "extract") - defer os.RemoveAll(extractionDir) - + extractionDir := t.TempDir() r, _ := os.Open(gzPath) ExtractTarGz(r, extractionDir) if err != nil { diff --git a/api/archive/zip_test.go b/api/archive/zip_test.go index e405f7945..268109358 100644 --- a/api/archive/zip_test.go +++ b/api/archive/zip_test.go @@ -2,16 +2,12 @@ package archive import ( "github.com/stretchr/testify/assert" - "io/ioutil" - "os" "path/filepath" "testing" ) func TestUnzipFile(t *testing.T) { - dir, err := ioutil.TempDir("", "unzip-test-") - assert.NoError(t, err) - defer os.RemoveAll(dir) + dir := t.TempDir() /* Archive structure. ├── 0 @@ -21,7 +17,7 @@ func TestUnzipFile(t *testing.T) { └── 0.txt */ - err = UnzipFile("./testdata/sample_archive.zip", dir) + err := UnzipFile("./testdata/sample_archive.zip", dir) assert.NoError(t, err) archiveDir := dir + "/sample_archive" diff --git a/api/cmd/portainer/main_test.go b/api/cmd/portainer/main_test.go index 8e736c238..85933db8b 100644 --- a/api/cmd/portainer/main_test.go +++ b/api/cmd/portainer/main_test.go @@ -21,7 +21,7 @@ func (m mockKingpinSetting) SetValue(value kingpin.Value) { func Test_enableFeaturesFromFlags(t *testing.T) { is := assert.New(t) - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) defer teardown() tests := []struct { @@ -76,7 +76,7 @@ func Test_optionalFeature(t *testing.T) { is := assert.New(t) - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) defer teardown() // Enable the test feature diff --git a/api/crypto/aes_test.go b/api/crypto/aes_test.go index 1a2e377ac..b53d0e87d 100644 --- a/api/crypto/aes_test.go +++ b/api/crypto/aes_test.go @@ -7,13 +7,11 @@ import ( "path/filepath" "testing" - "github.com/docker/docker/pkg/ioutils" "github.com/stretchr/testify/assert" ) func Test_encryptAndDecrypt_withTheSamePassword(t *testing.T) { - tmpdir, _ := ioutils.TempDir("", "encrypt") - defer os.RemoveAll(tmpdir) + tmpdir := t.TempDir() var ( originFilePath = filepath.Join(tmpdir, "origin") @@ -52,8 +50,7 @@ func Test_encryptAndDecrypt_withTheSamePassword(t *testing.T) { } func Test_encryptAndDecrypt_withEmptyPassword(t *testing.T) { - tmpdir, _ := ioutils.TempDir("", "encrypt") - defer os.RemoveAll(tmpdir) + tmpdir := t.TempDir() var ( originFilePath = filepath.Join(tmpdir, "origin") @@ -92,8 +89,7 @@ func Test_encryptAndDecrypt_withEmptyPassword(t *testing.T) { } func Test_decryptWithDifferentPassphrase_shouldProduceWrongResult(t *testing.T) { - tmpdir, _ := ioutils.TempDir("", "encrypt") - defer os.RemoveAll(tmpdir) + tmpdir := t.TempDir() var ( originFilePath = filepath.Join(tmpdir, "origin") diff --git a/api/dataservices/stack/tests/stack_test.go b/api/dataservices/stack/tests/stack_test.go index d782c25d6..e357dc388 100644 --- a/api/dataservices/stack/tests/stack_test.go +++ b/api/dataservices/stack/tests/stack_test.go @@ -29,7 +29,7 @@ func TestService_StackByWebhookID(t *testing.T) { if testing.Short() { t.Skip("skipping test in short mode. Normally takes ~1s to run.") } - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) defer teardown() b := stackBuilder{t: t, store: store} @@ -87,7 +87,7 @@ func Test_RefreshableStacks(t *testing.T) { if testing.Short() { t.Skip("skipping test in short mode. Normally takes ~1s to run.") } - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) defer teardown() staticStack := portainer.Stack{ID: 1} diff --git a/api/dataservices/team/tests/team_test.go b/api/dataservices/team/tests/team_test.go index d8d985119..cf0ea77f1 100644 --- a/api/dataservices/team/tests/team_test.go +++ b/api/dataservices/team/tests/team_test.go @@ -10,7 +10,7 @@ import ( func Test_teamByName(t *testing.T) { t.Run("When store is empty should return ErrObjectNotFound", func(t *testing.T) { - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) defer teardown() _, err := store.Team().TeamByName("name") @@ -19,7 +19,7 @@ func Test_teamByName(t *testing.T) { }) t.Run("When there is no object with the same name should return ErrObjectNotFound", func(t *testing.T) { - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) defer teardown() teamBuilder := teamBuilder{ @@ -35,7 +35,7 @@ func Test_teamByName(t *testing.T) { }) t.Run("When there is an object with the same name should return the object", func(t *testing.T) { - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) defer teardown() teamBuilder := teamBuilder{ diff --git a/api/datastore/backup_test.go b/api/datastore/backup_test.go index e4c4a8338..cfd439433 100644 --- a/api/datastore/backup_test.go +++ b/api/datastore/backup_test.go @@ -10,7 +10,7 @@ import ( ) func TestCreateBackupFolders(t *testing.T) { - _, store, teardown := MustNewTestStore(false, true) + _, store, teardown := MustNewTestStore(t, false, true) defer teardown() connection := store.GetConnection() @@ -27,7 +27,7 @@ func TestCreateBackupFolders(t *testing.T) { } func TestStoreCreation(t *testing.T) { - _, store, teardown := MustNewTestStore(true, true) + _, store, teardown := MustNewTestStore(t, true, true) defer teardown() if store == nil { @@ -40,7 +40,7 @@ func TestStoreCreation(t *testing.T) { } func TestBackup(t *testing.T) { - _, store, teardown := MustNewTestStore(true, true) + _, store, teardown := MustNewTestStore(t, true, true) connection := store.GetConnection() defer teardown() @@ -67,7 +67,7 @@ func TestBackup(t *testing.T) { } func TestRemoveWithOptions(t *testing.T) { - _, store, teardown := MustNewTestStore(true, true) + _, store, teardown := MustNewTestStore(t, true, true) defer teardown() t.Run("successfully removes file if existent", func(t *testing.T) { diff --git a/api/datastore/datastore_test.go b/api/datastore/datastore_test.go index e83636fe0..1657d73f7 100644 --- a/api/datastore/datastore_test.go +++ b/api/datastore/datastore_test.go @@ -27,7 +27,7 @@ const ( // TestStoreFull an eventually comprehensive set of tests for the Store. // The idea is what we write to the store, we should read back. func TestStoreFull(t *testing.T) { - _, store, teardown := MustNewTestStore(true, true) + _, store, teardown := MustNewTestStore(t, true, true) defer teardown() testCases := map[string]func(t *testing.T){ diff --git a/api/datastore/migrate_data_test.go b/api/datastore/migrate_data_test.go index 645e28c5e..fd3122d3a 100644 --- a/api/datastore/migrate_data_test.go +++ b/api/datastore/migrate_data_test.go @@ -53,7 +53,7 @@ func TestMigrateData(t *testing.T) { } t.Run("MigrateData for New Store & Re-Open Check", func(t *testing.T) { - newStore, store, teardown := MustNewTestStore(false, true) + newStore, store, teardown := MustNewTestStore(t, false, true) defer teardown() if !newStore { @@ -80,7 +80,7 @@ func TestMigrateData(t *testing.T) { {version: 21, expectedVersion: portainer.DBVersion}, } for _, tc := range tests { - _, store, teardown := MustNewTestStore(true, true) + _, store, teardown := MustNewTestStore(t, true, true) defer teardown() // Setup data @@ -105,7 +105,7 @@ func TestMigrateData(t *testing.T) { } t.Run("Error in MigrateData should restore backup before MigrateData", func(t *testing.T) { - _, store, teardown := MustNewTestStore(false, true) + _, store, teardown := MustNewTestStore(t, false, true) defer teardown() version := 17 @@ -117,7 +117,7 @@ func TestMigrateData(t *testing.T) { }) t.Run("MigrateData should create backup file upon update", func(t *testing.T) { - _, store, teardown := MustNewTestStore(false, true) + _, store, teardown := MustNewTestStore(t, false, true) defer teardown() store.VersionService.StoreDBVersion(0) @@ -131,7 +131,7 @@ func TestMigrateData(t *testing.T) { }) t.Run("MigrateData should fail to create backup if database file is set to updating", func(t *testing.T) { - _, store, teardown := MustNewTestStore(false, true) + _, store, teardown := MustNewTestStore(t, false, true) defer teardown() store.VersionService.StoreIsUpdating(true) @@ -146,7 +146,7 @@ func TestMigrateData(t *testing.T) { }) t.Run("MigrateData should not create backup on startup if portainer version matches db", func(t *testing.T) { - _, store, teardown := MustNewTestStore(false, true) + _, store, teardown := MustNewTestStore(t, false, true) defer teardown() store.MigrateData() @@ -161,7 +161,7 @@ func TestMigrateData(t *testing.T) { } func Test_getBackupRestoreOptions(t *testing.T) { - _, store, teardown := MustNewTestStore(false, true) + _, store, teardown := MustNewTestStore(t, false, true) defer teardown() options := getBackupRestoreOptions(store.commonBackupDir()) @@ -180,7 +180,7 @@ func Test_getBackupRestoreOptions(t *testing.T) { func TestRollback(t *testing.T) { t.Run("Rollback should restore upgrade after backup", func(t *testing.T) { version := 21 - _, store, teardown := MustNewTestStore(false, true) + _, store, teardown := MustNewTestStore(t, false, true) defer teardown() store.VersionService.StoreDBVersion(version) @@ -226,7 +226,7 @@ func migrateDBTestHelper(t *testing.T, srcPath, wantPath string) error { } // Parse source json to db. - _, store, teardown := MustNewTestStore(true, false) + _, store, teardown := MustNewTestStore(t, true, false) defer teardown() err = importJSON(t, bytes.NewReader(srcJSON), store) if err != nil { @@ -274,7 +274,7 @@ func migrateDBTestHelper(t *testing.T, srcPath, wantPath string) error { // Compare the result we got with the one we wanted. if diff := cmp.Diff(wantJSON, gotJSON); diff != "" { - gotPath := filepath.Join(os.TempDir(), "portainer-migrator-test-fail.json") + gotPath := filepath.Join(t.TempDir(), "portainer-migrator-test-fail.json") os.WriteFile( gotPath, gotJSON, diff --git a/api/datastore/migrate_dbversion29_test.go b/api/datastore/migrate_dbversion29_test.go index 0937b5e2f..22e2e0045 100644 --- a/api/datastore/migrate_dbversion29_test.go +++ b/api/datastore/migrate_dbversion29_test.go @@ -33,7 +33,7 @@ func setup(store *Store) error { } func TestMigrateSettings(t *testing.T) { - _, store, teardown := MustNewTestStore(false, true) + _, store, teardown := MustNewTestStore(t, false, true) defer teardown() err := setup(store) diff --git a/api/datastore/migrate_dbversion33_test.go b/api/datastore/migrate_dbversion33_test.go index cd78344ab..c789b5042 100644 --- a/api/datastore/migrate_dbversion33_test.go +++ b/api/datastore/migrate_dbversion33_test.go @@ -10,7 +10,7 @@ import ( ) func TestMigrateStackEntryPoint(t *testing.T) { - _, store, teardown := MustNewTestStore(false, true) + _, store, teardown := MustNewTestStore(t, false, true) defer teardown() stackService := store.Stack() diff --git a/api/datastore/teststore.go b/api/datastore/teststore.go index bd3b961d7..89ed6b27f 100644 --- a/api/datastore/teststore.go +++ b/api/datastore/teststore.go @@ -1,9 +1,8 @@ package datastore import ( - "io/ioutil" "log" - "os" + "testing" portainer "github.com/portainer/portainer/api" "github.com/portainer/portainer/api/database" @@ -18,8 +17,8 @@ func (store *Store) GetConnection() portainer.Connection { return store.connection } -func MustNewTestStore(init, secure bool) (bool, *Store, func()) { - newStore, store, teardown, err := NewTestStore(init, secure) +func MustNewTestStore(t *testing.T, init, secure bool) (bool, *Store, func()) { + newStore, store, teardown, err := NewTestStore(t, init, secure) if err != nil { if !errors.Is(err, errTempDir) { teardown() @@ -30,13 +29,9 @@ func MustNewTestStore(init, secure bool) (bool, *Store, func()) { return newStore, store, teardown } -func NewTestStore(init, secure bool) (bool, *Store, func(), error) { +func NewTestStore(t *testing.T, init, secure bool) (bool, *Store, func(), error) { // Creates unique temp directory in a concurrency friendly manner. - storePath, err := ioutil.TempDir("", "test-store") - if err != nil { - return false, nil, nil, errors.Wrap(errTempDir, err.Error()) - } - + storePath := t.TempDir() fileService, err := filesystem.NewService(storePath, "") if err != nil { return false, nil, nil, err @@ -73,20 +68,15 @@ func NewTestStore(init, secure bool) (bool, *Store, func(), error) { } teardown := func() { - teardown(store, storePath) + teardown(store) } return newStore, store, teardown, nil } -func teardown(store *Store, storePath string) { +func teardown(store *Store) { err := store.Close() if err != nil { log.Fatalln(err) } - - err = os.RemoveAll(storePath) - if err != nil { - log.Fatalln(err) - } } diff --git a/api/filesystem/copy_test.go b/api/filesystem/copy_test.go index 2fcef9e6b..a451fdb8f 100644 --- a/api/filesystem/copy_test.go +++ b/api/filesystem/copy_test.go @@ -11,17 +11,13 @@ import ( ) func Test_copyFile_returnsError_whenSourceDoesNotExist(t *testing.T) { - tmpdir, _ := ioutil.TempDir("", "backup") - defer os.RemoveAll(tmpdir) - + tmpdir := t.TempDir() err := copyFile("does-not-exist", tmpdir) assert.Error(t, err) } func Test_copyFile_shouldMakeAbackup(t *testing.T) { - tmpdir, _ := ioutil.TempDir("", "backup") - defer os.RemoveAll(tmpdir) - + tmpdir := t.TempDir() content := []byte("content") ioutil.WriteFile(path.Join(tmpdir, "origin"), content, 0600) @@ -33,8 +29,7 @@ func Test_copyFile_shouldMakeAbackup(t *testing.T) { } func Test_CopyDir_shouldCopyAllFilesAndDirectories(t *testing.T) { - destination, _ := ioutil.TempDir("", "destination") - defer os.RemoveAll(destination) + destination := t.TempDir() err := CopyDir("./testdata/copy_test", destination, true) assert.NoError(t, err) @@ -44,8 +39,7 @@ func Test_CopyDir_shouldCopyAllFilesAndDirectories(t *testing.T) { } func Test_CopyDir_shouldCopyOnlyDirContents(t *testing.T) { - destination, _ := ioutil.TempDir("", "destination") - defer os.RemoveAll(destination) + destination := t.TempDir() err := CopyDir("./testdata/copy_test", destination, false) assert.NoError(t, err) @@ -55,9 +49,7 @@ func Test_CopyDir_shouldCopyOnlyDirContents(t *testing.T) { } func Test_CopyPath_shouldSkipWhenNotExist(t *testing.T) { - tmpdir, _ := ioutil.TempDir("", "backup") - defer os.RemoveAll(tmpdir) - + tmpdir := t.TempDir() err := CopyPath("does-not-exists", tmpdir) assert.NoError(t, err) @@ -65,9 +57,7 @@ func Test_CopyPath_shouldSkipWhenNotExist(t *testing.T) { } func Test_CopyPath_shouldCopyFile(t *testing.T) { - tmpdir, _ := ioutil.TempDir("", "backup") - defer os.RemoveAll(tmpdir) - + tmpdir := t.TempDir() content := []byte("content") ioutil.WriteFile(path.Join(tmpdir, "file"), content, 0600) @@ -81,8 +71,7 @@ func Test_CopyPath_shouldCopyFile(t *testing.T) { } func Test_CopyPath_shouldCopyDir(t *testing.T) { - destination, _ := ioutil.TempDir("", "destination") - defer os.RemoveAll(destination) + destination := t.TempDir() err := CopyPath("./testdata/copy_test", destination) assert.NoError(t, err) diff --git a/api/filesystem/filesystem_fileexists_test.go b/api/filesystem/filesystem_fileexists_test.go index f0f203151..ceac521cb 100644 --- a/api/filesystem/filesystem_fileexists_test.go +++ b/api/filesystem/filesystem_fileexists_test.go @@ -43,7 +43,7 @@ func testHelperFileExists_fileExists(t *testing.T, checker func(path string) (bo } func testHelperFileExists_fileNotExists(t *testing.T, checker func(path string) (bool, error)) { - filePath := path.Join(os.TempDir(), fmt.Sprintf("%s%d", t.Name(), rand.Int())) + filePath := path.Join(t.TempDir(), fmt.Sprintf("%s%d", t.Name(), rand.Int())) err := os.RemoveAll(filePath) assert.NoError(t, err, "RemoveAll should not fail") diff --git a/api/filesystem/filesystem_test.go b/api/filesystem/filesystem_test.go index f2b46d8a3..f6cdf9d2b 100644 --- a/api/filesystem/filesystem_test.go +++ b/api/filesystem/filesystem_test.go @@ -9,7 +9,7 @@ import ( ) func createService(t *testing.T) *Service { - dataStorePath := path.Join(os.TempDir(), t.Name()) + dataStorePath := path.Join(t.TempDir(), t.Name()) service, err := NewService(dataStorePath, "") assert.NoError(t, err, "NewService should not fail") diff --git a/api/git/azure_integration_test.go b/api/git/azure_integration_test.go index 200747daa..aef1ff5eb 100644 --- a/api/git/azure_integration_test.go +++ b/api/git/azure_integration_test.go @@ -6,7 +6,6 @@ import ( "path/filepath" "testing" - "github.com/docker/docker/pkg/ioutils" _ "github.com/joho/godotenv/autoload" "github.com/stretchr/testify/assert" ) @@ -51,11 +50,9 @@ func TestService_ClonePublicRepository_Azure(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - dst, err := ioutils.TempDir("", "clone") - assert.NoError(t, err) - defer os.RemoveAll(dst) + dst := t.TempDir() repositoryUrl := fmt.Sprintf(tt.args.repositoryURLFormat, tt.args.password) - err = service.CloneRepository(dst, repositoryUrl, tt.args.referenceName, "", "") + err := service.CloneRepository(dst, repositoryUrl, tt.args.referenceName, "", "") assert.NoError(t, err) assert.FileExists(t, filepath.Join(dst, "README.md")) }) @@ -68,12 +65,10 @@ func TestService_ClonePrivateRepository_Azure(t *testing.T) { pat := getRequiredValue(t, "AZURE_DEVOPS_PAT") service := NewService() - dst, err := ioutils.TempDir("", "clone") - assert.NoError(t, err) - defer os.RemoveAll(dst) + dst := t.TempDir() repositoryUrl := "https://portainer.visualstudio.com/Playground/_git/dev_integration" - err = service.CloneRepository(dst, repositoryUrl, "refs/heads/main", "", pat) + err := service.CloneRepository(dst, repositoryUrl, "refs/heads/main", "", pat) assert.NoError(t, err) assert.FileExists(t, filepath.Join(dst, "README.md")) } diff --git a/api/git/git_integration_test.go b/api/git/git_integration_test.go index 6f123c130..cf26ac816 100644 --- a/api/git/git_integration_test.go +++ b/api/git/git_integration_test.go @@ -1,11 +1,9 @@ package git import ( - "os" "path/filepath" "testing" - "github.com/docker/docker/pkg/ioutils" "github.com/stretchr/testify/assert" ) @@ -16,12 +14,10 @@ func TestService_ClonePrivateRepository_GitHub(t *testing.T) { username := getRequiredValue(t, "GITHUB_USERNAME") service := NewService() - dst, err := ioutils.TempDir("", "clone") - assert.NoError(t, err) - defer os.RemoveAll(dst) + dst := t.TempDir() repositoryUrl := "https://github.com/portainer/private-test-repository.git" - err = service.CloneRepository(dst, repositoryUrl, "refs/heads/main", username, accessToken) + err := service.CloneRepository(dst, repositoryUrl, "refs/heads/main", username, accessToken) assert.NoError(t, err) assert.FileExists(t, filepath.Join(dst, "README.md")) } diff --git a/api/git/git_test.go b/api/git/git_test.go index 11ff5e5c8..b8bd9092c 100644 --- a/api/git/git_test.go +++ b/api/git/git_test.go @@ -2,8 +2,6 @@ package git import ( "context" - "io/ioutil" - "log" "os" "path/filepath" "testing" @@ -15,71 +13,43 @@ import ( "github.com/stretchr/testify/assert" ) -var bareRepoDir string - -func TestMain(m *testing.M) { - if err := testMain(m); err != nil { - log.Fatal(err) - } -} - -// testMain does extra setup/teardown before/after testing. -// The function is separated from TestMain due to necessity to call os.Exit/log.Fatal in the latter. -func testMain(m *testing.M) error { - dir, err := ioutil.TempDir("", "git-repo-") - if err != nil { - return errors.Wrap(err, "failed to create a temp dir") - } - defer os.RemoveAll(dir) - - bareRepoDir = filepath.Join(dir, "test-clone.git") +func setup(t *testing.T) string { + dir := t.TempDir() + bareRepoDir := filepath.Join(dir, "test-clone.git") file, err := os.OpenFile("./testdata/test-clone-git-repo.tar.gz", os.O_RDONLY, 0755) if err != nil { - return errors.Wrap(err, "failed to open an archive") + t.Fatal(errors.Wrap(err, "failed to open an archive")) } + err = archive.ExtractTarGz(file, dir) if err != nil { - return errors.Wrapf(err, "failed to extract file from the archive to a folder %s\n", dir) + t.Fatal(errors.Wrapf(err, "failed to extract file from the archive to a folder %s", dir)) } - m.Run() - - return nil + return bareRepoDir } func Test_ClonePublicRepository_Shallow(t *testing.T) { service := Service{git: gitClient{preserveGitDirectory: true}} // no need for http client since the test access the repo via file system. - repositoryURL := bareRepoDir + repositoryURL := setup(t) referenceName := "refs/heads/main" - destination := "shallow" - dir, err := ioutil.TempDir("", destination) - if err != nil { - t.Fatalf("failed to create a temp dir") - } - defer os.RemoveAll(dir) + dir := t.TempDir() t.Logf("Cloning into %s", dir) - err = service.CloneRepository(dir, repositoryURL, referenceName, "", "") + err := service.CloneRepository(dir, repositoryURL, referenceName, "", "") assert.NoError(t, err) assert.Equal(t, 1, getCommitHistoryLength(t, err, dir), "cloned repo has incorrect depth") } func Test_ClonePublicRepository_NoGitDirectory(t *testing.T) { service := Service{git: gitClient{preserveGitDirectory: false}} // no need for http client since the test access the repo via file system. - repositoryURL := bareRepoDir + repositoryURL := setup(t) referenceName := "refs/heads/main" - destination := "shallow" - - dir, err := ioutil.TempDir("", destination) - if err != nil { - t.Fatalf("failed to create a temp dir") - } - - defer os.RemoveAll(dir) + dir := t.TempDir() t.Logf("Cloning into %s", dir) - err = service.CloneRepository(dir, repositoryURL, referenceName, "", "") + err := service.CloneRepository(dir, repositoryURL, referenceName, "", "") assert.NoError(t, err) assert.NoDirExists(t, filepath.Join(dir, ".git")) } @@ -87,18 +57,13 @@ func Test_ClonePublicRepository_NoGitDirectory(t *testing.T) { func Test_cloneRepository(t *testing.T) { service := Service{git: gitClient{preserveGitDirectory: true}} // no need for http client since the test access the repo via file system. - repositoryURL := bareRepoDir + repositoryURL := setup(t) referenceName := "refs/heads/main" - destination := "shallow" - dir, err := ioutil.TempDir("", destination) - if err != nil { - t.Fatalf("failed to create a temp dir") - } - defer os.RemoveAll(dir) + dir := t.TempDir() t.Logf("Cloning into %s", dir) - err = service.cloneRepository(dir, cloneOptions{ + err := service.cloneRepository(dir, cloneOptions{ repositoryUrl: repositoryURL, referenceName: referenceName, depth: 10, @@ -111,7 +76,7 @@ func Test_cloneRepository(t *testing.T) { func Test_latestCommitID(t *testing.T) { service := Service{git: gitClient{preserveGitDirectory: true}} // no need for http client since the test access the repo via file system. - repositoryURL := bareRepoDir + repositoryURL := setup(t) referenceName := "refs/heads/main" id, err := service.LatestCommitID(repositoryURL, referenceName, "", "") diff --git a/api/http/handler/backup/backup_test.go b/api/http/handler/backup/backup_test.go index 6ca23afd4..3abc5cb72 100644 --- a/api/http/handler/backup/backup_test.go +++ b/api/http/handler/backup/backup_test.go @@ -15,7 +15,6 @@ import ( "testing" "time" - "github.com/docker/docker/pkg/ioutils" "github.com/portainer/portainer/api/adminmonitor" "github.com/portainer/portainer/api/crypto" "github.com/portainer/portainer/api/demo" @@ -56,9 +55,7 @@ func Test_backupHandlerWithoutPassword_shouldCreateATarballArchive(t *testing.T) response := w.Result() body, _ := io.ReadAll(response.Body) - tmpdir, _ := ioutils.TempDir("", "backup") - defer os.RemoveAll(tmpdir) - + tmpdir := t.TempDir() archivePath := filepath.Join(tmpdir, "archive.tar.gz") err := ioutil.WriteFile(archivePath, body, 0600) if err != nil { @@ -93,9 +90,7 @@ func Test_backupHandlerWithPassword_shouldCreateEncryptedATarballArchive(t *test response := w.Result() body, _ := io.ReadAll(response.Body) - tmpdir, _ := ioutils.TempDir("", "backup") - defer os.RemoveAll(tmpdir) - + tmpdir := t.TempDir() dr, err := crypto.AesDecrypt(bytes.NewReader(body), []byte("secret")) if err != nil { t.Fatal("Failed to decrypt archive") diff --git a/api/http/handler/edgestacks/edgestack_test.go b/api/http/handler/edgestacks/edgestack_test.go index 40baa7c06..1d02c8f8a 100644 --- a/api/http/handler/edgestacks/edgestack_test.go +++ b/api/http/handler/edgestacks/edgestack_test.go @@ -7,7 +7,6 @@ import ( "fmt" "net/http" "net/http/httptest" - "os" "reflect" "strconv" "testing" @@ -39,7 +38,7 @@ func (g *gitService) LatestCommitID(repositoryURL, referenceName, username, pass func setupHandler(t *testing.T) (*Handler, string, func()) { t.Helper() - _, store, storeTeardown := datastore.MustNewTestStore(true, true) + _, store, storeTeardown := datastore.MustNewTestStore(t, true, true) jwtService, err := jwt.NewService("1h", store) if err != nil { @@ -66,11 +65,7 @@ func setupHandler(t *testing.T) (*Handler, string, func()) { store, ) - tmpDir, err := os.MkdirTemp(os.TempDir(), "portainer-test") - if err != nil { - storeTeardown() - t.Fatal(err) - } + tmpDir := t.TempDir() fs, err := filesystem.NewService(tmpDir, "") if err != nil { diff --git a/api/http/handler/endpointedge/endpoint_edgestatus_inspect_test.go b/api/http/handler/endpointedge/endpoint_edgestatus_inspect_test.go index 30a0ffbe0..5c0141e36 100644 --- a/api/http/handler/endpointedge/endpoint_edgestatus_inspect_test.go +++ b/api/http/handler/endpointedge/endpoint_edgestatus_inspect_test.go @@ -6,7 +6,6 @@ import ( "fmt" "net/http" "net/http/httptest" - "os" "testing" "time" @@ -74,18 +73,14 @@ var endpointTestCases = []endpointTestCase{ }, } -func setupHandler() (*Handler, func(), error) { - tmpDir, err := os.MkdirTemp(os.TempDir(), "portainer-test") - if err != nil { - return nil, nil, fmt.Errorf("could not create a tmp dir: %w", err) - } - +func setupHandler(t *testing.T) (*Handler, func(), error) { + tmpDir := t.TempDir() fs, err := filesystem.NewService(tmpDir, "") if err != nil { return nil, nil, fmt.Errorf("could not start a new filesystem service: %w", err) } - _, store, storeTeardown := datastore.MustNewTestStore(true, true) + _, store, storeTeardown := datastore.MustNewTestStore(t, true, true) ctx := context.Background() shutdownCtx, cancelFn := context.WithCancel(ctx) @@ -143,7 +138,7 @@ func createEndpoint(handler *Handler, endpoint portainer.Endpoint, endpointRelat } func TestMissingEdgeIdentifier(t *testing.T) { - handler, teardown, err := setupHandler() + handler, teardown, err := setupHandler(t) defer teardown() if err != nil { @@ -177,7 +172,7 @@ func TestMissingEdgeIdentifier(t *testing.T) { } func TestWithEndpoints(t *testing.T) { - handler, teardown, err := setupHandler() + handler, teardown, err := setupHandler(t) defer teardown() if err != nil { @@ -208,7 +203,7 @@ func TestWithEndpoints(t *testing.T) { } func TestLastCheckInDateIncreases(t *testing.T) { - handler, teardown, err := setupHandler() + handler, teardown, err := setupHandler(t) defer teardown() if err != nil { @@ -259,7 +254,7 @@ func TestLastCheckInDateIncreases(t *testing.T) { } func TestEmptyEdgeIdWithAgentPlatformHeader(t *testing.T) { - handler, teardown, err := setupHandler() + handler, teardown, err := setupHandler(t) defer teardown() if err != nil { @@ -307,7 +302,7 @@ func TestEmptyEdgeIdWithAgentPlatformHeader(t *testing.T) { } func TestEdgeStackStatus(t *testing.T) { - handler, teardown, err := setupHandler() + handler, teardown, err := setupHandler(t) defer teardown() if err != nil { @@ -379,7 +374,7 @@ func TestEdgeStackStatus(t *testing.T) { } func TestEdgeJobsResponse(t *testing.T) { - handler, teardown, err := setupHandler() + handler, teardown, err := setupHandler(t) defer teardown() if err != nil { diff --git a/api/http/handler/endpoints/endpoint_list_test.go b/api/http/handler/endpoints/endpoint_list_test.go index c9c92a9fb..3fff08851 100644 --- a/api/http/handler/endpoints/endpoint_list_test.go +++ b/api/http/handler/endpoints/endpoint_list_test.go @@ -188,7 +188,7 @@ func Test_endpointList_edgeDeviceFilter(t *testing.T) { func setup(t *testing.T, endpoints []portainer.Endpoint) (handler *Handler, teardown func()) { is := assert.New(t) - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) for _, endpoint := range endpoints { err := store.Endpoint().Create(&endpoint) diff --git a/api/http/handler/endpoints/filter_test.go b/api/http/handler/endpoints/filter_test.go index 14f8cadd1..a1f4df105 100644 --- a/api/http/handler/endpoints/filter_test.go +++ b/api/http/handler/endpoints/filter_test.go @@ -158,7 +158,7 @@ func runTest(t *testing.T, test filterTest, handler *Handler, endpoints []portai func setupFilterTest(t *testing.T, endpoints []portainer.Endpoint) (handler *Handler, teardown func()) { is := assert.New(t) - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) for _, endpoint := range endpoints { err := store.Endpoint().Create(&endpoint) diff --git a/api/http/handler/helm/helm_delete_test.go b/api/http/handler/helm/helm_delete_test.go index b8a3e6ac3..530c2912e 100644 --- a/api/http/handler/helm/helm_delete_test.go +++ b/api/http/handler/helm/helm_delete_test.go @@ -22,7 +22,7 @@ import ( func Test_helmDelete(t *testing.T) { is := assert.New(t) - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) defer teardown() err := store.Endpoint().Create(&portainer.Endpoint{ID: 1}) diff --git a/api/http/handler/helm/helm_install_test.go b/api/http/handler/helm/helm_install_test.go index dce113aab..6d3dbc3e3 100644 --- a/api/http/handler/helm/helm_install_test.go +++ b/api/http/handler/helm/helm_install_test.go @@ -25,7 +25,7 @@ import ( func Test_helmInstall(t *testing.T) { is := assert.New(t) - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) defer teardown() err := store.Endpoint().Create(&portainer.Endpoint{ID: 1}) diff --git a/api/http/handler/helm/helm_list_test.go b/api/http/handler/helm/helm_list_test.go index 35ea0c1fa..6ddea268c 100644 --- a/api/http/handler/helm/helm_list_test.go +++ b/api/http/handler/helm/helm_list_test.go @@ -24,7 +24,7 @@ import ( func Test_helmList(t *testing.T) { is := assert.New(t) - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) defer teardown() err := store.Endpoint().Create(&portainer.Endpoint{ID: 1}) diff --git a/api/http/handler/stacks/webhook_invoke_test.go b/api/http/handler/stacks/webhook_invoke_test.go index 802019ba2..5314dce27 100644 --- a/api/http/handler/stacks/webhook_invoke_test.go +++ b/api/http/handler/stacks/webhook_invoke_test.go @@ -13,7 +13,7 @@ import ( ) func TestHandler_webhookInvoke(t *testing.T) { - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) defer teardown() webhookID := newGuidString(t) diff --git a/api/http/handler/users/user_create_access_token_test.go b/api/http/handler/users/user_create_access_token_test.go index 679540e98..3150176a5 100644 --- a/api/http/handler/users/user_create_access_token_test.go +++ b/api/http/handler/users/user_create_access_token_test.go @@ -21,7 +21,7 @@ import ( func Test_userCreateAccessToken(t *testing.T) { is := assert.New(t) - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) defer teardown() // create admin and standard user(s) diff --git a/api/http/handler/users/user_delete_test.go b/api/http/handler/users/user_delete_test.go index 1d04d3faa..426ae8be0 100644 --- a/api/http/handler/users/user_delete_test.go +++ b/api/http/handler/users/user_delete_test.go @@ -17,7 +17,7 @@ import ( func Test_deleteUserRemovesAccessTokens(t *testing.T) { is := assert.New(t) - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) defer teardown() // create standard user diff --git a/api/http/handler/users/user_get_access_tokens_test.go b/api/http/handler/users/user_get_access_tokens_test.go index 353d9f04b..a02e97118 100644 --- a/api/http/handler/users/user_get_access_tokens_test.go +++ b/api/http/handler/users/user_get_access_tokens_test.go @@ -20,7 +20,7 @@ import ( func Test_userGetAccessTokens(t *testing.T) { is := assert.New(t) - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) defer teardown() // create admin and standard user(s) diff --git a/api/http/handler/users/user_remove_access_token_test.go b/api/http/handler/users/user_remove_access_token_test.go index b6fc47d7d..605637dc3 100644 --- a/api/http/handler/users/user_remove_access_token_test.go +++ b/api/http/handler/users/user_remove_access_token_test.go @@ -18,7 +18,7 @@ import ( func Test_userRemoveAccessToken(t *testing.T) { is := assert.New(t) - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) defer teardown() // create admin and standard user(s) diff --git a/api/http/handler/users/user_update_test.go b/api/http/handler/users/user_update_test.go index f6650c2d2..32577da79 100644 --- a/api/http/handler/users/user_update_test.go +++ b/api/http/handler/users/user_update_test.go @@ -17,7 +17,7 @@ import ( func Test_updateUserRemovesAccessTokens(t *testing.T) { is := assert.New(t) - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) defer teardown() // create standard user diff --git a/api/http/security/bouncer_test.go b/api/http/security/bouncer_test.go index f73512fdd..9df12b4b8 100644 --- a/api/http/security/bouncer_test.go +++ b/api/http/security/bouncer_test.go @@ -36,7 +36,7 @@ func tokenLookupFail(r *http.Request) *portainer.TokenData { func Test_mwAuthenticateFirst(t *testing.T) { is := assert.New(t) - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) defer teardown() jwtService, err := jwt.NewService("1h", store) @@ -259,7 +259,7 @@ func Test_extractAPIKeyQueryParam(t *testing.T) { func Test_apiKeyLookup(t *testing.T) { is := assert.New(t) - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) defer teardown() // create standard user diff --git a/api/kubernetes/kubeclusteraccess_service_test.go b/api/kubernetes/kubeclusteraccess_service_test.go index 3905f23cb..51f421668 100644 --- a/api/kubernetes/kubeclusteraccess_service_test.go +++ b/api/kubernetes/kubeclusteraccess_service_test.go @@ -3,7 +3,6 @@ package kubernetes import ( "fmt" "io/ioutil" - "os" "strings" "testing" @@ -36,14 +35,12 @@ iuViiuhTPJkxKOzCmv52cxf15B0/+cgcImoX4zc9Z0NxKthBmIe00ojexE0ZBOFi // string within the `-----BEGIN CERTIFICATE-----` and `-----END CERTIFICATE-----` without linebreaks const certDataString = "MIIC5TCCAc2gAwIBAgIJAJ+poiEBdsplMA0GCSqGSIb3DQEBCwUAMBQxEjAQBgNVBAMMCWxvY2FsaG9zdDAeFw0yMTA4MDQwNDM0MTZaFw0yMTA5MDMwNDM0MTZaMBQxEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKQ0HStP34FY/lSDIfMG9MV/lKNUkiLZcMXepbyhPit4ND/w9kOA4WTJ+oP0B2IYklRvLkneZOfQiPweGAPwZl3CjwII6gL6NCkhcXXAJ4JQ9duL5Q6pL//95OcvX+qMTssyS1DcH88F6v+gifACLpvG86G9V0DeSGS2fqqfOJngrOCgum1DsWi3XsewB3A7GkPRjYmckU3t4iHgcMb+6lGQAxtnllSM9DpqGnjXRs4mnQHKgufaeW5nvHXioa5l0aHIhN6MQS99QwKwfml7UtWAYhSJksMrrTovB6rThYpp2ID/iU9MGfkpxubToA6scv8alFa8Bo+NEKo255dxsScCAwEAAaM6MDgwFAYDVR0RBA0wC4IJbG9jYWxob3N0MAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDATANBgkqhkiG9w0BAQsFAAOCAQEALFBHW/r79KOj5bhoDtHs8h/ESAlD5DJI/kzc1RajA8AuWPsaagG/S0Bqiq2ApMA6Tr3t9An8peaLCaUapWw59kyQcwwPXm9vxhEEfoBRtk8po8XblsUSQ5Ku07ycSg5NBGEW2rCLsvjQFuQiAt8sW4jGCCN+ph/GQF9XC8ir+ssiqiMEkbm/JaK7sTi5kZ/GsSK8bJ+9N/ztoFr89YYEWjjOuIS3HNMdBcuQXIel7siEFdNjbzMoiuViiuhTPJkxKOzCmv52cxf15B0/+cgcImoX4zc9Z0NxKthBmIe00ojexE0ZBOFi4PxB7Ou6y/c9OvJb7gJv3z08+xuhOaFXwQ==" -func createTempFile(filename, content string) (string, func()) { - tempPath, _ := ioutil.TempDir("", "temp") +func createTempFile(filename, content string, t *testing.T) string { + tempPath := t.TempDir() filePath := fmt.Sprintf("%s/%s", tempPath, filename) ioutil.WriteFile(filePath, []byte(content), 0644) - teardown := func() { os.RemoveAll(tempPath) } - - return filePath, teardown + return filePath } func Test_getCertificateAuthorityData(t *testing.T) { @@ -60,16 +57,13 @@ func Test_getCertificateAuthorityData(t *testing.T) { }) t.Run("getCertificateAuthorityData fails on tls cert provided but invalid file data", func(t *testing.T) { - filePath, teardown := createTempFile("invalid-cert.crt", "hello\ngo\n") - defer teardown() - + filePath := createTempFile("invalid-cert.crt", "hello\ngo\n", t) _, err := getCertificateAuthorityData(filePath) is.ErrorIs(err, errTLSCertIncorrectType, "getCertificateAuthorityData should fail with %w", errTLSCertIncorrectType) }) t.Run("getCertificateAuthorityData succeeds on valid tls cert provided", func(t *testing.T) { - filePath, teardown := createTempFile("valid-cert.crt", certData) - defer teardown() + filePath := createTempFile("valid-cert.crt", certData, t) certificateAuthorityData, err := getCertificateAuthorityData(filePath) is.NoError(err, "getCertificateAuthorityData succeed with valid cert; err=%w", errTLSCertIncorrectType) @@ -87,8 +81,7 @@ func TestKubeClusterAccessService_IsSecure(t *testing.T) { }) t.Run("IsSecure should be false", func(t *testing.T) { - filePath, teardown := createTempFile("valid-cert.crt", certData) - defer teardown() + filePath := createTempFile("valid-cert.crt", certData, t) kcs := NewKubeClusterAccessService("", "", filePath) is.True(kcs.IsSecure(), "should be true if valid TLS cert (path and content) provided") @@ -124,8 +117,7 @@ func TestKubeClusterAccessService_GetKubeConfigInternal(t *testing.T) { }) t.Run("GetData returns secure cluster access config", func(t *testing.T) { - filePath, teardown := createTempFile("valid-cert.crt", certData) - defer teardown() + filePath := createTempFile("valid-cert.crt", certData, t) kcs := NewKubeClusterAccessService("/", "", filePath) clusterAccessDetails := kcs.GetData("localhost", 1) diff --git a/api/stacks/deploy_test.go b/api/stacks/deploy_test.go index 3402c3b7a..37f28d6de 100644 --- a/api/stacks/deploy_test.go +++ b/api/stacks/deploy_test.go @@ -2,7 +2,6 @@ package stacks import ( "errors" - "io/ioutil" "strings" "testing" @@ -41,7 +40,7 @@ func (s *noopDeployer) DeployKubernetesStack(stack *portainer.Stack, endpoint *p } func Test_redeployWhenChanged_FailsWhenCannotFindStack(t *testing.T) { - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) defer teardown() err := RedeployWhenChanged(1, nil, store, nil) @@ -50,7 +49,7 @@ func Test_redeployWhenChanged_FailsWhenCannotFindStack(t *testing.T) { } func Test_redeployWhenChanged_DoesNothingWhenNotAGitBasedStack(t *testing.T) { - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) defer teardown() admin := &portainer.User{ID: 1, Username: "admin"} @@ -65,10 +64,10 @@ func Test_redeployWhenChanged_DoesNothingWhenNotAGitBasedStack(t *testing.T) { } func Test_redeployWhenChanged_DoesNothingWhenNoGitChanges(t *testing.T) { - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) defer teardown() - tmpDir, _ := ioutil.TempDir("", "stack") + tmpDir := t.TempDir() admin := &portainer.User{ID: 1, Username: "admin"} err := store.User().Create(admin) @@ -91,7 +90,7 @@ func Test_redeployWhenChanged_DoesNothingWhenNoGitChanges(t *testing.T) { func Test_redeployWhenChanged_FailsWhenCannotClone(t *testing.T) { cloneErr := errors.New("failed to clone") - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) defer teardown() admin := &portainer.User{ID: 1, Username: "admin"} @@ -114,10 +113,10 @@ func Test_redeployWhenChanged_FailsWhenCannotClone(t *testing.T) { } func Test_redeployWhenChanged(t *testing.T) { - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) defer teardown() - tmpDir, _ := ioutil.TempDir("", "stack") + tmpDir := t.TempDir() err := store.Endpoint().Create(&portainer.Endpoint{ID: 1}) assert.NoError(t, err, "error creating environment") @@ -165,7 +164,7 @@ func Test_redeployWhenChanged(t *testing.T) { } func Test_getUserRegistries(t *testing.T) { - _, store, teardown := datastore.MustNewTestStore(true, true) + _, store, teardown := datastore.MustNewTestStore(t, true, true) defer teardown() endpointID := 123