From 419cf3fd43989a84e8def4b126ae6355d657e77b Mon Sep 17 00:00:00 2001 From: Tristan Morgan Date: Wed, 6 Sep 2023 09:42:09 +1000 Subject: [PATCH 1/3] Replace deprecated ioutil. --- client.go | 3 +-- common.go | 4 ++-- decompress_tar_test.go | 7 +++---- decompress_testing.go | 3 +-- decompress_zip_test.go | 5 ++--- get_file_unix_test.go | 3 +-- get_git.go | 3 +-- get_git_test.go | 9 ++++----- get_http_test.go | 7 +++---- helper/testing/utils.go | 7 +++---- source_test.go | 3 +-- 11 files changed, 22 insertions(+), 32 deletions(-) diff --git a/client.go b/client.go index 3aa5dd1d5..78fd5303b 100644 --- a/client.go +++ b/client.go @@ -4,7 +4,6 @@ import ( "context" "errors" "fmt" - "io/ioutil" "os" "path/filepath" "strconv" @@ -182,7 +181,7 @@ func (c *Client) get(ctx context.Context, req *Request, g Getter) (*GetResult, * if decompressor != nil { // Create a temporary directory to store our archive. We delete // this at the end of everything. - td, err := ioutil.TempDir("", "getter") + td, err := os.MkdirTemp("", "getter") if err != nil { return nil, &getError{true, fmt.Errorf( "Error creating temporary directory for archive: %s", err)} diff --git a/common.go b/common.go index d2afd8ad8..982a61201 100644 --- a/common.go +++ b/common.go @@ -1,11 +1,11 @@ package getter import ( - "io/ioutil" + "os" ) func tmpFile(dir, pattern string) (string, error) { - f, err := ioutil.TempFile(dir, pattern) + f, err := os.CreateTemp(dir, pattern) if err != nil { return "", err } diff --git a/decompress_tar_test.go b/decompress_tar_test.go index 39d8f5a71..f744547e2 100644 --- a/decompress_tar_test.go +++ b/decompress_tar_test.go @@ -3,7 +3,6 @@ package getter import ( "archive/tar" "bytes" - "io/ioutil" "os" "path/filepath" "runtime" @@ -79,14 +78,14 @@ func TestTarLimits(t *testing.T) { t.Fatal(err) } - td, err := ioutil.TempDir("", "getter") + td, err := os.MkdirTemp("", "getter") if err != nil { t.Fatalf("err: %s", err) } tarFilePath := filepath.Join(td, "input.tar") - err = ioutil.WriteFile(tarFilePath, b.Bytes(), 0666) + err = os.WriteFile(tarFilePath, b.Bytes(), 0666) if err != nil { t.Fatalf("err: %s", err) } @@ -130,7 +129,7 @@ func TestTarLimits(t *testing.T) { // testDecompressPermissions decompresses a directory and checks the permissions of the expanded files func testDecompressorPermissions(t *testing.T, d Decompressor, input string, expected map[string]int, umask os.FileMode) { - td, err := ioutil.TempDir("", "getter") + td, err := os.MkdirTemp("", "getter") if err != nil { t.Fatalf("err: %s", err) } diff --git a/decompress_testing.go b/decompress_testing.go index b18bd6cb6..bc00388c6 100644 --- a/decompress_testing.go +++ b/decompress_testing.go @@ -4,7 +4,6 @@ import ( "crypto/md5" "encoding/hex" "io" - "io/ioutil" "os" "path/filepath" "reflect" @@ -34,7 +33,7 @@ func TestDecompressor(t testing.T, d Decompressor, cases []TestDecompressCase) { t.Logf("Testing: %s", tc.Input) // Temporary dir to store stuff - td, err := ioutil.TempDir("", "getter") + td, err := os.MkdirTemp("", "getter") if err != nil { t.Fatalf("err: %s", err) } diff --git a/decompress_zip_test.go b/decompress_zip_test.go index 9d2d396fe..f788577f5 100644 --- a/decompress_zip_test.go +++ b/decompress_zip_test.go @@ -3,7 +3,6 @@ package getter import ( "archive/zip" "bytes" - "io/ioutil" "log" "os" "path/filepath" @@ -166,14 +165,14 @@ func TestDecompressZipBomb(t *testing.T) { } } - td, err := ioutil.TempDir("", "go-getter-zip") + td, err := os.MkdirTemp("", "go-getter-zip") if err != nil { t.Fatalf("err: %s", err) } zipFilePath := filepath.Join(td, "input.zip") - err = ioutil.WriteFile(zipFilePath, buf.Bytes(), 0666) + err = os.WriteFile(zipFilePath, buf.Bytes(), 0666) if err != nil { t.Fatalf("err: %s", err) } diff --git a/get_file_unix_test.go b/get_file_unix_test.go index aa8e83080..a84312d9b 100644 --- a/get_file_unix_test.go +++ b/get_file_unix_test.go @@ -4,7 +4,6 @@ package getter import ( - "io/ioutil" "os" "path/filepath" "testing" @@ -13,7 +12,7 @@ import ( // If a relative symlink is passed in as the pwd to Detect, the resulting URL // can have an invalid path. func TestFileDetector_relativeSymlink(t *testing.T) { - tmpDir, err := ioutil.TempDir("", "go-getter") + tmpDir, err := os.MkdirTemp("", "go-getter") if err != nil { t.Fatal(err) } diff --git a/get_git.go b/get_git.go index b2416fcfa..185a0209e 100644 --- a/get_git.go +++ b/get_git.go @@ -5,7 +5,6 @@ import ( "context" "encoding/base64" "fmt" - "io/ioutil" "net/url" "os" "os/exec" @@ -96,7 +95,7 @@ func (g *GitGetter) Get(ctx context.Context, req *Request) error { } // Create a temp file for the key and ensure it is removed. - fh, err := ioutil.TempFile("", "go-getter") + fh, err := os.CreateTemp("", "go-getter") if err != nil { return err } diff --git a/get_git_test.go b/get_git_test.go index c4a3df0d7..57e9e2772 100644 --- a/get_git_test.go +++ b/get_git_test.go @@ -6,7 +6,6 @@ import ( "encoding/base64" "errors" "fmt" - "io/ioutil" "net/url" "os" "os/exec" @@ -323,14 +322,14 @@ func TestGitGetter_gitVersion(t *testing.T) { if runtime.GOOS == "windows" { t.Skip("skipping on windows since the test requires sh") } - dir, err := ioutil.TempDir("", "go-getter") + dir, err := os.MkdirTemp("", "go-getter") if err != nil { t.Fatal(err) } defer os.RemoveAll(dir) script := filepath.Join(dir, "git") - err = ioutil.WriteFile( + err = os.WriteFile( script, []byte("#!/bin/sh\necho \"git version 2.0 (Some Metadata Here)\n\""), 0700) @@ -999,7 +998,7 @@ type gitRepo struct { // testGitRepo creates a new test git repository. func testGitRepo(t *testing.T, name string) *gitRepo { - dir, err := ioutil.TempDir("", "go-getter") + dir, err := os.MkdirTemp("", "go-getter") if err != nil { t.Fatal(err) } @@ -1041,7 +1040,7 @@ func (r *gitRepo) git(args ...string) { // commitFile writes and commits a text file to the repo. func (r *gitRepo) commitFile(file, content string) { path := filepath.Join(r.dir, file) - if err := ioutil.WriteFile(path, []byte(content), 0600); err != nil { + if err := os.WriteFile(path, []byte(content), 0600); err != nil { r.t.Fatal(err) } r.git("add", file) diff --git a/get_http_test.go b/get_http_test.go index bef270fa8..f98f97fb3 100644 --- a/get_http_test.go +++ b/get_http_test.go @@ -6,7 +6,6 @@ import ( "encoding/hex" "errors" "fmt" - "io/ioutil" "net" "net/http" "net/http/httputil" @@ -305,7 +304,7 @@ func TestHttpGetter_resume(t *testing.T) { t.Fatalf("finishing download should not error: %v", err) } - b, err := ioutil.ReadFile(dst) + b, err := os.ReadFile(dst) if err != nil { t.Fatalf("readfile failed: %v", err) } @@ -362,7 +361,7 @@ func TestHttpGetter_resumeNoRange(t *testing.T) { t.Fatalf("finishing download should not error: %v", err) } - b, err := ioutil.ReadFile(dst) + b, err := os.ReadFile(dst) if err != nil { t.Fatalf("readfile failed: %v", err) } @@ -804,7 +803,7 @@ func TestHttpGetter_subdirLink(t *testing.T) { ln := testHttpServerSubDir(t) defer ln.Close() - dst, err := ioutil.TempDir("", "tf") + dst, err := os.MkdirTemp("", "tf") if err != nil { t.Fatalf("err: %s", err) } diff --git a/helper/testing/utils.go b/helper/testing/utils.go index 64e61f8ab..90b0c21d9 100644 --- a/helper/testing/utils.go +++ b/helper/testing/utils.go @@ -2,7 +2,6 @@ package testing import ( "io" - "io/ioutil" "os" "path/filepath" "reflect" @@ -11,7 +10,7 @@ import ( ) func TempDir(t *testing.T) string { - dir, err := ioutil.TempDir("", "tf") + dir, err := os.MkdirTemp("", "tf") if err != nil { t.Fatalf("err: %s", err) } @@ -28,7 +27,7 @@ func TempTestFile(t *testing.T) string { } func AssertContents(t *testing.T, path string, contents string) { - data, err := ioutil.ReadFile(path) + data, err := os.ReadFile(path) if err != nil { t.Fatalf("err: %s", err) } @@ -41,7 +40,7 @@ func AssertContents(t *testing.T, path string, contents string) { // TempFileWithContent writes a temporary file and returns the path and a function // to clean it up. func TempFileWithContent(t *testing.T, contents string) (string, func()) { - tf, err := ioutil.TempFile("", "getter") + tf, err := os.CreateTemp("", "getter") if err != nil { t.Fatalf("err: %s", err) } diff --git a/source_test.go b/source_test.go index c65f50f1b..02c02a9be 100644 --- a/source_test.go +++ b/source_test.go @@ -1,7 +1,6 @@ package getter import ( - "io/ioutil" "os" "path/filepath" "testing" @@ -54,7 +53,7 @@ func TestSourceDirSubdir(t *testing.T) { } func TestSourceSubdirGlob(t *testing.T) { - td, err := ioutil.TempDir("", "subdir-glob") + td, err := os.MkdirTemp("", "subdir-glob") if err != nil { t.Fatal(err) } From ed378503d0848ff1bf68243da0f4274eefb5c0d9 Mon Sep 17 00:00:00 2001 From: Tristan Morgan Date: Tue, 30 Apr 2024 13:49:41 +1000 Subject: [PATCH 2/3] Use T.TempDir() in tests. --- decompress_tar_test.go | 14 ++++---------- decompress_zip_test.go | 7 ++----- get_file_unix_test.go | 7 ++----- get_git_test.go | 12 +++--------- get_http_test.go | 7 ++----- source_test.go | 5 +---- 6 files changed, 14 insertions(+), 38 deletions(-) diff --git a/decompress_tar_test.go b/decompress_tar_test.go index f744547e2..b092f2d05 100644 --- a/decompress_tar_test.go +++ b/decompress_tar_test.go @@ -78,14 +78,11 @@ func TestTarLimits(t *testing.T) { t.Fatal(err) } - td, err := os.MkdirTemp("", "getter") - if err != nil { - t.Fatalf("err: %s", err) - } + td := t.TempDir() tarFilePath := filepath.Join(td, "input.tar") - err = os.WriteFile(tarFilePath, b.Bytes(), 0666) + err := os.WriteFile(tarFilePath, b.Bytes(), 0666) if err != nil { t.Fatalf("err: %s", err) } @@ -129,15 +126,12 @@ func TestTarLimits(t *testing.T) { // testDecompressPermissions decompresses a directory and checks the permissions of the expanded files func testDecompressorPermissions(t *testing.T, d Decompressor, input string, expected map[string]int, umask os.FileMode) { - td, err := os.MkdirTemp("", "getter") - if err != nil { - t.Fatalf("err: %s", err) - } + td := t.TempDir() // Destination is always joining result so that we have a new path dst := filepath.Join(td, "subdir", "result") - err = d.Decompress(dst, input, true, umask) + err := d.Decompress(dst, input, true, umask) if err != nil { t.Fatalf("err: %s", err) } diff --git a/decompress_zip_test.go b/decompress_zip_test.go index f788577f5..3bb7fa048 100644 --- a/decompress_zip_test.go +++ b/decompress_zip_test.go @@ -165,14 +165,11 @@ func TestDecompressZipBomb(t *testing.T) { } } - td, err := os.MkdirTemp("", "go-getter-zip") - if err != nil { - t.Fatalf("err: %s", err) - } + td := t.TempDir() zipFilePath := filepath.Join(td, "input.zip") - err = os.WriteFile(zipFilePath, buf.Bytes(), 0666) + err := os.WriteFile(zipFilePath, buf.Bytes(), 0666) if err != nil { t.Fatalf("err: %s", err) } diff --git a/get_file_unix_test.go b/get_file_unix_test.go index a84312d9b..ec999d215 100644 --- a/get_file_unix_test.go +++ b/get_file_unix_test.go @@ -12,16 +12,13 @@ import ( // If a relative symlink is passed in as the pwd to Detect, the resulting URL // can have an invalid path. func TestFileDetector_relativeSymlink(t *testing.T) { - tmpDir, err := os.MkdirTemp("", "go-getter") - if err != nil { - t.Fatal(err) - } + tmpDir := t.TempDir() defer os.RemoveAll(tmpDir) // We may have a symlinked tmp dir, // e.g. OSX uses /var -> /private/var - tmpDir, err = filepath.EvalSymlinks(tmpDir) + tmpDir, err := filepath.EvalSymlinks(tmpDir) if err != nil { t.Fatal(err) } diff --git a/get_git_test.go b/get_git_test.go index 57e9e2772..d951c1e0c 100644 --- a/get_git_test.go +++ b/get_git_test.go @@ -322,14 +322,11 @@ func TestGitGetter_gitVersion(t *testing.T) { if runtime.GOOS == "windows" { t.Skip("skipping on windows since the test requires sh") } - dir, err := os.MkdirTemp("", "go-getter") - if err != nil { - t.Fatal(err) - } + dir := t.TempDir() defer os.RemoveAll(dir) script := filepath.Join(dir, "git") - err = os.WriteFile( + err := os.WriteFile( script, []byte("#!/bin/sh\necho \"git version 2.0 (Some Metadata Here)\n\""), 0700) @@ -998,10 +995,7 @@ type gitRepo struct { // testGitRepo creates a new test git repository. func testGitRepo(t *testing.T, name string) *gitRepo { - dir, err := os.MkdirTemp("", "go-getter") - if err != nil { - t.Fatal(err) - } + dir := t.TempDir() dir = filepath.Join(dir, name) if err := os.Mkdir(dir, 0700); err != nil { t.Fatal(err) diff --git a/get_http_test.go b/get_http_test.go index f98f97fb3..b5e689e07 100644 --- a/get_http_test.go +++ b/get_http_test.go @@ -803,10 +803,7 @@ func TestHttpGetter_subdirLink(t *testing.T) { ln := testHttpServerSubDir(t) defer ln.Close() - dst, err := os.MkdirTemp("", "tf") - if err != nil { - t.Fatalf("err: %s", err) - } + dst := t.TempDir() t.Logf("dst: %q", dst) @@ -828,7 +825,7 @@ func TestHttpGetter_subdirLink(t *testing.T) { GetMode: ModeAny, } - _, err = client.Get(ctx, &req) + _, err := client.Get(ctx, &req) if err != nil { t.Fatalf("get err: %v", err) } diff --git a/source_test.go b/source_test.go index 02c02a9be..0d1545940 100644 --- a/source_test.go +++ b/source_test.go @@ -53,10 +53,7 @@ func TestSourceDirSubdir(t *testing.T) { } func TestSourceSubdirGlob(t *testing.T) { - td, err := os.MkdirTemp("", "subdir-glob") - if err != nil { - t.Fatal(err) - } + td := t.TempDir() defer os.RemoveAll(td) if err := os.Mkdir(filepath.Join(td, "subdir"), 0755); err != nil { From fde106cdfaa11afacabd96efb20a4c9ff7fa7bc6 Mon Sep 17 00:00:00 2001 From: Tristan Morgan Date: Mon, 20 May 2024 09:46:26 +1000 Subject: [PATCH 3/3] Set minimal go version to 1.19 in /s3 --- s3/go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/s3/go.mod b/s3/go.mod index 18861d4e6..fb8649867 100644 --- a/s3/go.mod +++ b/s3/go.mod @@ -1,6 +1,6 @@ module github.com/hashicorp/go-getter/s3/v2 -go 1.18 +go 1.19 replace github.com/hashicorp/go-getter/v2 => ../