Replace most usages of ioutil with the underlying function

The ioutil functions are deprecated since Go 1.17 and only wrap another
library function. Thus directly call the underlying function.

This commit only mechanically replaces the function calls.
This commit is contained in:
Michael Eischer 2022-12-02 19:36:43 +01:00
parent 2d5e28e777
commit ff7ef5007e
57 changed files with 119 additions and 159 deletions

View File

@ -43,7 +43,6 @@ package main
import (
"fmt"
"io"
"io/ioutil"
"os"
"os/exec"
"path/filepath"
@ -179,7 +178,7 @@ func test(cwd string, env map[string]string, args ...string) error {
// getVersion returns the version string from the file VERSION in the current
// directory.
func getVersionFromFile() string {
buf, err := ioutil.ReadFile("VERSION")
buf, err := os.ReadFile("VERSION")
if err != nil {
verbosePrintf("error reading file VERSION: %v\n", err)
return ""

View File

@ -6,7 +6,6 @@ import (
"context"
"fmt"
"io"
"io/ioutil"
"os"
"path"
"path/filepath"
@ -185,7 +184,7 @@ func readLines(filename string) ([]string, error) {
)
if filename == "-" {
data, err = ioutil.ReadAll(os.Stdin)
data, err = io.ReadAll(os.Stdin)
} else {
data, err = textfile.Read(filename)
}

View File

@ -2,8 +2,8 @@ package main
import (
"context"
"io/ioutil"
"math/rand"
"os"
"strconv"
"strings"
"sync"
@ -171,7 +171,7 @@ func prepareCheckCache(opts CheckOptions, gopts *GlobalOptions) (cleanup func())
}
// use a cache in a temporary directory
tempdir, err := ioutil.TempDir(cachedir, "restic-check-cache-")
tempdir, err := os.MkdirTemp(cachedir, "restic-check-cache-")
if err != nil {
// if an error occurs, don't use any cache
Warnf("unable to create temporary directory for cache during check, disabling cache: %v\n", err)

View File

@ -3,7 +3,6 @@ package main
import (
"context"
"encoding/json"
"io/ioutil"
"os"
"strings"
"sync"
@ -255,7 +254,7 @@ func runKey(ctx context.Context, gopts GlobalOptions, args []string) error {
}
func loadPasswordFromFile(pwdFile string) (string, error) {
s, err := ioutil.ReadFile(pwdFile)
s, err := os.ReadFile(pwdFile)
if os.IsNotExist(err) {
return "", errors.Fatalf("%s does not exist", pwdFile)
}

View File

@ -1,7 +1,6 @@
package main
import (
"io/ioutil"
"os"
"path/filepath"
"testing"
@ -89,13 +88,13 @@ func TestIsExcludedByFile(t *testing.T) {
defer cleanup()
foo := filepath.Join(tempDir, "foo")
err := ioutil.WriteFile(foo, []byte("foo"), 0666)
err := os.WriteFile(foo, []byte("foo"), 0666)
if err != nil {
t.Fatalf("could not write file: %v", err)
}
if tc.tagFile != "" {
tagFile := filepath.Join(tempDir, tc.tagFile)
err = ioutil.WriteFile(tagFile, []byte(tc.content), 0666)
err = os.WriteFile(tagFile, []byte(tc.content), 0666)
if err != nil {
t.Fatalf("could not write tagfile: %v", err)
}
@ -150,7 +149,7 @@ func TestMultipleIsExcludedByFile(t *testing.T) {
// create directories first, then the file
p := filepath.Join(tempDir, filepath.FromSlash(f.path))
errs = append(errs, os.MkdirAll(filepath.Dir(p), 0700))
errs = append(errs, ioutil.WriteFile(p, []byte(f.path), 0600))
errs = append(errs, os.WriteFile(p, []byte(f.path), 0600))
}
test.OKs(t, errs) // see if anything went wrong during the creation

View File

@ -1,7 +1,7 @@
package main
import (
"io/ioutil"
"io"
"testing"
)
@ -10,7 +10,7 @@ import (
func TestFlags(t *testing.T) {
for _, cmd := range cmdRoot.Commands() {
t.Run(cmd.Name(), func(t *testing.T) {
cmd.Flags().SetOutput(ioutil.Discard)
cmd.Flags().SetOutput(io.Discard)
err := cmd.ParseFlags([]string{"--help"})
if err.Error() == "pflag: help requested" {
err = nil

View File

@ -2,7 +2,7 @@ package main
import (
"bytes"
"io/ioutil"
"os"
"path/filepath"
"testing"
@ -43,7 +43,7 @@ func TestReadRepo(t *testing.T) {
// test --repository-file option
foo := filepath.Join(tempDir, "foo")
err = ioutil.WriteFile(foo, []byte(tempDir+"\n"), 0666)
err = os.WriteFile(foo, []byte(tempDir+"\n"), 0666)
rtest.OK(t, err)
var opts2 GlobalOptions

View File

@ -1,7 +1,7 @@
package main
import (
"io/ioutil"
"os"
"path/filepath"
"testing"
@ -39,7 +39,7 @@ func TestBackupFailsWhenUsingInvalidPatternsFromFile(t *testing.T) {
// Create an exclude file with some invalid patterns
excludeFile := env.base + "/excludefile"
fileErr := ioutil.WriteFile(excludeFile, []byte("*.go\n*[._]log[.-][0-9]\n!*[._]log[.-][0-9]"), 0644)
fileErr := os.WriteFile(excludeFile, []byte("*.go\n*[._]log[.-][0-9]\n!*[._]log[.-][0-9]"), 0644)
if fileErr != nil {
t.Fatalf("Could not write exclude file: %v", fileErr)
}

View File

@ -3,7 +3,6 @@ package main
import (
"bytes"
"fmt"
"io/ioutil"
"os"
"path/filepath"
"runtime"
@ -174,7 +173,7 @@ func withTestEnvironment(t testing.TB) (env *testEnvironment, cleanup func()) {
restic.TestDisableCheckPolynomial(t)
retry.TestFastRetries(t)
tempdir, err := ioutil.TempDir(rtest.TestTempDir, "restic-test-")
tempdir, err := os.MkdirTemp(rtest.TestTempDir, "restic-test-")
rtest.OK(t, err)
env = &testEnvironment{

View File

@ -8,7 +8,6 @@ import (
"encoding/json"
"fmt"
"io"
"io/ioutil"
mrand "math/rand"
"os"
"path/filepath"
@ -65,7 +64,7 @@ func testRunBackupAssumeFailure(t testing.TB, dir string, target []string, opts
term := termstatus.New(gopts.stdout, gopts.stderr, gopts.Quiet)
wg.Go(func() error { term.Run(ctx); return nil })
gopts.stdout = ioutil.Discard
gopts.stdout = io.Discard
t.Logf("backing up %v in %v", target, dir)
if dir != "" {
cleanup := rtest.Chdir(t, dir)
@ -183,7 +182,7 @@ func testRunDiffOutput(gopts GlobalOptions, firstSnapshotID string, secondSnapsh
}
func testRunRebuildIndex(t testing.TB, gopts GlobalOptions) {
globalOptions.stdout = ioutil.Discard
globalOptions.stdout = io.Discard
defer func() {
globalOptions.stdout = os.Stdout
}()
@ -419,7 +418,7 @@ func TestBackupNonExistingFile(t *testing.T) {
defer cleanup()
testSetupBackupData(t, env)
globalOptions.stderr = ioutil.Discard
globalOptions.stderr = io.Discard
defer func() {
globalOptions.stderr = os.Stderr
}()
@ -641,7 +640,7 @@ func TestBackupErrors(t *testing.T) {
}()
opts := BackupOptions{}
gopts := env.gopts
gopts.stderr = ioutil.Discard
gopts.stderr = io.Discard
err := testRunBackupAssumeFailure(t, filepath.Dir(env.testdata), []string{"testdata"}, opts, gopts)
rtest.Assert(t, err != nil, "Assumed failure, but no error occurred.")
rtest.Assert(t, err == ErrInvalidSourceData, "Wrong error returned")
@ -1243,7 +1242,7 @@ func TestRestoreLatest(t *testing.T) {
opts := BackupOptions{}
// chdir manually here so we can get the current directory. This is not the
// same as the temp dir returned by ioutil.TempDir() on darwin.
// same as the temp dir returned by os.MkdirTemp() on darwin.
back := rtest.Chdir(t, filepath.Dir(env.testdata))
defer back()
@ -1308,7 +1307,7 @@ func TestRestoreWithPermissionFailure(t *testing.T) {
rtest.Assert(t, len(snapshots) > 0,
"no snapshots found in repo (%v)", datafile)
globalOptions.stderr = ioutil.Discard
globalOptions.stderr = io.Discard
defer func() {
globalOptions.stderr = os.Stderr
}()
@ -1542,7 +1541,7 @@ func TestRebuildIndexFailsOnAppendOnly(t *testing.T) {
datafile := filepath.Join("..", "..", "internal", "checker", "testdata", "duplicate-packs-in-index-test-repo.tar.gz")
rtest.SetupTarTestFixture(t, env.base, datafile)
globalOptions.stdout = ioutil.Discard
globalOptions.stdout = io.Discard
defer func() {
globalOptions.stdout = os.Stdout
}()

View File

@ -1,7 +1,7 @@
package main
import (
"io/ioutil"
"os"
"path/filepath"
"testing"
@ -167,7 +167,7 @@ func TestFillSecondaryGlobalOpts(t *testing.T) {
defer cleanup()
//Create temporary password file
err := ioutil.WriteFile(filepath.Join(dir, "passwordFileDst"), []byte("secretDst"), 0666)
err := os.WriteFile(filepath.Join(dir, "passwordFileDst"), []byte("secretDst"), 0666)
rtest.OK(t, err)
// Test all valid cases

View File

@ -73,13 +73,13 @@ func run(cmd string, args ...string) {
func replace(filename, from, to string) {
reg := regexp.MustCompile(from)
buf, err := ioutil.ReadFile(filename)
buf, err := os.ReadFile(filename)
if err != nil {
die("error reading file %v: %v", filename, err)
}
buf = reg.ReplaceAll(buf, []byte(to))
err = ioutil.WriteFile(filename, buf, 0644)
err = os.WriteFile(filename, buf, 0644)
if err != nil {
die("error writing file %v: %v", filename, err)
}
@ -308,7 +308,7 @@ var versionPattern = `var version = ".*"`
const versionCodeFile = "cmd/restic/global.go"
func updateVersion() {
err := ioutil.WriteFile("VERSION", []byte(opts.Version+"\n"), 0644)
err := os.WriteFile("VERSION", []byte(opts.Version+"\n"), 0644)
if err != nil {
die("unable to write version to file: %v", err)
}
@ -420,7 +420,7 @@ func updateDocker(outputDir, version string) {
}
func tempdir(prefix string) string {
dir, err := ioutil.TempDir(getwd(), prefix)
dir, err := os.MkdirTemp(getwd(), prefix)
if err != nil {
die("unable to create temp dir %q: %v", prefix, err)
}

View File

@ -4,7 +4,6 @@ import (
"bytes"
"context"
"io"
"io/ioutil"
"os"
"path/filepath"
"runtime"
@ -189,7 +188,7 @@ func TestArchiverSaveFileReaderFS(t *testing.T) {
ModTime: ts,
Mode: 0123,
Name: filename,
ReadCloser: ioutil.NopCloser(strings.NewReader(test.Data)),
ReadCloser: io.NopCloser(strings.NewReader(test.Data)),
}
node, stats := saveFile(t, repo, filename, readerFs)
@ -304,7 +303,7 @@ func TestArchiverSaveReaderFS(t *testing.T) {
ModTime: ts,
Mode: 0123,
Name: filename,
ReadCloser: ioutil.NopCloser(strings.NewReader(test.Data)),
ReadCloser: io.NopCloser(strings.NewReader(test.Data)),
}
arch := New(repo, readerFs, Options{})

View File

@ -3,7 +3,6 @@ package archiver
import (
"context"
"fmt"
"io/ioutil"
"os"
"path/filepath"
"runtime"
@ -21,7 +20,7 @@ func createTestFiles(t testing.TB, num int) (files []string, cleanup func()) {
for i := 0; i < 15; i++ {
filename := fmt.Sprintf("testfile-%d", i)
err := ioutil.WriteFile(filepath.Join(tempdir, filename), []byte(filename), 0600)
err := os.WriteFile(filepath.Join(tempdir, filename), []byte(filename), 0600)
if err != nil {
t.Fatal(err)
}

View File

@ -2,7 +2,6 @@ package archiver
import (
"context"
"io/ioutil"
"os"
"path"
"path/filepath"
@ -73,7 +72,7 @@ func TestCreateFiles(t testing.TB, target string, dir TestDir) {
switch it := item.(type) {
case TestFile:
err := ioutil.WriteFile(targetPath, []byte(it.Content), 0644)
err := os.WriteFile(targetPath, []byte(it.Content), 0644)
if err != nil {
t.Fatal(err)
}
@ -152,7 +151,7 @@ func TestEnsureFiles(t testing.TB, target string, dir TestDir) {
return nil
}
content, err := ioutil.ReadFile(path)
content, err := os.ReadFile(path)
if err != nil {
return err
}

View File

@ -3,7 +3,6 @@ package archiver
import (
"context"
"fmt"
"io/ioutil"
"os"
"path/filepath"
"testing"
@ -62,7 +61,7 @@ func createFilesAt(t testing.TB, targetdir string, files map[string]interface{})
switch it := item.(type) {
case TestFile:
err := ioutil.WriteFile(target, []byte(it.Content), 0600)
err := os.WriteFile(target, []byte(it.Content), 0600)
if err != nil {
t.Fatal(err)
}
@ -129,7 +128,7 @@ func TestTestCreateFiles(t *testing.T) {
continue
}
content, err := ioutil.ReadFile(targetPath)
content, err := os.ReadFile(targetPath)
if err != nil {
t.Error(err)
continue

View File

@ -4,7 +4,6 @@ import (
"context"
"fmt"
"io"
"io/ioutil"
"sort"
"strings"
"testing"
@ -109,7 +108,7 @@ func TestDry(t *testing.T) {
case "load":
data := ""
err = step.be.Load(ctx, handle, 100, 0, func(rd io.Reader) error {
buf, err := ioutil.ReadAll(rd)
buf, err := io.ReadAll(rd)
data = string(buf)
return err
})

View File

@ -4,9 +4,9 @@ import (
"crypto/tls"
"crypto/x509"
"encoding/pem"
"io/ioutil"
"net"
"net/http"
"os"
"strings"
"time"
@ -30,7 +30,7 @@ type TransportOptions struct {
// readPEMCertKey reads a file and returns the PEM encoded certificate and key
// blocks.
func readPEMCertKey(filename string) (certs []byte, key []byte, err error) {
data, err := ioutil.ReadFile(filename)
data, err := os.ReadFile(filename)
if err != nil {
return nil, nil, errors.Wrap(err, "ReadFile")
}
@ -105,7 +105,7 @@ func Transport(opts TransportOptions) (http.RoundTripper, error) {
if filename == "" {
return nil, errors.Errorf("empty filename for root certificate supplied")
}
b, err := ioutil.ReadFile(filename)
b, err := os.ReadFile(filename)
if err != nil {
return nil, errors.Errorf("unable to read root certificate: %v", err)
}

View File

@ -4,7 +4,6 @@ import (
"context"
"hash"
"io"
"io/ioutil"
"os"
"path/filepath"
"syscall"
@ -209,7 +208,7 @@ func (b *Local) Save(ctx context.Context, h restic.Handle, rd restic.RewindReade
return nil
}
var tempFile = ioutil.TempFile // Overridden by test.
var tempFile = os.CreateTemp // Overridden by test.
// Load runs fn with a reader that yields the contents of the file at h at the
// given offset.

View File

@ -2,7 +2,6 @@ package local_test
import (
"context"
"io/ioutil"
"os"
"path/filepath"
"testing"
@ -17,7 +16,7 @@ func newTestSuite(t testing.TB) *test.Suite {
return &test.Suite{
// NewConfig returns a config for a new temporary backend that will be used in tests.
NewConfig: func() (interface{}, error) {
dir, err := ioutil.TempDir(rtest.TestTempDir, "restic-test-local-")
dir, err := os.MkdirTemp(rtest.TestTempDir, "restic-test-local-")
if err != nil {
t.Fatal(err)
}

View File

@ -6,7 +6,6 @@ import (
"encoding/base64"
"hash"
"io"
"io/ioutil"
"sync"
"github.com/cespare/xxhash/v2"
@ -96,7 +95,7 @@ func (be *MemoryBackend) Save(ctx context.Context, h restic.Handle, rd restic.Re
return errors.New("file already exists")
}
buf, err := ioutil.ReadAll(rd)
buf, err := io.ReadAll(rd)
if err != nil {
return err
}
@ -168,7 +167,7 @@ func (be *MemoryBackend) openReader(ctx context.Context, h restic.Handle, length
buf = buf[:length]
}
return be.sem.ReleaseTokenOnClose(ioutil.NopCloser(bytes.NewReader(buf)), nil), ctx.Err()
return be.sem.ReleaseTokenOnClose(io.NopCloser(bytes.NewReader(buf)), nil), ctx.Err()
}
// Stat returns information about a file in the backend.

View File

@ -6,7 +6,6 @@ import (
"fmt"
"hash"
"io"
"io/ioutil"
"net/http"
"net/url"
"path"
@ -89,7 +88,7 @@ func Create(ctx context.Context, cfg Config, rt http.RoundTripper) (*Backend, er
return nil, errors.Fatalf("server response unexpected: %v (%v)", resp.Status, resp.StatusCode)
}
_, err = io.Copy(ioutil.Discard, resp.Body)
_, err = io.Copy(io.Discard, resp.Body)
if err != nil {
return nil, err
}
@ -133,7 +132,7 @@ func (b *Backend) Save(ctx context.Context, h restic.Handle, rd restic.RewindRea
// make sure that client.Post() cannot close the reader by wrapping it
req, err := http.NewRequestWithContext(ctx,
http.MethodPost, b.Filename(h), ioutil.NopCloser(rd))
http.MethodPost, b.Filename(h), io.NopCloser(rd))
if err != nil {
return errors.WithStack(err)
}
@ -150,7 +149,7 @@ func (b *Backend) Save(ctx context.Context, h restic.Handle, rd restic.RewindRea
var cerr error
if resp != nil {
_, _ = io.Copy(ioutil.Discard, resp.Body)
_, _ = io.Copy(io.Discard, resp.Body)
cerr = resp.Body.Close()
}
@ -245,7 +244,7 @@ func (b *Backend) openReader(ctx context.Context, h restic.Handle, length int, o
if err != nil {
if resp != nil {
_, _ = io.Copy(ioutil.Discard, resp.Body)
_, _ = io.Copy(io.Discard, resp.Body)
_ = resp.Body.Close()
}
return nil, errors.Wrap(err, "client.Do")
@ -283,7 +282,7 @@ func (b *Backend) Stat(ctx context.Context, h restic.Handle) (restic.FileInfo, e
return restic.FileInfo{}, errors.WithStack(err)
}
_, _ = io.Copy(ioutil.Discard, resp.Body)
_, _ = io.Copy(io.Discard, resp.Body)
if err = resp.Body.Close(); err != nil {
return restic.FileInfo{}, errors.Wrap(err, "Close")
}
@ -348,7 +347,7 @@ func (b *Backend) Remove(ctx context.Context, h restic.Handle) error {
return errors.Errorf("blob not removed, server response: %v (%v)", resp.Status, resp.StatusCode)
}
_, err = io.Copy(ioutil.Discard, resp.Body)
_, err = io.Copy(io.Discard, resp.Body)
if err != nil {
return errors.Wrap(err, "Copy")
}

View File

@ -4,7 +4,6 @@ import (
"bytes"
"context"
"io"
"io/ioutil"
"testing"
"time"
@ -22,7 +21,7 @@ func TestBackendSaveRetry(t *testing.T) {
SaveFn: func(ctx context.Context, h restic.Handle, rd restic.RewindReader) error {
if errcount == 0 {
errcount++
_, err := io.CopyN(ioutil.Discard, rd, 120)
_, err := io.CopyN(io.Discard, rd, 120)
if err != nil {
return err
}
@ -267,7 +266,7 @@ func TestBackendLoadRetry(t *testing.T) {
var buf []byte
err := retryBackend.Load(context.TODO(), restic.Handle{}, 0, 0, func(rd io.Reader) (err error) {
buf, err = ioutil.ReadAll(rd)
buf, err = io.ReadAll(rd)
return err
})
test.OK(t, err)

View File

@ -5,7 +5,6 @@ import (
"fmt"
"hash"
"io"
"io/ioutil"
"net/http"
"os"
"path"
@ -296,7 +295,7 @@ func (be *Backend) Save(ctx context.Context, h restic.Handle, rd restic.RewindRe
opts.PartSize = 200 * 1024 * 1024
debug.Log("PutObject(%v, %v, %v)", be.cfg.Bucket, objName, rd.Length())
info, err := be.client.PutObject(ctx, be.cfg.Bucket, objName, ioutil.NopCloser(rd), int64(rd.Length()), opts)
info, err := be.client.PutObject(ctx, be.cfg.Bucket, objName, io.NopCloser(rd), int64(rd.Length()), opts)
debug.Log("%v -> %v bytes, err %#v: %v", objName, info.Size, err, err)

View File

@ -3,7 +3,6 @@ package sftp_test
import (
"context"
"fmt"
"io/ioutil"
"os"
"path/filepath"
"strings"
@ -34,7 +33,7 @@ func newTestSuite(t testing.TB) *test.Suite {
return &test.Suite{
// NewConfig returns a config for a new temporary backend that will be used in tests.
NewConfig: func() (interface{}, error) {
dir, err := ioutil.TempDir(rtest.TestTempDir, "restic-test-sftp-")
dir, err := os.MkdirTemp(rtest.TestTempDir, "restic-test-sftp-")
if err != nil {
t.Fatal(err)
}

View File

@ -5,7 +5,6 @@ import (
"context"
"fmt"
"io"
"io/ioutil"
"math/rand"
"os"
"reflect"
@ -148,7 +147,7 @@ func (s *Suite) TestLoad(t *testing.T) {
}
err = b.Load(context.TODO(), handle, 0, 0, func(rd io.Reader) error {
_, err := io.Copy(ioutil.Discard, rd)
_, err := io.Copy(io.Discard, rd)
if err != nil {
t.Fatal(err)
}
@ -189,7 +188,7 @@ func (s *Suite) TestLoad(t *testing.T) {
var buf []byte
err := b.Load(context.TODO(), handle, getlen, int64(o), func(rd io.Reader) (ierr error) {
buf, ierr = ioutil.ReadAll(rd)
buf, ierr = io.ReadAll(rd)
return ierr
})
if err != nil {
@ -522,7 +521,7 @@ func (s *Suite) TestSave(t *testing.T) {
}
// test saving from a tempfile
tmpfile, err := ioutil.TempFile("", "restic-backend-save-test-")
tmpfile, err := os.CreateTemp("", "restic-backend-save-test-")
if err != nil {
t.Fatal(err)
}
@ -678,7 +677,7 @@ func store(t testing.TB, b restic.Backend, tpe restic.FileType, data []byte) res
// testLoad loads a blob (but discards its contents).
func testLoad(b restic.Backend, h restic.Handle, length int, offset int64) error {
return b.Load(context.TODO(), h, 0, 0, func(rd io.Reader) (ierr error) {
_, ierr = io.Copy(ioutil.Discard, rd)
_, ierr = io.Copy(io.Discard, rd)
return ierr
})
}

View File

@ -5,7 +5,6 @@ import (
"context"
"fmt"
"io"
"io/ioutil"
"math/rand"
"testing"
@ -79,7 +78,7 @@ func TestLoadAllBroken(t *testing.T) {
data[0] ^= 0xff
b.OpenReaderFn = func(ctx context.Context, h restic.Handle, length int, offset int64) (io.ReadCloser, error) {
return ioutil.NopCloser(bytes.NewReader(data)), nil
return io.NopCloser(bytes.NewReader(data)), nil
}
// must fail on first try

View File

@ -4,7 +4,6 @@ import (
"bytes"
"context"
"io"
"io/ioutil"
"math/rand"
"sync"
"testing"
@ -203,7 +202,7 @@ func TestBackendRemoveBroken(t *testing.T) {
_ = rd.Close()
}()
test.OK(t, err)
cached, err := ioutil.ReadAll(rd)
cached, err := io.ReadAll(rd)
test.OK(t, err)
if !bytes.Equal(cached, data) {
t.Fatalf("wrong data cache")

View File

@ -2,7 +2,6 @@ package cache
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
"regexp"
@ -26,7 +25,7 @@ const dirMode = 0700
const fileMode = 0644
func readVersion(dir string) (v uint, err error) {
buf, err := ioutil.ReadFile(filepath.Join(dir, "version"))
buf, err := os.ReadFile(filepath.Join(dir, "version"))
if errors.Is(err, os.ErrNotExist) {
return 0, nil
}
@ -130,7 +129,7 @@ func New(id string, basedir string) (c *Cache, err error) {
}
if v < cacheVersion {
err = ioutil.WriteFile(filepath.Join(cachedir, "version"), []byte(fmt.Sprintf("%d", cacheVersion)), fileMode)
err = os.WriteFile(filepath.Join(cachedir, "version"), []byte(fmt.Sprintf("%d", cacheVersion)), fileMode)
if err != nil {
return nil, errors.WithStack(err)
}

View File

@ -2,7 +2,6 @@ package cache
import (
"io"
"io/ioutil"
"os"
"path/filepath"
"runtime"
@ -106,7 +105,7 @@ func (c *Cache) Save(h restic.Handle, rd io.Reader) error {
// First save to a temporary location. This allows multiple concurrent
// restics to use a single cache dir.
f, err := ioutil.TempFile(dir, "tmp-")
f, err := os.CreateTemp(dir, "tmp-")
if err != nil {
return err
}

View File

@ -3,7 +3,7 @@ package cache
import (
"bytes"
"fmt"
"io/ioutil"
"io"
"math/rand"
"os"
"runtime"
@ -55,7 +55,7 @@ func load(t testing.TB, c *Cache, h restic.Handle) []byte {
t.Fatalf("load() returned nil reader")
}
buf, err := ioutil.ReadAll(rd)
buf, err := io.ReadAll(rd)
if err != nil {
t.Fatal(err)
}
@ -174,7 +174,7 @@ func TestFileLoad(t *testing.T) {
t.Fatal(err)
}
buf, err := ioutil.ReadAll(rd)
buf, err := io.ReadAll(rd)
if err != nil {
t.Fatal(err)
}
@ -258,7 +258,7 @@ func TestFileSaveConcurrent(t *testing.T) {
}
defer func() { _ = f.Close() }()
read, err := ioutil.ReadAll(f)
read, err := io.ReadAll(f)
if err == nil && !bytes.Equal(read, data) {
err = errors.New("mismatch between Save and Load")
}

View File

@ -6,7 +6,6 @@ import (
"context"
"fmt"
"io"
"io/ioutil"
"runtime"
"sort"
"sync"
@ -556,7 +555,7 @@ func checkPack(ctx context.Context, r restic.Repository, id restic.ID, blobs []r
}
// read remainder, which should be the pack header
hdrBuf, err = ioutil.ReadAll(bufRd)
hdrBuf, err = io.ReadAll(bufRd)
if err != nil {
return err
}

View File

@ -3,7 +3,6 @@ package checker_test
import (
"context"
"io"
"io/ioutil"
"math/rand"
"os"
"path/filepath"
@ -208,7 +207,7 @@ func TestModifiedIndex(t *testing.T) {
Name: "90f838b4ac28735fda8644fe6a08dbc742e57aaf81b30977b4fefa357010eafd",
}
tmpfile, err := ioutil.TempFile("", "restic-test-mod-index-")
tmpfile, err := os.CreateTemp("", "restic-test-mod-index-")
if err != nil {
t.Fatal(err)
}

View File

@ -3,7 +3,6 @@ package debug
import (
"fmt"
"io"
"io/ioutil"
"net/http"
"net/http/httputil"
"os"
@ -30,7 +29,7 @@ func (rd *eofDetectReader) Read(p []byte) (n int, err error) {
func (rd *eofDetectReader) Close() error {
if !rd.eofSeen {
buf, err := ioutil.ReadAll(rd)
buf, err := io.ReadAll(rd)
msg := fmt.Sprintf("body not drained, %d bytes not read", len(buf))
if err != nil {
msg += fmt.Sprintf(", error: %v", err)

View File

@ -5,7 +5,6 @@ import (
"bytes"
"fmt"
"io"
"io/ioutil"
"os"
"path/filepath"
"strings"
@ -91,7 +90,7 @@ func checkTar(t *testing.T, testDir string, srcTar *bytes.Buffer) error {
if match.Size() != hdr.Size {
return fmt.Errorf("size does not match got %v want %v", hdr.Size, match.Size())
}
contentsFile, err := ioutil.ReadFile(matchPath)
contentsFile, err := os.ReadFile(matchPath)
if err != nil {
t.Fatal(err)
}

View File

@ -4,7 +4,6 @@ import (
"archive/zip"
"bytes"
"fmt"
"io/ioutil"
"os"
"path/filepath"
"strings"
@ -107,7 +106,7 @@ func checkZip(t *testing.T, testDir string, srcZip *bytes.Buffer) error {
if uint64(match.Size()) != f.UncompressedSize64 {
return fmt.Errorf("size does not match got %v want %v", f.UncompressedSize64, match.Size())
}
contentsFile, err := ioutil.ReadFile(matchPath)
contentsFile, err := os.ReadFile(matchPath)
if err != nil {
t.Fatal(err)
}

View File

@ -4,7 +4,6 @@
package fs
import (
"io/ioutil"
"os"
"syscall"
)
@ -18,7 +17,7 @@ func fixpath(name string) string {
// TempFile creates a temporary file which has already been deleted (on
// supported platforms)
func TempFile(dir, prefix string) (f *os.File, err error) {
f, err = ioutil.TempFile(dir, prefix)
f, err = os.CreateTemp(dir, prefix)
if err != nil {
return nil, err
}

View File

@ -36,7 +36,7 @@ func fixpath(name string) string {
// TempFile creates a temporary file which is marked as delete-on-close
func TempFile(dir, prefix string) (f *os.File, err error) {
// slightly modified implementation of ioutil.TempFile(dir, prefix) to allow us to add
// slightly modified implementation of os.CreateTemp(dir, prefix) to allow us to add
// the FILE_ATTRIBUTE_TEMPORARY | FILE_FLAG_DELETE_ON_CLOSE flags.
// These provide two large benefits:
// FILE_ATTRIBUTE_TEMPORARY tells Windows to keep the file in memory only if possible

View File

@ -2,7 +2,7 @@ package fs
import (
"bytes"
"io/ioutil"
"io"
"os"
"path"
"sort"
@ -20,7 +20,7 @@ func verifyFileContentOpen(t testing.TB, fs FS, filename string, want []byte) {
t.Fatal(err)
}
buf, err := ioutil.ReadAll(f)
buf, err := io.ReadAll(f)
if err != nil {
t.Fatal(err)
}
@ -41,7 +41,7 @@ func verifyFileContentOpenFile(t testing.TB, fs FS, filename string, want []byte
t.Fatal(err)
}
buf, err := ioutil.ReadAll(f)
buf, err := io.ReadAll(f)
if err != nil {
t.Fatal(err)
}
@ -320,7 +320,7 @@ func TestFSReader(t *testing.T) {
for _, test := range tests {
fs := &Reader{
Name: filename,
ReadCloser: ioutil.NopCloser(bytes.NewReader(data)),
ReadCloser: io.NopCloser(bytes.NewReader(data)),
Mode: 0644,
Size: int64(len(data)),
@ -355,7 +355,7 @@ func TestFSReaderDir(t *testing.T) {
t.Run(test.name, func(t *testing.T) {
fs := &Reader{
Name: test.filename,
ReadCloser: ioutil.NopCloser(bytes.NewReader(data)),
ReadCloser: io.NopCloser(bytes.NewReader(data)),
Mode: 0644,
Size: int64(len(data)),
@ -410,7 +410,7 @@ func TestFSReaderMinFileSize(t *testing.T) {
t.Run(test.name, func(t *testing.T) {
fs := &Reader{
Name: "testfile",
ReadCloser: ioutil.NopCloser(strings.NewReader(test.data)),
ReadCloser: io.NopCloser(strings.NewReader(test.data)),
Mode: 0644,
ModTime: time.Now(),
AllowEmptyFile: test.allowEmpty,
@ -421,7 +421,7 @@ func TestFSReaderMinFileSize(t *testing.T) {
t.Fatal(err)
}
buf, err := ioutil.ReadAll(f)
buf, err := io.ReadAll(f)
if test.readMustErr {
if err == nil {
t.Fatal("expected error not found, got nil")

View File

@ -2,7 +2,6 @@ package fs
import (
"io"
"io/ioutil"
"os"
"testing"
"time"
@ -13,7 +12,7 @@ import (
)
func TestNoatime(t *testing.T) {
f, err := ioutil.TempFile("", "restic-test-noatime")
f, err := os.CreateTemp("", "restic-test-noatime")
if err != nil {
t.Fatal(err)
}

View File

@ -1,7 +1,7 @@
package fs
import (
"io/ioutil"
"os"
"path/filepath"
"testing"
@ -13,7 +13,7 @@ func TestExtendedStat(t *testing.T) {
defer cleanup()
filename := filepath.Join(tempdir, "file")
err := ioutil.WriteFile(filename, []byte("foobar"), 0640)
err := os.WriteFile(filename, []byte("foobar"), 0640)
if err != nil {
t.Fatal(err)
}

View File

@ -5,7 +5,6 @@ import (
"crypto/rand"
"crypto/sha256"
"io"
"io/ioutil"
"testing"
)
@ -22,7 +21,7 @@ func TestReader(t *testing.T) {
expectedHash := sha256.Sum256(data)
rd := NewReader(bytes.NewReader(data), sha256.New())
n, err := io.Copy(ioutil.Discard, rd)
n, err := io.Copy(io.Discard, rd)
if err != nil {
t.Fatal(err)
}
@ -54,7 +53,7 @@ func BenchmarkReader(b *testing.B) {
b.ResetTimer()
for i := 0; i < b.N; i++ {
rd := NewReader(bytes.NewReader(buf), sha256.New())
n, err := io.Copy(ioutil.Discard, rd)
n, err := io.Copy(io.Discard, rd)
if err != nil {
b.Fatal(err)
}

View File

@ -5,7 +5,6 @@ import (
"crypto/rand"
"crypto/sha256"
"io"
"io/ioutil"
"testing"
)
@ -21,7 +20,7 @@ func TestWriter(t *testing.T) {
expectedHash := sha256.Sum256(data)
wr := NewWriter(ioutil.Discard, sha256.New())
wr := NewWriter(io.Discard, sha256.New())
n, err := io.Copy(wr, bytes.NewReader(data))
if err != nil {
@ -54,7 +53,7 @@ func BenchmarkWriter(b *testing.B) {
b.SetBytes(int64(len(buf)))
b.ResetTimer()
for i := 0; i < b.N; i++ {
wr := NewWriter(ioutil.Discard, sha256.New())
wr := NewWriter(io.Discard, sha256.New())
n, err := io.Copy(wr, bytes.NewReader(buf))
if err != nil {
b.Fatal(err)

View File

@ -4,7 +4,6 @@ import (
"context"
"fmt"
"io"
"io/ioutil"
"os"
"path/filepath"
@ -81,7 +80,7 @@ func (*UpgradeRepoV2) upgrade(ctx context.Context, repo restic.Repository) error
}
func (m *UpgradeRepoV2) Apply(ctx context.Context, repo restic.Repository) error {
tempdir, err := ioutil.TempDir("", "restic-migrate-upgrade-repo-v2-")
tempdir, err := os.MkdirTemp("", "restic-migrate-upgrade-repo-v2-")
if err != nil {
return fmt.Errorf("create temp dir failed: %w", err)
}
@ -91,7 +90,7 @@ func (m *UpgradeRepoV2) Apply(ctx context.Context, repo restic.Repository) error
// read raw config file and save it to a temp dir, just in case
var rawConfigFile []byte
err = repo.Backend().Load(ctx, h, 0, 0, func(rd io.Reader) (err error) {
rawConfigFile, err = ioutil.ReadAll(rd)
rawConfigFile, err = io.ReadAll(rd)
return err
})
if err != nil {
@ -99,7 +98,7 @@ func (m *UpgradeRepoV2) Apply(ctx context.Context, repo restic.Repository) error
}
backupFileName := filepath.Join(tempdir, "config")
err = ioutil.WriteFile(backupFileName, rawConfigFile, 0600)
err = os.WriteFile(backupFileName, rawConfigFile, 0600)
if err != nil {
return fmt.Errorf("write config file backup to %v failed: %w", tempdir, err)
}

View File

@ -4,7 +4,6 @@ import (
"bufio"
"context"
"io"
"io/ioutil"
"os"
"runtime"
"sync"
@ -151,7 +150,7 @@ func (r *Repository) savePacker(ctx context.Context, t restic.BlobType, p *Packe
}
hr := hashing.NewReader(rd, sha256.New())
_, err = io.Copy(ioutil.Discard, hr)
_, err = io.Copy(io.Discard, hr)
if err != nil {
return err
}

View File

@ -2,7 +2,6 @@ package restic_test
import (
"context"
"io/ioutil"
"os"
"path/filepath"
"runtime"
@ -14,7 +13,7 @@ import (
)
func BenchmarkNodeFillUser(t *testing.B) {
tempfile, err := ioutil.TempFile("", "restic-test-temp-")
tempfile, err := os.CreateTemp("", "restic-test-temp-")
if err != nil {
t.Fatal(err)
}
@ -38,7 +37,7 @@ func BenchmarkNodeFillUser(t *testing.B) {
}
func BenchmarkNodeFromFileInfo(t *testing.B) {
tempfile, err := ioutil.TempFile("", "restic-test-temp-")
tempfile, err := os.CreateTemp("", "restic-test-temp-")
if err != nil {
t.Fatal(err)
}
@ -167,7 +166,7 @@ var nodeTests = []restic.Node{
}
func TestNodeRestoreAt(t *testing.T) {
tempdir, err := ioutil.TempDir(rtest.TestTempDir, "restic-test-")
tempdir, err := os.MkdirTemp(rtest.TestTempDir, "restic-test-")
rtest.OK(t, err)
defer func() {

View File

@ -5,7 +5,6 @@ import (
"crypto/md5"
"hash"
"io"
"io/ioutil"
"math/rand"
"os"
"path/filepath"
@ -32,7 +31,7 @@ func TestFileReader(t *testing.T) {
defer cleanup()
filename := filepath.Join(d, "file-reader-test")
err := ioutil.WriteFile(filename, buf, 0600)
err := os.WriteFile(filename, buf, 0600)
if err != nil {
t.Fatal(err)
}

View File

@ -3,7 +3,7 @@ package restic_test
import (
"encoding/json"
"fmt"
"io/ioutil"
"os"
"path/filepath"
"testing"
"time"
@ -61,7 +61,7 @@ type ApplyPolicyResult struct {
}
func loadGoldenFile(t testing.TB, filename string) (res ApplyPolicyResult) {
buf, err := ioutil.ReadFile(filename)
buf, err := os.ReadFile(filename)
if err != nil {
t.Fatalf("error loading golden file %v: %v", filename, err)
}
@ -85,7 +85,7 @@ func saveGoldenFile(t testing.TB, filename string, keep restic.Snapshots, reason
t.Fatalf("error marshaling result: %v", err)
}
if err = ioutil.WriteFile(filename, buf, 0644); err != nil {
if err = os.WriteFile(filename, buf, 0644); err != nil {
t.Fatalf("unable to update golden file: %v", err)
}
}

View File

@ -4,7 +4,6 @@ import (
"context"
"encoding/json"
"errors"
"io/ioutil"
"os"
"path/filepath"
"strconv"
@ -27,7 +26,7 @@ var testFiles = []struct {
}
func createTempDir(t *testing.T) string {
tempdir, err := ioutil.TempDir(rtest.TestTempDir, "restic-test-")
tempdir, err := os.MkdirTemp(rtest.TestTempDir, "restic-test-")
rtest.OK(t, err)
for _, test := range testFiles {

View File

@ -5,7 +5,7 @@ import (
"context"
"fmt"
"io"
"io/ioutil"
"os"
"testing"
"github.com/restic/restic/internal/crypto"
@ -171,7 +171,7 @@ func restoreAndVerify(t *testing.T, tempdir string, content []TestFile, files ma
func verifyRestore(t *testing.T, r *fileRestorer, repo *TestRepo) {
for _, file := range r.files {
target := r.targetPath(file.location)
data, err := ioutil.ReadFile(target)
data, err := os.ReadFile(target)
if err != nil {
t.Errorf("unable to read file %v: %v", file.location, err)
continue

View File

@ -1,7 +1,7 @@
package restorer
import (
"io/ioutil"
"os"
"testing"
rtest "github.com/restic/restic/internal/test"
@ -28,11 +28,11 @@ func TestFilesWriterBasic(t *testing.T) {
rtest.OK(t, w.writeToFile(f2, []byte{2}, 1, -1, false))
rtest.Equals(t, 0, len(w.buckets[0].files))
buf, err := ioutil.ReadFile(f1)
buf, err := os.ReadFile(f1)
rtest.OK(t, err)
rtest.Equals(t, []byte{1, 1}, buf)
buf, err = ioutil.ReadFile(f2)
buf, err = os.ReadFile(f2)
rtest.OK(t, err)
rtest.Equals(t, []byte{2, 2}, buf)
}

View File

@ -3,7 +3,7 @@ package restorer
import (
"bytes"
"context"
"io/ioutil"
"io"
"math"
"os"
"path/filepath"
@ -401,7 +401,7 @@ func TestRestorer(t *testing.T) {
}
for filename, content := range test.Files {
data, err := ioutil.ReadFile(filepath.Join(tempdir, filepath.FromSlash(filename)))
data, err := os.ReadFile(filepath.Join(tempdir, filepath.FromSlash(filename)))
if err != nil {
t.Errorf("unable to read file %v: %v", filename, err)
continue
@ -477,7 +477,7 @@ func TestRestorerRelative(t *testing.T) {
}
for filename, content := range test.Files {
data, err := ioutil.ReadFile(filepath.Join(tempdir, "restore", filepath.FromSlash(filename)))
data, err := os.ReadFile(filepath.Join(tempdir, "restore", filepath.FromSlash(filename)))
if err != nil {
t.Errorf("unable to read file %v: %v", filename, err)
continue
@ -825,7 +825,7 @@ func TestVerifyCancel(t *testing.T) {
defer cancel()
rtest.OK(t, res.RestoreTo(ctx, tempdir))
err := ioutil.WriteFile(filepath.Join(tempdir, "foo"), []byte("bar"), 0644)
err := os.WriteFile(filepath.Join(tempdir, "foo"), []byte("bar"), 0644)
rtest.OK(t, err)
var errs []error
@ -850,7 +850,7 @@ func TestRestorerSparseFiles(t *testing.T) {
target := &fs.Reader{
Mode: 0600,
Name: "/zeros",
ReadCloser: ioutil.NopCloser(bytes.NewReader(zeros[:])),
ReadCloser: io.NopCloser(bytes.NewReader(zeros[:])),
}
sc := archiver.NewScanner(target)
err := sc.Scan(context.TODO(), []string{"/zeros"})
@ -873,7 +873,7 @@ func TestRestorerSparseFiles(t *testing.T) {
rtest.OK(t, err)
filename := filepath.Join(tempdir, "zeros")
content, err := ioutil.ReadFile(filename)
content, err := os.ReadFile(filename)
rtest.OK(t, err)
rtest.Equals(t, len(zeros[:]), len(content))

View File

@ -10,7 +10,6 @@ import (
"encoding/hex"
"fmt"
"io"
"io/ioutil"
"os"
"path/filepath"
"runtime"
@ -69,7 +68,7 @@ func extractToFile(buf []byte, filename, target string, printf func(string, ...i
// Write everything to a temp file
dir := filepath.Dir(target)
new, err := ioutil.TempFile(dir, "restic")
new, err := os.CreateTemp(dir, "restic")
if err != nil {
return err
}

View File

@ -4,7 +4,7 @@ import (
"context"
"encoding/json"
"fmt"
"io/ioutil"
"io"
"net/http"
"strings"
"time"
@ -80,7 +80,7 @@ func GitHubLatestRelease(ctx context.Context, owner, repo string) (Release, erro
return Release{}, fmt.Errorf("unexpected status %v (%v) returned", res.StatusCode, res.Status)
}
buf, err := ioutil.ReadAll(res.Body)
buf, err := io.ReadAll(res.Body)
if err != nil {
_ = res.Body.Close()
return Release{}, err
@ -128,7 +128,7 @@ func getGithubData(ctx context.Context, url string) ([]byte, error) {
return nil, fmt.Errorf("unexpected status %v (%v) returned", res.StatusCode, res.Status)
}
buf, err := ioutil.ReadAll(res.Body)
buf, err := io.ReadAll(res.Body)
if err != nil {
_ = res.Body.Close()
return nil, err

View File

@ -5,7 +5,6 @@ import (
"compress/gzip"
"fmt"
"io"
"io/ioutil"
"os"
"os/exec"
"path/filepath"
@ -131,7 +130,7 @@ func SetupTarTestFixture(t testing.TB, outputDir, tarFile string) {
// Env creates a test environment and extracts the repository fixture.
// Returned is the repo path and a cleanup function.
func Env(t testing.TB, repoFixture string) (repodir string, cleanup func()) {
tempdir, err := ioutil.TempDir(TestTempDir, "restic-test-env-")
tempdir, err := os.MkdirTemp(TestTempDir, "restic-test-env-")
OK(t, err)
fd, err := os.Open(repoFixture)
@ -195,7 +194,7 @@ func RemoveAll(t testing.TB, path string) {
// TempDir returns a temporary directory that is removed when cleanup is
// called, except if TestCleanupTempDirs is set to false.
func TempDir(t testing.TB) (path string, cleanup func()) {
tempdir, err := ioutil.TempDir(TestTempDir, "restic-test-")
tempdir, err := os.MkdirTemp(TestTempDir, "restic-test-")
if err != nil {
t.Fatal(err)
}

View File

@ -4,7 +4,7 @@ package textfile
import (
"bytes"
"io/ioutil"
"os"
"golang.org/x/text/encoding/unicode"
)
@ -34,7 +34,7 @@ func Decode(data []byte) ([]byte, error) {
// Read returns the contents of the file, converted to UTF-8, stripped of any BOM.
func Read(filename string) ([]byte, error) {
data, err := ioutil.ReadFile(filename)
data, err := os.ReadFile(filename)
if err != nil {
return nil, err
}

View File

@ -3,7 +3,6 @@ package textfile
import (
"bytes"
"encoding/hex"
"io/ioutil"
"os"
"testing"
)
@ -13,7 +12,7 @@ import (
func writeTempfile(t testing.TB, data []byte) (string, func()) {
t.Helper()
f, err := ioutil.TempFile("", "restic-test-textfile-read-")
f, err := os.CreateTemp("", "restic-test-textfile-read-")
if err != nil {
t.Fatal(err)
}