Skip to content

Commit

Permalink
chore: setup testifylint linter
Browse files Browse the repository at this point in the history
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
  • Loading branch information
mmorel-35 committed Feb 19, 2025
1 parent 0f8947f commit b18d1a2
Show file tree
Hide file tree
Showing 13 changed files with 78 additions and 54 deletions.
23 changes: 23 additions & 0 deletions .golangci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
issues:
max-same-issues: 0
linters:
enable: # please keep this alphabetized
- gofmt
- goimports
- testifylint
linters-settings: # please keep this alphabetized
goimports:
local-prefixes: go.etcd.io # Put imports beginning with prefix after 3rd-party packages.
testifylint:
enable-all: true
formatter:
# Require f-assertions (e.g. assert.Equalf) if a message is passed to the assertion, even if
# there is no variable-length variables, i.e. require require.NoErrorf for both cases below:
# require.NoErrorf(t, err, "whatever message")
# require.NoErrorf(t, err, "whatever message: %v", v)
#
# Note from golang programming perspective, we still prefer non-f-functions (i.e. fmt.Print)
# to f-functions (i.e. fmt.Printf) when there is no variable-length parameters. It's accepted
# to always require f-functions for stretchr/testify, but not for golang standard lib.
# Also refer to https://github.com/etcd-io/etcd/pull/18741#issuecomment-2422395914
require-f-funcs: true
28 changes: 14 additions & 14 deletions bucket_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -997,13 +997,13 @@ func TestBucket_ForEach(t *testing.T) {
items = append(items, kv{k: k, v: v})
return nil
})
assert.NoErrorf(t, err, "b.ForEach failed")
assert.Equal(t, expectedItems, items, "what we iterated (ForEach) is not what we put")
require.NoErrorf(t, err, "b.ForEach failed")
assert.Equalf(t, expectedItems, items, "what we iterated (ForEach) is not what we put")
}

err := db.Update(func(tx *bolt.Tx) error {
b, err := tx.CreateBucket([]byte("widgets"))
require.NoError(t, err, "bucket creation failed")
require.NoErrorf(t, err, "bucket creation failed")

require.NoErrorf(t, b.Put([]byte("foo"), []byte("0000")), "put 'foo' failed")
require.NoErrorf(t, b.Put([]byte("baz"), []byte("0001")), "put 'baz' failed")
Expand All @@ -1018,7 +1018,7 @@ func TestBucket_ForEach(t *testing.T) {
require.NoErrorf(t, err, "db.Update failed")
err = db.View(func(tx *bolt.Tx) error {
b := tx.Bucket([]byte("widgets"))
require.NotNil(t, b, "bucket opening failed")
require.NotNilf(t, b, "bucket opening failed")
verifyReads(b)
return nil
})
Expand All @@ -1039,13 +1039,13 @@ func TestBucket_ForEachBucket(t *testing.T) {
items = append(items, k)
return nil
})
assert.NoErrorf(t, err, "b.ForEach failed")
assert.Equal(t, expectedItems, items, "what we iterated (ForEach) is not what we put")
require.NoErrorf(t, err, "b.ForEach failed")
assert.Equalf(t, expectedItems, items, "what we iterated (ForEach) is not what we put")
}

err := db.Update(func(tx *bolt.Tx) error {
b, err := tx.CreateBucket([]byte("widgets"))
require.NoError(t, err, "bucket creation failed")
require.NoErrorf(t, err, "bucket creation failed")

require.NoErrorf(t, b.Put([]byte("foo"), []byte("0000")), "put 'foo' failed")
_, err = b.CreateBucket([]byte("zsubbucket"))
Expand All @@ -1059,10 +1059,10 @@ func TestBucket_ForEachBucket(t *testing.T) {

return nil
})
assert.NoErrorf(t, err, "db.Update failed")
require.NoErrorf(t, err, "db.Update failed")
err = db.View(func(tx *bolt.Tx) error {
b := tx.Bucket([]byte("widgets"))
require.NotNil(t, b, "bucket opening failed")
require.NotNilf(t, b, "bucket opening failed")
verifyReads(b)
return nil
})
Expand All @@ -1078,13 +1078,13 @@ func TestBucket_ForEachBucket_NoBuckets(t *testing.T) {
items = append(items, k)
return nil
})
assert.NoErrorf(t, err, "b.ForEach failed")
require.NoErrorf(t, err, "b.ForEach failed")
assert.Emptyf(t, items, "what we iterated (ForEach) is not what we put")
}

