Skip to content

Commit ec147ab

Browse files
authored
Ban usage of nil in require functions (ava-labs#1498)
1 parent 0eb61fb commit ec147ab

File tree

8 files changed

+52
-27
lines changed

8 files changed

+52
-27
lines changed

api/keystore/service_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ func TestServiceExportImport(t *testing.T) {
251251
User: exportReply.User,
252252
Encoding: encoding,
253253
}, &api.EmptyReply{})
254-
require.ErrorIs(err, nil)
254+
require.NoError(err)
255255
}
256256

257257
{

database/test_database.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -921,7 +921,8 @@ func TestCompactNoPanic(t *testing.T, db Database) {
921921

922922
require.NoError(db.Compact(nil, nil))
923923
require.NoError(db.Close())
924-
require.Equal(ErrClosed, db.Compact(nil, nil))
924+
err := db.Compact(nil, nil)
925+
require.ErrorIs(err, ErrClosed)
925926
}
926927

927928
// TestClear tests to make sure the deletion helper works as expected.

scripts/lint.sh

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ fi
2121
# by default, "./scripts/lint.sh" runs all lint tests
2222
# to run only "license_header" test
2323
# TESTS='license_header' ./scripts/lint.sh
24-
TESTS=${TESTS:-"golangci_lint license_header require_error_is_no_funcs_as_params single_import interface_compliance_nil require_equal_zero require_len_zero require_equal_len"}
24+
TESTS=${TESTS:-"golangci_lint license_header require_error_is_no_funcs_as_params single_import interface_compliance_nil require_equal_zero require_len_zero require_equal_len require_nil"}
2525

2626
function test_golangci_lint {
2727
go install -v github.com/golangci/golangci-lint/cmd/golangci-lint@v1.51.2
@@ -102,6 +102,29 @@ function test_require_equal_len {
102102
fi
103103
}
104104

105+
function test_require_nil {
106+
if grep -R -o -P 'require\..+?!= nil' .; then
107+
echo ""
108+
echo "Use require.NotNil when testing for nil inequality."
109+
echo ""
110+
return 1
111+
fi
112+
113+
if grep -R -o -P 'require\..+?== nil' .; then
114+
echo ""
115+
echo "Use require.Nil when testing for nil equality."
116+
echo ""
117+
return 1
118+
fi
119+
120+
if grep -R -o -P 'require\.ErrorIs.+?nil\)' .; then
121+
echo ""
122+
echo "Use require.NoError instead of require.ErrorIs when testing for nil error."
123+
echo ""
124+
return 1
125+
fi
126+
}
127+
105128
# Ref: https://go.dev/doc/effective_go#blank_implements
106129
function test_interface_compliance_nil {
107130
if grep -R -o -P '_ .+? = &.+?\{\}' .; then

snow/engine/snowman/syncer/utils_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ func buildTestsObjects(t *testing.T, commonCfg *common.Config) (
9191
})
9292
require.IsType(t, &stateSyncer{}, commonSyncer)
9393
syncer := commonSyncer.(*stateSyncer)
94-
require.True(t, syncer.stateSyncVM != nil)
94+
require.NotNil(t, syncer.stateSyncVM)
9595

9696
fullVM.GetOngoingSyncStateSummaryF = func(context.Context) (block.StateSummary, error) {
9797
return nil, database.ErrNotFound

vms/avm/txs/mempool/mempool_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ func TestTxsInMempool(t *testing.T) {
8383
require.True(mempool.Has(txID))
8484

8585
retrieved := mempool.Get(txID)
86-
require.True(retrieved != nil)
86+
require.NotNil(retrieved)
8787
require.Equal(tx, retrieved)
8888

8989
// tx exists in mempool

vms/platformvm/blocks/builder/network_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ func TestMempoolValidGossipedTxIsAddedToMempool(t *testing.T) {
6767
env.ctx.Lock.Lock()
6868

6969
// and gossiped if it has just been discovered
70-
require.True(gossipedBytes != nil)
70+
require.NotNil(gossipedBytes)
7171

7272
// show gossiped bytes can be decoded to the original tx
7373
replyIntf, err := message.Parse(gossipedBytes)
@@ -129,7 +129,7 @@ func TestMempoolNewLocaTxIsGossiped(t *testing.T) {
129129

130130
err := env.Builder.AddUnverifiedTx(tx)
131131
require.NoError(err)
132-
require.True(gossipedBytes != nil)
132+
require.NotNil(gossipedBytes)
133133

134134
// show gossiped bytes can be decoded to the original tx
135135
replyIntf, err := message.Parse(gossipedBytes)

vms/platformvm/txs/executor/create_subnet_test.go

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -14,34 +14,35 @@ import (
1414
"github.com/ava-labs/avalanchego/vms/components/avax"
1515
"github.com/ava-labs/avalanchego/vms/platformvm/state"
1616
"github.com/ava-labs/avalanchego/vms/platformvm/txs"
17+
"github.com/ava-labs/avalanchego/vms/platformvm/utxo"
1718
"github.com/ava-labs/avalanchego/vms/secp256k1fx"
1819
)
1920

2021
func TestCreateSubnetTxAP3FeeChange(t *testing.T) {
2122
ap3Time := defaultGenesisTime.Add(time.Hour)
2223
tests := []struct {
23-
name string
24-
time time.Time
25-
fee uint64
26-
expectsError bool
24+
name string
25+
time time.Time
26+
fee uint64
27+
expectedErr error
2728
}{
2829
{
29-
name: "pre-fork - correctly priced",
30-
time: defaultGenesisTime,
31-
fee: 0,
32-
expectsError: false,
30+
name: "pre-fork - correctly priced",
31+
time: defaultGenesisTime,
32+
fee: 0,
33+
expectedErr: nil,
3334
},
3435
{
35-
name: "post-fork - incorrectly priced",
36-
time: ap3Time,
37-
fee: 100*defaultTxFee - 1*units.NanoAvax,
38-
expectsError: true,
36+
name: "post-fork - incorrectly priced",
37+
time: ap3Time,
38+
fee: 100*defaultTxFee - 1*units.NanoAvax,
39+
expectedErr: utxo.ErrInsufficientUnlockedFunds,
3940
},
4041
{
41-
name: "post-fork - correctly priced",
42-
time: ap3Time,
43-
fee: 100 * defaultTxFee,
44-
expectsError: false,
42+
name: "post-fork - correctly priced",
43+
time: ap3Time,
44+
fee: 100 * defaultTxFee,
45+
expectedErr: nil,
4546
},
4647
}
4748
for _, test := range tests {
@@ -82,7 +83,7 @@ func TestCreateSubnetTxAP3FeeChange(t *testing.T) {
8283
Tx: tx,
8384
}
8485
err = tx.Unsigned.Visit(&executor)
85-
require.Equal(test.expectsError, err != nil)
86+
require.ErrorIs(err, test.expectedErr)
8687
})
8788
}
8889
}

vms/platformvm/txs/mempool/mempool_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ func TestDecisionTxsInMempool(t *testing.T) {
7979
require.True(mpool.Has(tx.ID()))
8080

8181
retrieved := mpool.Get(tx.ID())
82-
require.True(retrieved != nil)
82+
require.NotNil(retrieved)
8383
require.Equal(tx, retrieved)
8484

8585
// we can peek it
@@ -134,13 +134,13 @@ func TestProposalTxsInMempool(t *testing.T) {
134134
require.True(mpool.Has(tx.ID()))
135135

136136
retrieved := mpool.Get(tx.ID())
137-
require.True(retrieved != nil)
137+
require.NotNil(retrieved)
138138
require.Equal(tx, retrieved)
139139

140140
{
141141
// we can peek it
142142
peeked := mpool.PeekStakerTx()
143-
require.True(peeked != nil)
143+
require.NotNil(peeked)
144144
require.Equal(tx, peeked)
145145
}
146146

0 commit comments

Comments
 (0)