linter: (1/2) enable errcheck (#5064)

## Description

partially cleanup in preparation for errcheck

i ignored a bunch of defer errors in tests but with the update to go 1.14 we can use `t.Cleanup(func() { if err := <>; err != nil {..}}` to cover those errors, I will do this in pr number two of enabling errcheck.

ref #5059
This commit is contained in:
Marko
2020-07-01 15:13:11 +00:00
committed by GitHub
parent 8ec8385427
commit 7e2cc1db5e
35 changed files with 289 additions and 200 deletions
+2 -2
View File
@@ -291,7 +291,7 @@ func (c *MConnection) FlushStop() {
// Now we can close the connection
}
c.conn.Close() // nolint: errcheck
c.conn.Close()
// We can't close pong safely here because
// recvRoutine may write to it after we've stopped.
@@ -307,7 +307,7 @@ func (c *MConnection) OnStop() {
return
}
c.conn.Close() // nolint: errcheck
c.conn.Close()
// We can't close pong safely here because
// recvRoutine may write to it after we've stopped.
+27 -27
View File
@@ -43,13 +43,13 @@ func createMConnectionWithCallbacks(
func TestMConnectionSendFlushStop(t *testing.T) {
server, client := NetPipe()
defer server.Close() // nolint: errcheck
defer client.Close() // nolint: errcheck
defer server.Close()
defer client.Close()
clientConn := createTestMConnection(client)
err := clientConn.Start()
require.Nil(t, err)
defer clientConn.Stop()
defer clientConn.Stop() // nolint:errcheck // ignore for tests
msg := []byte("abc")
assert.True(t, clientConn.Send(0x01, msg))
@@ -81,13 +81,13 @@ func TestMConnectionSendFlushStop(t *testing.T) {
func TestMConnectionSend(t *testing.T) {
server, client := NetPipe()
defer server.Close() // nolint: errcheck
defer client.Close() // nolint: errcheck
defer server.Close()
defer client.Close()
mconn := createTestMConnection(client)
err := mconn.Start()
require.Nil(t, err)
defer mconn.Stop()
defer mconn.Stop() // nolint:errcheck // ignore for tests
msg := []byte("Ant-Man")
assert.True(t, mconn.Send(0x01, msg))
@@ -112,8 +112,8 @@ func TestMConnectionSend(t *testing.T) {
func TestMConnectionReceive(t *testing.T) {
server, client := NetPipe()
defer server.Close() // nolint: errcheck
defer client.Close() // nolint: errcheck
defer server.Close()
defer client.Close()
receivedCh := make(chan []byte)
errorsCh := make(chan interface{})
@@ -126,12 +126,12 @@ func TestMConnectionReceive(t *testing.T) {
mconn1 := createMConnectionWithCallbacks(client, onReceive, onError)
err := mconn1.Start()
require.Nil(t, err)
defer mconn1.Stop()
defer mconn1.Stop() // nolint:errcheck // ignore for tests
mconn2 := createTestMConnection(server)
err = mconn2.Start()
require.Nil(t, err)
defer mconn2.Stop()
defer mconn2.Stop() // nolint:errcheck // ignore for tests
msg := []byte("Cyclops")
assert.True(t, mconn2.Send(0x01, msg))
@@ -148,13 +148,13 @@ func TestMConnectionReceive(t *testing.T) {
func TestMConnectionStatus(t *testing.T) {
server, client := NetPipe()
defer server.Close() // nolint: errcheck
defer client.Close() // nolint: errcheck
defer server.Close()
defer client.Close()
mconn := createTestMConnection(client)
err := mconn.Start()
require.Nil(t, err)
defer mconn.Stop()
defer mconn.Stop() // nolint:errcheck // ignore for tests
status := mconn.Status()
assert.NotNil(t, status)
@@ -177,7 +177,7 @@ func TestMConnectionPongTimeoutResultsInError(t *testing.T) {
mconn := createMConnectionWithCallbacks(client, onReceive, onError)
err := mconn.Start()
require.Nil(t, err)
defer mconn.Stop()
defer mconn.Stop() // nolint:errcheck // ignore for tests
serverGotPing := make(chan struct{})
go func() {
@@ -216,7 +216,7 @@ func TestMConnectionMultiplePongsInTheBeginning(t *testing.T) {
mconn := createMConnectionWithCallbacks(client, onReceive, onError)
err := mconn.Start()
require.Nil(t, err)
defer mconn.Stop()
defer mconn.Stop() // nolint:errcheck // ignore for tests
// sending 3 pongs in a row (abuse)
protoWriter := protoio.NewDelimitedWriter(server)
@@ -271,7 +271,7 @@ func TestMConnectionMultiplePings(t *testing.T) {
mconn := createMConnectionWithCallbacks(client, onReceive, onError)
err := mconn.Start()
require.Nil(t, err)
defer mconn.Stop()
defer mconn.Stop() // nolint:errcheck // ignore for tests
// sending 3 pings in a row (abuse)
// see https://github.com/tendermint/tendermint/issues/1190
@@ -320,7 +320,7 @@ func TestMConnectionPingPongs(t *testing.T) {
mconn := createMConnectionWithCallbacks(client, onReceive, onError)
err := mconn.Start()
require.Nil(t, err)
defer mconn.Stop()
defer mconn.Stop() // nolint:errcheck // ignore for tests
serverGotPing := make(chan struct{})
go func() {
@@ -364,8 +364,8 @@ func TestMConnectionPingPongs(t *testing.T) {
func TestMConnectionStopsAndReturnsError(t *testing.T) {
server, client := NetPipe()
defer server.Close() // nolint: errcheck
defer client.Close() // nolint: errcheck
defer server.Close()
defer client.Close()
receivedCh := make(chan []byte)
errorsCh := make(chan interface{})
@@ -378,7 +378,7 @@ func TestMConnectionStopsAndReturnsError(t *testing.T) {
mconn := createMConnectionWithCallbacks(client, onReceive, onError)
err := mconn.Start()
require.Nil(t, err)
defer mconn.Stop()
defer mconn.Stop() // nolint:errcheck // ignore for tests
if err := client.Close(); err != nil {
t.Error(err)
@@ -437,8 +437,8 @@ func expectSend(ch chan struct{}) bool {
func TestMConnectionReadErrorBadEncoding(t *testing.T) {
chOnErr := make(chan struct{})
mconnClient, mconnServer := newClientAndServerConnsForReadErrors(t, chOnErr)
defer mconnClient.Stop()
defer mconnServer.Stop()
defer mconnClient.Stop() // nolint:errcheck // ignore for tests
defer mconnServer.Stop() // nolint:errcheck // ignore for tests
client := mconnClient.conn
@@ -470,8 +470,8 @@ func TestMConnectionReadErrorLongMessage(t *testing.T) {
chOnRcv := make(chan struct{})
mconnClient, mconnServer := newClientAndServerConnsForReadErrors(t, chOnErr)
defer mconnClient.Stop()
defer mconnServer.Stop()
defer mconnClient.Stop() // nolint:errcheck // ignore for tests
defer mconnServer.Stop() // nolint:errcheck // ignore for tests
mconnServer.onReceive = func(chID byte, msgBytes []byte) {
chOnRcv <- struct{}{}
@@ -506,8 +506,8 @@ func TestMConnectionReadErrorLongMessage(t *testing.T) {
func TestMConnectionReadErrorUnknownMsgType(t *testing.T) {
chOnErr := make(chan struct{})
mconnClient, mconnServer := newClientAndServerConnsForReadErrors(t, chOnErr)
defer mconnClient.Stop()
defer mconnServer.Stop()
defer mconnClient.Stop() // nolint:errcheck // ignore for tests
defer mconnServer.Stop() // nolint:errcheck // ignore for tests
// send msg with unknown msg type
_, err := protoio.NewDelimitedWriter(mconnClient.conn).WriteMsg(&types.Header{ChainID: "x"})
@@ -523,7 +523,7 @@ func TestMConnectionTrySend(t *testing.T) {
mconn := createTestMConnection(client)
err := mconn.Start()
require.Nil(t, err)
defer mconn.Stop()
defer mconn.Stop() // nolint:errcheck // ignore for tests
msg := []byte("Semicolon-Woman")
resultCh := make(chan string, 2)
+1 -1
View File
@@ -123,7 +123,7 @@ func (fc *FuzzedConnection) fuzz() bool {
case r < fc.config.ProbDropRW+fc.config.ProbDropConn:
// XXX: can't this fail because machine precision?
// XXX: do we need an error?
fc.Close() // nolint: errcheck, gas
fc.Close()
return true
case r < fc.config.ProbDropRW+fc.config.ProbDropConn+fc.config.ProbSleep:
time.Sleep(fc.randomDuration())
+1 -1
View File
@@ -320,7 +320,7 @@ func (p *peer) CloseConn() error {
// CloseConn closes the underlying connection
func (pc *peerConn) CloseConn() {
pc.conn.Close() // nolint: errcheck
pc.conn.Close()
}
// RemoteAddr returns peer's remote network address.
+1 -1
View File
@@ -55,7 +55,7 @@ func (a *addrBook) loadFromFile(filePath string) bool {
if err != nil {
panic(fmt.Sprintf("Error opening file %s: %v", filePath, err))
}
defer r.Close() // nolint: errcheck
defer r.Close()
aJSON := &addrBookJSON{}
dec := json.NewDecoder(r)
err = dec.Decode(aJSON)
+38 -30
View File
@@ -73,7 +73,7 @@ func TestPEXReactorRunning(t *testing.T) {
// directory to store address books
dir, err := ioutil.TempDir("", "pex_reactor")
require.Nil(t, err)
defer os.RemoveAll(dir) // nolint: errcheck
defer os.RemoveAll(dir)
books := make([]AddrBook, N)
logger := log.TestingLogger()
@@ -98,7 +98,8 @@ func TestPEXReactorRunning(t *testing.T) {
addOtherNodeAddrToAddrBook := func(switchIndex, otherSwitchIndex int) {
addr := switches[otherSwitchIndex].NetAddress()
books[switchIndex].AddAddress(addr, addr)
err := books[switchIndex].AddAddress(addr, addr)
require.NoError(t, err)
}
addOtherNodeAddrToAddrBook(0, 1)
@@ -114,7 +115,8 @@ func TestPEXReactorRunning(t *testing.T) {
// stop them
for _, s := range switches {
s.Stop()
err := s.Stop()
require.NoError(t, err)
}
}
@@ -147,7 +149,8 @@ func TestPEXReactorRequestMessageAbuse(t *testing.T) {
peerAddr := peer.SocketAddr()
p2p.AddPeerToSwitchPeerSet(sw, peer)
assert.True(t, sw.Peers().Has(peer.ID()))
book.AddAddress(peerAddr, peerAddr)
err := book.AddAddress(peerAddr, peerAddr)
require.NoError(t, err)
require.True(t, book.HasAddress(peerAddr))
id := string(peer.ID())
@@ -205,12 +208,12 @@ func TestCheckSeeds(t *testing.T) {
// directory to store address books
dir, err := ioutil.TempDir("", "pex_reactor")
require.Nil(t, err)
defer os.RemoveAll(dir) // nolint: errcheck
defer os.RemoveAll(dir)
// 1. test creating peer with no seeds works
peerSwitch := testCreateDefaultPeer(dir, 0)
require.Nil(t, peerSwitch.Start())
peerSwitch.Stop()
peerSwitch.Stop() // nolint:errcheck // ignore for tests
// 2. create seed
seed := testCreateSeed(dir, 1, []*p2p.NetAddress{}, []*p2p.NetAddress{})
@@ -218,7 +221,7 @@ func TestCheckSeeds(t *testing.T) {
// 3. test create peer with online seed works
peerSwitch = testCreatePeerWithSeed(dir, 2, seed)
require.Nil(t, peerSwitch.Start())
peerSwitch.Stop()
peerSwitch.Stop() // nolint:errcheck // ignore for tests
// 4. test create peer with all seeds having unresolvable DNS fails
badPeerConfig := &ReactorConfig{
@@ -227,7 +230,7 @@ func TestCheckSeeds(t *testing.T) {
}
peerSwitch = testCreatePeerWithConfig(dir, 2, badPeerConfig)
require.Error(t, peerSwitch.Start())
peerSwitch.Stop()
peerSwitch.Stop() // nolint:errcheck // ignore for tests
// 5. test create peer with one good seed address succeeds
badPeerConfig = &ReactorConfig{
@@ -237,24 +240,24 @@ func TestCheckSeeds(t *testing.T) {
}
peerSwitch = testCreatePeerWithConfig(dir, 2, badPeerConfig)
require.Nil(t, peerSwitch.Start())
peerSwitch.Stop()
peerSwitch.Stop() // nolint:errcheck // ignore for tests
}
func TestPEXReactorUsesSeedsIfNeeded(t *testing.T) {
// directory to store address books
dir, err := ioutil.TempDir("", "pex_reactor")
require.Nil(t, err)
defer os.RemoveAll(dir) // nolint: errcheck
defer os.RemoveAll(dir)
// 1. create seed
seed := testCreateSeed(dir, 0, []*p2p.NetAddress{}, []*p2p.NetAddress{})
require.Nil(t, seed.Start())
defer seed.Stop()
defer seed.Stop() // nolint:errcheck // ignore for tests
// 2. create usual peer with only seed configured.
peer := testCreatePeerWithSeed(dir, 1, seed)
require.Nil(t, peer.Start())
defer peer.Stop()
defer peer.Stop() // nolint:errcheck // ignore for tests
// 3. check that the peer connects to seed immediately
assertPeersWithTimeout(t, []*p2p.Switch{peer}, 10*time.Millisecond, 3*time.Second, 1)
@@ -264,23 +267,23 @@ func TestConnectionSpeedForPeerReceivedFromSeed(t *testing.T) {
// directory to store address books
dir, err := ioutil.TempDir("", "pex_reactor")
require.Nil(t, err)
defer os.RemoveAll(dir) // nolint: errcheck
defer os.RemoveAll(dir)
// 1. create peer
peerSwitch := testCreateDefaultPeer(dir, 1)
require.Nil(t, peerSwitch.Start())
defer peerSwitch.Stop()
defer peerSwitch.Stop() // nolint:errcheck // ignore for tests
// 2. Create seed which knows about the peer
peerAddr := peerSwitch.NetAddress()
seed := testCreateSeed(dir, 2, []*p2p.NetAddress{peerAddr}, []*p2p.NetAddress{peerAddr})
require.Nil(t, seed.Start())
defer seed.Stop()
defer seed.Stop() // nolint:errcheck // ignore for tests
// 3. create another peer with only seed configured.
secondPeer := testCreatePeerWithSeed(dir, 3, seed)
require.Nil(t, secondPeer.Start())
defer secondPeer.Stop()
defer secondPeer.Stop() // nolint:errcheck // ignore for tests
// 4. check that the second peer connects to seed immediately
assertPeersWithTimeout(t, []*p2p.Switch{secondPeer}, 10*time.Millisecond, 3*time.Second, 1)
@@ -293,7 +296,7 @@ func TestPEXReactorSeedMode(t *testing.T) {
// directory to store address books
dir, err := ioutil.TempDir("", "pex_reactor")
require.Nil(t, err)
defer os.RemoveAll(dir) // nolint: errcheck
defer os.RemoveAll(dir)
pexRConfig := &ReactorConfig{SeedMode: true, SeedDisconnectWaitPeriod: 10 * time.Millisecond}
pexR, book := createReactor(pexRConfig)
@@ -303,13 +306,13 @@ func TestPEXReactorSeedMode(t *testing.T) {
sw.SetAddrBook(book)
err = sw.Start()
require.NoError(t, err)
defer sw.Stop()
defer sw.Stop() // nolint:errcheck // ignore for tests
assert.Zero(t, sw.Peers().Size())
peerSwitch := testCreateDefaultPeer(dir, 1)
require.NoError(t, peerSwitch.Start())
defer peerSwitch.Stop()
defer peerSwitch.Stop() // nolint:errcheck // ignore for tests
// 1. Test crawlPeers dials the peer
pexR.crawlPeers([]*p2p.NetAddress{peerSwitch.NetAddress()})
@@ -332,7 +335,7 @@ func TestPEXReactorDoesNotDisconnectFromPersistentPeerInSeedMode(t *testing.T) {
// directory to store address books
dir, err := ioutil.TempDir("", "pex_reactor")
require.Nil(t, err)
defer os.RemoveAll(dir) // nolint: errcheck
defer os.RemoveAll(dir)
pexRConfig := &ReactorConfig{SeedMode: true, SeedDisconnectWaitPeriod: 1 * time.Millisecond}
pexR, book := createReactor(pexRConfig)
@@ -342,13 +345,13 @@ func TestPEXReactorDoesNotDisconnectFromPersistentPeerInSeedMode(t *testing.T) {
sw.SetAddrBook(book)
err = sw.Start()
require.NoError(t, err)
defer sw.Stop()
defer sw.Stop() // nolint:errcheck // ignore for tests
assert.Zero(t, sw.Peers().Size())
peerSwitch := testCreateDefaultPeer(dir, 1)
require.NoError(t, peerSwitch.Start())
defer peerSwitch.Stop()
defer peerSwitch.Stop() // nolint:errcheck // ignore for tests
err = sw.AddPersistentPeers([]string{peerSwitch.NetAddress().String()})
require.NoError(t, err)
@@ -370,7 +373,7 @@ func TestPEXReactorDialsPeerUpToMaxAttemptsInSeedMode(t *testing.T) {
// directory to store address books
dir, err := ioutil.TempDir("", "pex_reactor")
require.Nil(t, err)
defer os.RemoveAll(dir) // nolint: errcheck
defer os.RemoveAll(dir)
pexR, book := createReactor(&ReactorConfig{SeedMode: true})
defer teardownReactor(book)
@@ -406,7 +409,7 @@ func TestPEXReactorSeedModeFlushStop(t *testing.T) {
// directory to store address books
dir, err := ioutil.TempDir("", "pex_reactor")
require.Nil(t, err)
defer os.RemoveAll(dir) // nolint: errcheck
defer os.RemoveAll(dir)
books := make([]AddrBook, N)
logger := log.TestingLogger()
@@ -460,12 +463,14 @@ func TestPEXReactorSeedModeFlushStop(t *testing.T) {
// it should be safe to do this.
peers := switches[0].Peers().List()
for _, peer := range peers {
peer.Stop()
err := peer.Stop()
require.NoError(t, err)
}
// stop the switches
for _, s := range switches {
s.Stop()
err := s.Stop()
require.NoError(t, err)
}
}
@@ -501,12 +506,14 @@ func TestPEXReactorDialPeer(t *testing.T) {
assert.Equal(t, 0, pexR.AttemptsToDial(addr))
// 1st unsuccessful attempt
pexR.dialPeer(addr)
err := pexR.dialPeer(addr)
require.Error(t, err)
assert.Equal(t, 1, pexR.AttemptsToDial(addr))
// 2nd unsuccessful attempt
pexR.dialPeer(addr)
err = pexR.dialPeer(addr)
require.Error(t, err)
// must be skipped because it is too early
assert.Equal(t, 1, pexR.AttemptsToDial(addr))
@@ -515,7 +522,8 @@ func TestPEXReactorDialPeer(t *testing.T) {
time.Sleep(3 * time.Second)
// 3rd attempt
pexR.dialPeer(addr)
err = pexR.dialPeer(addr)
require.Error(t, err)
assert.Equal(t, 2, pexR.AttemptsToDial(addr))
}
@@ -609,7 +617,7 @@ func testCreateSeed(dir string, id int, knownAddrs, srcAddrs []*p2p.NetAddress)
book := NewAddrBook(filepath.Join(dir, "addrbookSeed.json"), false)
book.SetLogger(log.TestingLogger())
for j := 0; j < len(knownAddrs); j++ {
book.AddAddress(knownAddrs[j], srcAddrs[j])
book.AddAddress(knownAddrs[j], srcAddrs[j]) // nolint:errcheck // ignore for tests
book.MarkGood(knownAddrs[j].ID)
}
sw.SetAddrBook(book)
+5 -5
View File
@@ -46,7 +46,7 @@ func Discover() (nat NAT, err error) {
return
}
socket := conn.(*net.UDPConn)
defer socket.Close() // nolint: errcheck
defer socket.Close()
if err := socket.SetDeadline(time.Now().Add(3 * time.Second)); err != nil {
return nil, err
@@ -206,7 +206,7 @@ func getServiceURL(rootURL string) (url, urnDomain string, err error) {
if err != nil {
return
}
defer r.Body.Close() // nolint: errcheck
defer r.Body.Close()
if r.StatusCode >= 400 {
err = errors.New(string(r.StatusCode))
@@ -306,7 +306,7 @@ func (n *upnpNAT) getExternalIPAddress() (info statusInfo, err error) {
var response *http.Response
response, err = soapRequest(n.serviceURL, "GetExternalIPAddress", message, n.urnDomain)
if response != nil {
defer response.Body.Close() // nolint: errcheck
defer response.Body.Close()
}
if err != nil {
return
@@ -365,7 +365,7 @@ func (n *upnpNAT) AddPortMapping(
var response *http.Response
response, err = soapRequest(n.serviceURL, "AddPortMapping", message, n.urnDomain)
if response != nil {
defer response.Body.Close() // nolint: errcheck
defer response.Body.Close()
}
if err != nil {
return
@@ -391,7 +391,7 @@ func (n *upnpNAT) DeletePortMapping(protocol string, externalPort, internalPort
var response *http.Response
response, err = soapRequest(n.serviceURL, "DeletePortMapping", message, n.urnDomain)
if response != nil {
defer response.Body.Close() // nolint: errcheck
defer response.Body.Close()
}
if err != nil {
return