err := db.Update(func(tx *bolt.Tx) error {
b, err := tx.CreateBucket([]byte("widgets"))
require.NoError(t, err, "bucket creation failed")
require.NoErrorf(t, err, "bucket creation failed")

require.NoErrorf(t, b.Put([]byte("foo"), []byte("0000")), "put 'foo' failed")
require.NoErrorf(t, err, "creation of subbucket failed")
Expand All @@ -1099,7 +1099,7 @@ func TestBucket_ForEachBucket_NoBuckets(t *testing.T) {

err = db.View(func(tx *bolt.Tx) error {
b := tx.Bucket([]byte("widgets"))
require.NotNil(t, b, "bucket opening failed")
require.NotNilf(t, b, "bucket opening failed")
verifyReads(b)
return nil
})
Expand Down Expand Up @@ -1326,7 +1326,7 @@ func TestBucket_Stats(t *testing.T) {
stats := tx.Bucket([]byte("woojits")).Stats()
t.Logf("Stats: %#v", stats)
if expected, ok := pageSize2stats[db.Info().PageSize]; ok {
assert.EqualValues(t, expected, stats, "stats differs from expectations")
assert.Equalf(t, expected, stats, "stats differs from expectations")
} else {
t.Skipf("No expectations for page size: %d", db.Info().PageSize)
}
Expand Down Expand Up @@ -1810,7 +1810,7 @@ func TestBucket_Stats_Large(t *testing.T) {
stats := tx.Bucket([]byte("widgets")).Stats()
t.Logf("Stats: %#v", stats)
if expected, ok := pageSize2stats[db.Info().PageSize]; ok {
assert.EqualValues(t, expected, stats, "stats differs from expectations")
assert.Equalf(t, expected, stats, "stats differs from expectations")
} else {
t.Skipf("No expectations for page size: %d", db.Info().PageSize)
}
Expand Down
1 change: 1 addition & 0 deletions concurrent_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -909,6 +909,7 @@ func TestConcurrentRepeatableRead(t *testing.T) {
_, eerr := executeWrite(tx, bucket, key, writeBytes, 0)
return eerr
})
//nolint:testifylint //FIXME
require.NoError(t, err)
}
}()
Expand Down
6 changes: 3 additions & 3 deletions db_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -660,10 +660,10 @@ func TestDB_BeginRW(t *testing.T) {

tx, err := db.Begin(true)
require.NoError(t, err)
require.NotNil(t, tx, "expected tx")
require.NotNilf(t, tx, "expected tx")
defer func() { require.NoError(t, tx.Commit()) }()

require.True(t, tx.Writable(), "expected writable tx")
require.Truef(t, tx.Writable(), "expected writable tx")
require.Same(t, db.DB, tx.DB())
}

Expand Down Expand Up @@ -754,7 +754,7 @@ func TestDB_Concurrent_WriteTo_and_ConsistentRead(t *testing.T) {
for i := 1; i < len(dataSlice); i++ {
datai := dataSlice[i]
same := reflect.DeepEqual(data0, datai)
require.True(t, same, fmt.Sprintf("found inconsistent data in round %d, data[0]: %v, data[%d] : %v", round, data0, i, datai))
require.Truef(t, same, "found inconsistent data in round %d, data[0]: %v, data[%d] : %v", round, data0, i, datai)
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion internal/freelist/freelist_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -382,7 +382,7 @@ func TestFreelist_E2E_HappyPath(t *testing.T) {
expectedPgids := map[common.Pgid]struct{}{3: {}, 5: {}, 8: {}}
for i := 0; i < 3; i++ {
allocated = f.Allocate(common.Txid(4), 1)
require.Contains(t, expectedPgids, allocated, "expected to find pgid %d", allocated)
require.Containsf(t, expectedPgids, allocated, "expected to find pgid %d", allocated)
require.False(t, f.Freed(allocated))
delete(expectedPgids, allocated)
}
Expand Down
3 changes: 2 additions & 1 deletion internal/surgeon/surgeon_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"testing"

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

bolt "go.etcd.io/bbolt"
"go.etcd.io/bbolt/internal/btesting"
Expand Down Expand Up @@ -41,7 +42,7 @@ func TestRevertMetaPage(t *testing.T) {
db.Close()

// This causes the whole tree to be linked to the previous state
assert.NoError(t, surgeon.RevertMetaPage(db.Path()))
require.NoError(t, surgeon.RevertMetaPage(db.Path()))

db.MustReopen()
db.MustCheck()
Expand Down
8 changes: 4 additions & 4 deletions internal/surgeon/xray_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,12 @@ func TestFindPathsToKey(t *testing.T) {

navigator := surgeon.NewXRay(db.Path())
path1, err := navigator.FindPathsToKey([]byte("0451"))
assert.NoError(t, err)
require.NoError(t, err)
assert.NotEmpty(t, path1)

page := path1[0][len(path1[0])-1]
p, _, err := guts_cli.ReadPage(db.Path(), uint64(page))
assert.NoError(t, err)
require.NoError(t, err)
assert.GreaterOrEqual(t, []byte("0451"), p.LeafPageElement(0).Key())
assert.LessOrEqual(t, []byte("0451"), p.LeafPageElement(p.Count()-1).Key())
}
Expand All @@ -55,12 +55,12 @@ func TestFindPathsToKey_Bucket(t *testing.T) {

navigator := surgeon.NewXRay(db.Path())
path1, err := navigator.FindPathsToKey(subBucket)
assert.NoError(t, err)
require.NoError(t, err)
assert.NotEmpty(t, path1)

page := path1[0][len(path1[0])-1]
p, _, err := guts_cli.ReadPage(db.Path(), uint64(page))
assert.NoError(t, err)
require.NoError(t, err)
assert.GreaterOrEqual(t, subBucket, p.LeafPageElement(0).Key())
assert.LessOrEqual(t, subBucket, p.LeafPageElement(p.Count()-1).Key())
}
14 changes: 7 additions & 7 deletions internal/tests/tx_check_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,12 @@ func TestTx_RecursivelyCheckPages_MisplacedPage(t *testing.T) {
xRay := surgeon.NewXRay(db.Path())

path1, err := xRay.FindPathsToKey([]byte("0451"))
require.NoError(t, err, "cannot find page that contains key:'0451'")
require.Len(t, path1, 1, "Expected only one page that contains key:'0451'")
require.NoErrorf(t, err, "cannot find page that contains key:'0451'")
require.Lenf(t, path1, 1, "Expected only one page that contains key:'0451'")

path2, err := xRay.FindPathsToKey([]byte("7563"))
require.NoError(t, err, "cannot find page that contains key:'7563'")
require.Len(t, path2, 1, "Expected only one page that contains key:'7563'")
require.NoErrorf(t, err, "cannot find page that contains key:'7563'")
require.Lenf(t, path2, 1, "Expected only one page that contains key:'7563'")

srcPage := path1[0][len(path1[0])-1]
targetPage := path2[0][len(path2[0])-1]
Expand Down Expand Up @@ -64,13 +64,13 @@ func TestTx_RecursivelyCheckPages_CorruptedLeaf(t *testing.T) {
xray := surgeon.NewXRay(db.Path())

path1, err := xray.FindPathsToKey([]byte("0451"))
require.NoError(t, err, "cannot find page that contains key:'0451'")
require.Len(t, path1, 1, "Expected only one page that contains key:'0451'")
require.NoErrorf(t, err, "cannot find page that contains key:'0451'")
require.Lenf(t, path1, 1, "Expected only one page that contains key:'0451'")

srcPage := path1[0][len(path1[0])-1]
p, pbuf, err := guts_cli.ReadPage(db.Path(), uint64(srcPage))
require.NoError(t, err)
require.Positive(t, p.Count(), "page must be not empty")
require.Positivef(t, p.Count(), "page must be not empty")
p.LeafPageElement(p.Count() / 2).Key()[0] = 'z'
require.NoError(t, guts_cli.WritePage(db.Path(), pbuf))

Expand Down
4 changes: 2 additions & 2 deletions movebucket_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -364,13 +364,13 @@ func openBucket(tx *bbolt.Tx, bk *bbolt.Bucket, bucketToOpen string) *bbolt.Buck
func createBucketAndPopulateData(t testing.TB, tx *bbolt.Tx, bk *bbolt.Bucket, bucketName string) *bbolt.Bucket {
if bk == nil {
newBucket, err := tx.CreateBucket([]byte(bucketName))
require.NoError(t, err, "failed to create bucket %s", bucketName)
require.NoErrorf(t, err, "failed to create bucket %s", bucketName)
populateSampleDataInBucket(t, newBucket, rand.Intn(4096))
return newBucket
}

newBucket, err := bk.CreateBucket([]byte(bucketName))
require.NoError(t, err, "failed to create bucket %s", bucketName)
require.NoErrorf(t, err, "failed to create bucket %s", bucketName)
populateSampleDataInBucket(t, newBucket, rand.Intn(4096))
return newBucket
}
Expand Down
15 changes: 7 additions & 8 deletions tests/dmflakey/dmflakey_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
package dmflakey

import (
"errors"
"flag"
"fmt"
"os"
Expand Down Expand Up @@ -31,7 +30,7 @@ func TestBasic(t *testing.T) {
tmpDir := t.TempDir()

flakey, err := InitFlakey("go-dmflakey", tmpDir, fsType, "")
require.NoError(t, err, "init flakey")
require.NoErrorf(t, err, "init flakey")
defer func() {
assert.NoError(t, flakey.Teardown())
}()
Expand Down Expand Up @@ -79,11 +78,11 @@ func TestDropWritesExt4(t *testing.T) {
require.NoError(t, mount(root, flakey.DevicePath(), ""))

data, err := os.ReadFile(f1)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "hello, world from f1", string(data))

_, err = os.ReadFile(f2)
assert.True(t, errors.Is(err, os.ErrNotExist))
assert.ErrorIs(t, err, os.ErrNotExist)
}

func TestErrorWritesExt4(t *testing.T) {
Expand All @@ -97,18 +96,18 @@ func TestErrorWritesExt4(t *testing.T) {

f1 := filepath.Join(root, "f1")
err := writeFile(f1, []byte("hello, world during failpoint"), 0600, true)
assert.ErrorContains(t, err, "input/output error")
require.ErrorContains(t, err, "input/output error")

// resume
assert.NoError(t, flakey.AllowWrites())
require.NoError(t, flakey.AllowWrites())
err = writeFile(f1, []byte("hello, world"), 0600, true)
assert.NoError(t, err)

assert.NoError(t, unmount(root))
require.NoError(t, mount(root, flakey.DevicePath(), ""))

data, err := os.ReadFile(f1)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "hello, world", string(data))
}

Expand All @@ -119,7 +118,7 @@ func initFlakey(t *testing.T, fsType FSType) (_ Flakey, root string) {
require.NoError(t, os.MkdirAll(target, 0600))

flakey, err := InitFlakey("go-dmflakey", tmpDir, fsType, "")
require.NoError(t, err, "init flakey")
require.NoErrorf(t, err, "init flakey")

t.Cleanup(func() {
assert.NoError(t, unmount(target))
Expand Down
2 changes: 1 addition & 1 deletion tests/failpoint/db_failpoint_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,7 @@ func TestTx_Rollback_Freelist(t *testing.T) {

beforeFreelistPgids, err := readFreelistPageIds(db.Path())
require.NoError(t, err)
require.Greater(t, len(beforeFreelistPgids), 0)
require.NotEmpty(t, beforeFreelistPgids)

t.Log("Simulate TXN rollback")
err = db.Update(func(tx *bolt.Tx) error {
Expand Down
Loading

0 comments on commit b18d1a2

Please sign in to comment.