Skip to content

Commit 6c96ef0

Browse files
kmuratovdhui
authored andcommitted
Enabled maligned, staticcheck and errcheck linters (#206)
* Enabled maligned check * Enabled staticcheck * Fixes for golint * Enabled errcheck linter * Added fixes for error check * Added errcheck for tests * Fixed test * Increased golangci-lint deadline for travis * Increased golangci-lint deadline for travis * Decreased golangci-lint deadline for travis * Revert for backward compatibility * Using log.Println() instead of fmt.Println() * Handling os.RemoveAll() errors * Using t.Error(error) instead of t.Errorf("%v", err) * Using t.Fatal(error) instead of t.Fatalf("%v", err) * Using fmt.Sprint(sum) instead of t.Srintf("%v", sum) * Refactoring * Revert for backward compatibility * Revert * go mod tidy * Added error logging * Added error logging * Added error handling * Added error handling * Added error logging * Fix error logging * Added error handling * Fix * Added logging for migr.Buffer() * Fixes * Firebird test disabled * Fixed nolint comment * Updated firebird docker image version * Disabled test for firebird 2.5 * Fixed // nolint
1 parent ddc7246 commit 6c96ef0

37 files changed

+645
-263
lines changed

.golangci.yml

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
run:
2+
# timeout for analysis, e.g. 30s, 5m, default is 1m
3+
deadline: 2m
14
linters:
25
enable:
36
#- golint
@@ -7,14 +10,11 @@ linters:
710
- goconst
811
- gofmt
912
- misspell
10-
#- maligned
13+
- maligned
1114
- unparam
1215
- nakedret
1316
- prealloc
1417
#- gosec
15-
disable:
16-
- errcheck
17-
- staticcheck
1818
linters-settings:
1919
misspell:
2020
locale: US

database/cassandra/cassandra_test.go

+13-5
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,13 @@ func Test(t *testing.T) {
6868
p := &Cassandra{}
6969
d, err := p.Open(addr)
7070
if err != nil {
71-
t.Fatalf("%v", err)
71+
t.Fatal(err)
7272
}
73-
defer d.Close()
73+
defer func() {
74+
if err := d.Close(); err != nil {
75+
t.Error(err)
76+
}
77+
}()
7478
dt.Test(t, d, []byte("SELECT table_name from system_schema.tables"))
7579
})
7680
}
@@ -85,13 +89,17 @@ func TestMigrate(t *testing.T) {
8589
p := &Cassandra{}
8690
d, err := p.Open(addr)
8791
if err != nil {
88-
t.Fatalf("%v", err)
92+
t.Fatal(err)
8993
}
90-
defer d.Close()
94+
defer func() {
95+
if err := d.Close(); err != nil {
96+
t.Error(err)
97+
}
98+
}()
9199

92100
m, err := migrate.NewWithDatabaseInstance("file://./examples/migrations", "testks", d)
93101
if err != nil {
94-
t.Fatalf("%v", err)
102+
t.Fatal(err)
95103
}
96104
dt.TestMigrate(t, m, []byte("SELECT table_name from system_schema.tables"))
97105
})

database/clickhouse/clickhouse.go

+9-6
Original file line numberDiff line numberDiff line change
@@ -204,15 +204,18 @@ func (ch *ClickHouse) ensureVersionTable() (err error) {
204204
return nil
205205
}
206206

