mirror of
https://github.com/restic/restic.git
synced 2026-08-29 08:47:31 +00:00
Merge pull request #5405 from restic/dependabot/github_actions/golangci/golangci-lint-action-8
build(deps): bump golangci/golangci-lint-action from 6 to 8
This commit is contained in:
@@ -45,10 +45,7 @@ func readPEMCertKey(filename string) (certs []byte, key []byte, err error) {
|
||||
}
|
||||
|
||||
var block *pem.Block
|
||||
for {
|
||||
if len(data) == 0 {
|
||||
break
|
||||
}
|
||||
for len(data) > 0 {
|
||||
block, data = pem.Decode(data)
|
||||
if block == nil {
|
||||
break
|
||||
|
||||
@@ -118,7 +118,7 @@ func TestRoundTripperReader(t *testing.T) {
|
||||
test.Assert(t, bytes.Equal(data, out.Bytes()), "data ping-pong failed")
|
||||
}
|
||||
|
||||
// nolint:bodyclose // the http response is just a mock
|
||||
//nolint:bodyclose // the http response is just a mock
|
||||
func TestRoundTripperCornerCases(t *testing.T) {
|
||||
limiter := NewStaticLimiter(Limits{42 * 1024, 42 * 1024})
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ func isPath(s string) bool {
|
||||
|
||||
// check for drive paths
|
||||
drive := s[0]
|
||||
//nolint:staticcheck // de morgan's law makes this harder to read
|
||||
if !(drive >= 'a' && drive <= 'z') && !(drive >= 'A' && drive <= 'Z') {
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -79,8 +79,8 @@ func TestListAPI(t *testing.T) {
|
||||
t.Logf("req %v %v, accept: %v", req.Method, req.URL.Path, req.Header["Accept"])
|
||||
|
||||
var err error
|
||||
switch {
|
||||
case req.Method == "GET":
|
||||
switch req.Method {
|
||||
case "GET":
|
||||
// list files in data/
|
||||
res.Header().Set("Content-Type", test.ContentType)
|
||||
_, err = res.Write([]byte(test.Data))
|
||||
@@ -89,7 +89,7 @@ func TestListAPI(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
return
|
||||
case req.Method == "HEAD":
|
||||
case "HEAD":
|
||||
// stat file in data/, use the first two bytes in the name
|
||||
// of the file as the size :)
|
||||
filename := req.URL.Path[6:]
|
||||
|
||||
@@ -176,7 +176,6 @@ func (r *SFTP) mkdirAllDataSubdirs(ctx context.Context, nconn uint) error {
|
||||
g.SetLimit(int(nconn))
|
||||
|
||||
for _, d := range r.Paths() {
|
||||
d := d
|
||||
g.Go(func() error {
|
||||
// First try Mkdir. For most directories in Paths, this takes one
|
||||
// round trip, not counting duplicate parent creations causes by
|
||||
|
||||
@@ -669,7 +669,6 @@ func benchmarkSnapshotScaling(t *testing.B, newSnapshots int) {
|
||||
func BenchmarkCheckerSnapshotScaling(b *testing.B) {
|
||||
counts := []int{50, 100, 200}
|
||||
for _, count := range counts {
|
||||
count := count
|
||||
b.Run(strconv.Itoa(count), func(b *testing.B) {
|
||||
benchmarkSnapshotScaling(b, count)
|
||||
})
|
||||
|
||||
@@ -64,10 +64,11 @@ func parseFilter(envname string, pad func(string) string) map[string]bool {
|
||||
for _, fn := range strings.Split(env, ",") {
|
||||
t := pad(strings.TrimSpace(fn))
|
||||
val := true
|
||||
if t[0] == '-' {
|
||||
switch t[0] {
|
||||
case '-':
|
||||
val = false
|
||||
t = t[1:]
|
||||
} else if t[0] == '+' {
|
||||
case '+':
|
||||
val = true
|
||||
t = t[1:]
|
||||
}
|
||||
|
||||
@@ -116,13 +116,13 @@ func TestMatch(t *testing.T) {
|
||||
|
||||
// Test with native path separator
|
||||
if filepath.Separator != '/' {
|
||||
pattern := strings.Replace(test.pattern, "/", string(filepath.Separator), -1)
|
||||
pattern := strings.ReplaceAll(test.pattern, "/", string(filepath.Separator))
|
||||
// Test with pattern as native
|
||||
t.Run("pattern-native", func(t *testing.T) {
|
||||
testpattern(t, pattern, test.path, test.match)
|
||||
})
|
||||
|
||||
path := strings.Replace(test.path, "/", string(filepath.Separator), -1)
|
||||
path := strings.ReplaceAll(test.path, "/", string(filepath.Separator))
|
||||
t.Run("path-native", func(t *testing.T) {
|
||||
// Test with path as native
|
||||
testpattern(t, test.pattern, path, test.match)
|
||||
@@ -206,13 +206,13 @@ func TestChildMatch(t *testing.T) {
|
||||
|
||||
// Test with native path separator
|
||||
if filepath.Separator != '/' {
|
||||
pattern := strings.Replace(test.pattern, "/", string(filepath.Separator), -1)
|
||||
pattern := strings.ReplaceAll(test.pattern, "/", string(filepath.Separator))
|
||||
// Test with pattern as native
|
||||
t.Run("pattern-native", func(t *testing.T) {
|
||||
testchildpattern(t, pattern, test.path, test.match)
|
||||
})
|
||||
|
||||
path := strings.Replace(test.path, "/", string(filepath.Separator), -1)
|
||||
path := strings.ReplaceAll(test.path, "/", string(filepath.Separator))
|
||||
t.Run("path-native", func(t *testing.T) {
|
||||
// Test with path as native
|
||||
testchildpattern(t, test.pattern, path, test.match)
|
||||
|
||||
@@ -253,11 +253,7 @@ func TestFSReaderDir(t *testing.T) {
|
||||
})
|
||||
test.OK(t, err)
|
||||
dir := path.Dir(tst.filename)
|
||||
for {
|
||||
if dir == "/" || dir == "." {
|
||||
break
|
||||
}
|
||||
|
||||
for dir != "/" && dir != "." {
|
||||
fi, err := fs.Lstat(dir)
|
||||
test.OK(t, err)
|
||||
|
||||
|
||||
@@ -13,7 +13,6 @@ import (
|
||||
"github.com/google/go-cmp/cmp"
|
||||
"github.com/restic/restic/internal/errors"
|
||||
"github.com/restic/restic/internal/restic"
|
||||
"github.com/restic/restic/internal/test"
|
||||
rtest "github.com/restic/restic/internal/test"
|
||||
)
|
||||
|
||||
@@ -296,5 +295,5 @@ func TestNodeRestoreMetadataError(t *testing.T) {
|
||||
// This will fail because the target file does not exist
|
||||
err := NodeRestoreMetadata(node, nodePath, func(msg string) { rtest.OK(t, fmt.Errorf("Warning triggered for path: %s: %s", nodePath, msg)) },
|
||||
func(_ string) bool { return true })
|
||||
test.Assert(t, errors.Is(err, os.ErrNotExist), "failed for an unexpected reason")
|
||||
rtest.Assert(t, errors.Is(err, os.ErrNotExist), "failed for an unexpected reason")
|
||||
}
|
||||
|
||||
+1
-1
@@ -25,7 +25,7 @@ type ExtendedFileInfo struct {
|
||||
ModTime time.Time // last (content) modification time stamp
|
||||
ChangeTime time.Time // last status change time stamp
|
||||
|
||||
// nolint:unused // only used on Windows
|
||||
//nolint:unused // only used on Windows
|
||||
sys any // Value returned by os.FileInfo.Sys()
|
||||
}
|
||||
|
||||
|
||||
@@ -297,11 +297,12 @@ func TestIndexUnserialize(t *testing.T) {
|
||||
rtest.Equals(t, test.tpe, blob.Type)
|
||||
rtest.Equals(t, test.offset, blob.Offset)
|
||||
rtest.Equals(t, test.length, blob.Length)
|
||||
if task.version == 1 {
|
||||
switch task.version {
|
||||
case 1:
|
||||
rtest.Equals(t, uint(0), blob.UncompressedLength)
|
||||
} else if task.version == 2 {
|
||||
case 2:
|
||||
rtest.Equals(t, test.uncompressedLength, blob.UncompressedLength)
|
||||
} else {
|
||||
default:
|
||||
t.Fatal("Invalid index version")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,7 +87,7 @@ func (p *Packer) Finalize() error {
|
||||
encryptedHeader = binary.LittleEndian.AppendUint32(encryptedHeader, uint32(len(encryptedHeader)))
|
||||
|
||||
if err := verifyHeader(p.k, encryptedHeader, p.blobs); err != nil {
|
||||
//nolint:revive // ignore linter warnings about error message spelling
|
||||
//nolint:revive,staticcheck // ignore linter warnings about error message spelling
|
||||
return fmt.Errorf("Detected data corruption while writing pack-file header: %w\nCorrupted data is either caused by hardware issues or software bugs. Please open an issue at https://github.com/restic/restic/issues/new/choose for further troubleshooting.", err)
|
||||
}
|
||||
|
||||
|
||||
@@ -395,7 +395,7 @@ func (r *Repository) saveAndEncrypt(ctx context.Context, t restic.BlobType, data
|
||||
ciphertext = r.key.Seal(ciphertext, nonce, data, nil)
|
||||
|
||||
if err := r.verifyCiphertext(ciphertext, uncompressedLength, id); err != nil {
|
||||
//nolint:revive // ignore linter warnings about error message spelling
|
||||
//nolint:revive,staticcheck // ignore linter warnings about error message spelling
|
||||
return 0, fmt.Errorf("Detected data corruption while saving blob %v: %w\nCorrupted blobs are either caused by hardware issues or software bugs. Please open an issue at https://github.com/restic/restic/issues/new/choose for further troubleshooting.", id, err)
|
||||
}
|
||||
|
||||
@@ -500,7 +500,7 @@ func (r *Repository) saveUnpacked(ctx context.Context, t restic.FileType, buf []
|
||||
ciphertext = r.key.Seal(ciphertext, nonce, p, nil)
|
||||
|
||||
if err := r.verifyUnpacked(ciphertext, t, buf); err != nil {
|
||||
//nolint:revive // ignore linter warnings about error message spelling
|
||||
//nolint:revive,staticcheck // ignore linter warnings about error message spelling
|
||||
return restic.ID{}, fmt.Errorf("Detected data corruption while saving file of type %v: %w\nCorrupted data is either caused by hardware issues or software bugs. Please open an issue at https://github.com/restic/restic/issues/new/choose for further troubleshooting.", t, err)
|
||||
}
|
||||
|
||||
|
||||
@@ -413,7 +413,6 @@ func handleUnknownGenericAttributeFound(genericAttributeType GenericAttributeTyp
|
||||
|
||||
// HandleAllUnknownGenericAttributesFound performs validations for all generic attributes of a node.
|
||||
// This is not used on windows currently because windows has handling for generic attributes.
|
||||
// nolint:unused
|
||||
func HandleAllUnknownGenericAttributesFound(attributes map[GenericAttributeType]json.RawMessage, warn func(msg string)) error {
|
||||
for name := range attributes {
|
||||
handleUnknownGenericAttributeFound(name, warn)
|
||||
|
||||
@@ -593,10 +593,11 @@ func shouldOverwrite(overwrite OverwriteBehavior, node *restic.Node, destination
|
||||
return false, err
|
||||
}
|
||||
|
||||
if overwrite == OverwriteIfNewer {
|
||||
switch overwrite {
|
||||
case OverwriteIfNewer:
|
||||
// return if node is newer
|
||||
return node.ModTime.After(fi.ModTime()), nil
|
||||
} else if overwrite == OverwriteNever {
|
||||
case OverwriteNever:
|
||||
// file exists
|
||||
return false, nil
|
||||
}
|
||||
|
||||
@@ -64,7 +64,7 @@ func TestBucketWidth(t *testing.T) {
|
||||
|
||||
b := e.buckets.Back().Value.(*rateBucket)
|
||||
rtest.Assert(t, b.totalBytes == 2, "b.totalBytes is %d, want 2", b.totalBytes)
|
||||
rtest.Assert(t, b.end == when.Add(bucketWidth), "b.end is %v, want %v", b.end, when.Add(bucketWidth))
|
||||
rtest.Assert(t, b.end.Equal(when.Add(bucketWidth)), "b.end is %v, want %v", b.end, when.Add(bucketWidth))
|
||||
|
||||
// Recording a byte outside the bucket width causes another bucket.
|
||||
e.recordBytes(when.Add(bucketWidth), 1)
|
||||
@@ -72,7 +72,7 @@ func TestBucketWidth(t *testing.T) {
|
||||
|
||||
b = e.buckets.Back().Value.(*rateBucket)
|
||||
rtest.Assert(t, b.totalBytes == 1, "b.totalBytes is %d, want 1", b.totalBytes)
|
||||
rtest.Assert(t, b.end == when.Add(2*bucketWidth), "b.end is %v, want %v", b.end, when.Add(bucketWidth))
|
||||
rtest.Assert(t, b.end.Equal(when.Add(2*bucketWidth)), "b.end is %v, want %v", b.end, when.Add(bucketWidth))
|
||||
|
||||
// Recording a byte after a longer delay creates a sparse bucket list.
|
||||
e.recordBytes(when.Add(time.Hour+time.Millisecond), 7)
|
||||
|
||||
@@ -8,7 +8,7 @@ import (
|
||||
// GetProgressChannel returns a channel with which a single listener
|
||||
// receives each incoming signal.
|
||||
func GetProgressChannel() <-chan os.Signal {
|
||||
signals.Once.Do(func() {
|
||||
signals.once.Do(func() {
|
||||
signals.ch = make(chan os.Signal, 1)
|
||||
setupSignals()
|
||||
})
|
||||
@@ -19,6 +19,6 @@ func GetProgressChannel() <-chan os.Signal {
|
||||
// XXX The fact that signals is a single global variable means that only one
|
||||
// listener receives each incoming signal.
|
||||
var signals struct {
|
||||
ch chan os.Signal
|
||||
sync.Once
|
||||
ch chan os.Signal
|
||||
once sync.Once
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user