207-
func (ch *ClickHouse) Drop() error {
208-
var (
209-
query = "SHOW TABLES FROM " + ch.config.DatabaseName
210-
tables, err = ch.conn.Query(query)
211-
)
207+
func (ch *ClickHouse) Drop() (err error) {
208+
query := "SHOW TABLES FROM " + ch.config.DatabaseName
209+
tables, err := ch.conn.Query(query)
210+
212211
if err != nil {
213212
return &database.Error{OrigErr: err, Query: []byte(query)}
214213
}
215-
defer tables.Close()
214+
defer func() {
215+
if errClose := tables.Close(); errClose != nil {
216+
err = multierror.Append(err, errClose)
217+
}
218+
}()
216219
for tables.Next() {
217220
var table string
218221
if err := tables.Scan(&table); err != nil {

database/cockroachdb/cockroachdb.go

+12-4
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ func (c *CockroachDb) Close() error {
150150
// Locking is done manually with a separate lock table. Implementing advisory locks in CRDB is being discussed
151151
// See: https://github.com/cockroachdb/cockroach/issues/13546
152152
func (c *CockroachDb) Lock() error {
153-
err := crdb.ExecuteTx(context.Background(), c.db, nil, func(tx *sql.Tx) error {
153+
err := crdb.ExecuteTx(context.Background(), c.db, nil, func(tx *sql.Tx) (err error) {
154154
aid, err := database.GenerateAdvisoryLockId(c.config.DatabaseName)
155155
if err != nil {
156156
return err
@@ -161,7 +161,11 @@ func (c *CockroachDb) Lock() error {
161161
if err != nil {
162162
return database.Error{OrigErr: err, Err: "failed to fetch migration lock", Query: []byte(query)}
163163
}
164-
defer rows.Close()
164+
defer func() {
165+
if errClose := rows.Close(); errClose != nil {
166+
err = multierror.Append(err, errClose)
167+
}
168+
}()
165169

166170
// If row exists at all, lock is present
167171
locked := rows.Next()
@@ -267,14 +271,18 @@ func (c *CockroachDb) Version() (version int, dirty bool, err error) {
267271
}
268272
}
269273

270-
func (c *CockroachDb) Drop() error {
274+
func (c *CockroachDb) Drop() (err error) {
271275
// select all tables in current schema
272276
query := `SELECT table_name FROM information_schema.tables WHERE table_schema=(SELECT current_schema())`
273277
tables, err := c.db.Query(query)
274278
if err != nil {
275279
return &database.Error{OrigErr: err, Query: []byte(query)}
276280
}
277-
defer tables.Close()
281+
defer func() {
282+
if errClose := tables.Close(); errClose != nil {
283+
err = multierror.Append(err, errClose)
284+
}
285+
}()
278286

279287
// delete one table after another
280288
tableNames := make([]string, 0)

database/cockroachdb/cockroachdb_test.go

+17-10
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"database/sql"
88
"fmt"
99
"github.com/golang-migrate/migrate/v4"
10+
"log"
1011
"strings"
1112
"testing"
1213
)
@@ -38,20 +39,22 @@ var (
3839
func isReady(ctx context.Context, c dktest.ContainerInfo) bool {
3940
ip, port, err := c.Port(defaultPort)
4041
if err != nil {
41-
fmt.Println("port error:", err)
42+
log.Println("port error:", err)
4243
return false
4344
}
4445

4546
db, err := sql.Open("postgres", fmt.Sprintf("postgres://root@%v:%v?sslmode=disable", ip, port))
4647
if err != nil {
47-
fmt.Println("open error:", err)
48+
log.Println("open error:", err)
4849
return false
4950
}
5051
if err := db.PingContext(ctx); err != nil {
51-
fmt.Println("ping error:", err)
52+
log.Println("ping error:", err)
5253
return false
5354
}
54-
db.Close()
55+
if err := db.Close(); err != nil {
56+
log.Println("close error:", err)
57+
}
5558
return true
5659
}
5760

@@ -68,7 +71,11 @@ func createDB(t *testing.T, c dktest.ContainerInfo) {
6871
if err = db.Ping(); err != nil {
6972
t.Fatal(err)
7073
}
71-
defer db.Close()
74+
defer func() {
75+
if err := db.Close(); err != nil {
76+
t.Error(err)
77+
}
78+
}()
7279

7380
if _, err = db.Exec("CREATE DATABASE migrate"); err != nil {
7481
t.Fatal(err)
@@ -88,7 +95,7 @@ func Test(t *testing.T) {
8895
c := &CockroachDb{}
8996
d, err := c.Open(addr)
9097
if err != nil {
91-
t.Fatalf("%v", err)
98+
t.Fatal(err)
9299
}
93100
dt.Test(t, d, []byte("SELECT 1"))
94101
})
@@ -107,12 +114,12 @@ func TestMigrate(t *testing.T) {
107114
c := &CockroachDb{}
108115
d, err := c.Open(addr)
109116
if err != nil {
110-
t.Fatalf("%v", err)
117+
t.Fatal(err)
111118
}
112119

113120
m, err := migrate.NewWithDatabaseInstance("file://./examples/migrations", "migrate", d)
114121
if err != nil {
115-
t.Fatalf("%v", err)
122+
t.Fatal(err)
116123
}
117124
dt.TestMigrate(t, m, []byte("SELECT 1"))
118125
})
@@ -131,7 +138,7 @@ func TestMultiStatement(t *testing.T) {
131138
c := &CockroachDb{}
132139
d, err := c.Open(addr)
133140
if err != nil {
134-
t.Fatalf("%v", err)
141+
t.Fatal(err)
135142
}
136143
if err := d.Run(strings.NewReader("CREATE TABLE foo (foo text); CREATE TABLE bar (bar text);")); err != nil {
137144
t.Fatalf("expected err to be nil, got %v", err)
@@ -161,7 +168,7 @@ func TestFilterCustomQuery(t *testing.T) {
161168
c := &CockroachDb{}
162169
_, err = c.Open(addr)
163170
if err != nil {
164-
t.Fatalf("%v", err)
171+
t.Fatal(err)
165172
}
166173
})
167174
}

database/firebird/firebird.go

+6-2
Original file line numberDiff line numberDiff line change
@@ -166,14 +166,18 @@ func (f *Firebird) Version() (version int, dirty bool, err error) {
166166
}
167167
}
168168

169-
func (f *Firebird) Drop() error {
169+
func (f *Firebird) Drop() (err error) {
170170
// select all tables
171171
query := `SELECT rdb$relation_name FROM rdb$relations WHERE rdb$view_blr IS NULL AND (rdb$system_flag IS NULL OR rdb$system_flag = 0);`
172172
tables, err := f.conn.QueryContext(context.Background(), query)
173173
if err != nil {
174174
return &database.Error{OrigErr: err, Query: []byte(query)}
175175
}
176-
defer tables.Close()
176+
defer func() {
177+
if errClose := tables.Close(); errClose != nil {
178+
err = multierror.Append(err, errClose)
179+
}
180+
}()
177181

178182
// delete one table after another
179183
tableNames := make([]string, 0)

database/firebird/firebird_test.go

+40-13
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import (
55
"database/sql"
66
sqldriver "database/sql/driver"
77
"fmt"
8+
"log"
9+
810
"github.com/golang-migrate/migrate/v4"
911
"io"
1012
"strings"
@@ -36,7 +38,6 @@ var (
3638
},
3739
}
3840
specs = []dktesting.ContainerSpec{
39-
{ImageName: "jacobalberty/firebird:2.5-ss", Options: opts},
4041
{ImageName: "jacobalberty/firebird:3.0", Options: opts},
4142
}
4243
)
@@ -54,15 +55,20 @@ func isReady(ctx context.Context, c dktest.ContainerInfo) bool {
5455

5556
db, err := sql.Open("firebirdsql", fbConnectionString(ip, port))
5657
if err != nil {
58+
log.Println("open error:", err)
5759
return false
5860
}
59-
defer db.Close()
61+
defer func() {
62+
if err := db.Close(); err != nil {
63+
log.Println("close error:", err)
64+
}
65+
}()
6066
if err = db.PingContext(ctx); err != nil {
6167
switch err {
6268
case sqldriver.ErrBadConn, io.EOF:
6369
return false
6470
default:
65-
fmt.Println(err)
71+
log.Println(err)
6672
}
6773
return false
6874
}
@@ -81,9 +87,13 @@ func Test(t *testing.T) {
8187
p := &Firebird{}
8288
d, err := p.Open(addr)
8389
if err != nil {
84-
t.Fatalf("%v", err)
90+
t.Fatal(err)
8591
}
86-
defer d.Close()
92+
defer func() {
93+
if err := d.Close(); err != nil {
94+
t.Error(err)
95+
}
96+
}()
8797
dt.Test(t, d, []byte("SELECT Count(*) FROM rdb$relations"))
8898
})
8999
}
@@ -99,12 +109,16 @@ func TestMigrate(t *testing.T) {
99109
p := &Firebird{}
100110
d, err := p.Open(addr)
101111
if err != nil {
102-
t.Fatalf("%v", err)
112+
t.Fatal(err)
103113
}
104-
defer d.Close()
114+
defer func() {
115+
if err := d.Close(); err != nil {
116+
t.Error(err)
117+
}
118+
}()
105119
m, err := migrate.NewWithDatabaseInstance("file://./examples/migrations", "firebirdsql", d)
106120
if err != nil {
107-
t.Fatalf("%v", err)
121+
t.Fatal(err)
108122
}
109123
dt.TestMigrate(t, m, []byte("SELECT Count(*) FROM rdb$relations"))
110124
})
@@ -121,9 +135,13 @@ func TestErrorParsing(t *testing.T) {
121135
p := &Firebird{}
122136
d, err := p.Open(addr)
123137
if err != nil {
124-
t.Fatalf("%v", err)
138+
t.Fatal(err)
125139
}
126-
defer d.Close()
140+
defer func() {
141+
if err := d.Close(); err != nil {
142+
t.Error(err)
143+
}
144+
}()
127145

128146
wantErr := `migration failed in line 0: CREATE TABLEE foo (foo varchar(40)); (details: Dynamic SQL Error
129147
SQL error code = -104
@@ -151,9 +169,13 @@ func TestFilterCustomQuery(t *testing.T) {
151169
p := &Firebird{}
152170
d, err := p.Open(addr)
153171
if err != nil {
154-
t.Fatalf("%v", err)
172+
t.Fatal(err)
155173
}
156-
defer d.Close()
174+
defer func() {
175+
if err := d.Close(); err != nil {
176+
t.Error(err)
177+
}
178+
}()
157179
})
158180
}
159181

@@ -168,8 +190,13 @@ func Test_Lock(t *testing.T) {
168190
p := &Firebird{}
169191
d, err := p.Open(addr)
170192
if err != nil {
171-
t.Fatalf("%v", err)
193+
t.Fatal(err)
172194
}
195+
defer func() {
196+
if err := d.Close(); err != nil {
197+
t.Error(err)
198+
}
199+
}()
173200

174201
dt.Test(t, d, []byte("SELECT Count(*) FROM rdb$relations"))
175202

0 commit comments

Comments
 (0)