Add errcheck and fix unchecked errors

This commit is contained in:
Adrian Macneil 2015-11-27 14:27:44 -08:00
parent 913234a60d
commit c6aba53e51
7 changed files with 40 additions and 13 deletions

View file

@ -4,9 +4,10 @@ ENV GOPATH /go
ENV PATH /go/bin:$PATH ENV PATH /go/bin:$PATH
# install build dependencies # install build dependencies
RUN apk add -U --no-progress go git ca-certificates RUN apk add -U --no-progress alpine-sdk go
RUN go get \ RUN go get \
github.com/golang/lint/golint \ github.com/golang/lint/golint \
github.com/kisielk/errcheck \
golang.org/x/tools/cmd/vet golang.org/x/tools/cmd/vet
# copy source files # copy source files

View file

@ -8,6 +8,7 @@ build:
lint: lint:
$(DOCKER) golint ./... $(DOCKER) golint ./...
$(DOCKER) go vet ./... $(DOCKER) go vet ./...
$(DOCKER) errcheck ./...
test: test:
$(DOCKER) go test ./... $(DOCKER) go test ./...

View file

@ -6,6 +6,7 @@ import (
"github.com/adrianmacneil/dbmate/driver" "github.com/adrianmacneil/dbmate/driver"
"github.com/adrianmacneil/dbmate/driver/shared" "github.com/adrianmacneil/dbmate/driver/shared"
"github.com/codegangsta/cli" "github.com/codegangsta/cli"
"io"
"io/ioutil" "io/ioutil"
"net/url" "net/url"
"os" "os"
@ -72,6 +73,12 @@ func DropCommand(ctx *cli.Context) error {
const migrationTemplate = "-- migrate:up\n\n\n-- migrate:down\n\n" const migrationTemplate = "-- migrate:up\n\n\n-- migrate:down\n\n"
func mustClose(c io.Closer) {
if err := c.Close(); err != nil {
panic(err)
}
}
// NewCommand creates a new migration file // NewCommand creates a new migration file
func NewCommand(ctx *cli.Context) error { func NewCommand(ctx *cli.Context) error {
// new migration name // new migration name
@ -102,7 +109,7 @@ func NewCommand(ctx *cli.Context) error {
return err return err
} }
defer file.Close() defer mustClose(file)
_, err = file.WriteString(migrationTemplate) _, err = file.WriteString(migrationTemplate)
if err != nil { if err != nil {
return err return err
@ -126,7 +133,10 @@ func doTransaction(db *sql.DB, txFunc func(shared.Transaction) error) error {
} }
if err := txFunc(tx); err != nil { if err := txFunc(tx); err != nil {
tx.Rollback() if err1 := tx.Rollback(); err1 != nil {
return err1
}
return err return err
} }
@ -170,7 +180,7 @@ func MigrateCommand(ctx *cli.Context) error {
drv, db, err := openDatabaseForMigration(ctx) drv, db, err := openDatabaseForMigration(ctx)
if db != nil { if db != nil {
defer db.Close() defer mustClose(db)
} }
if err != nil { if err != nil {
return err return err
@ -323,7 +333,7 @@ func parseMigration(path string) (map[string]string, error) {
func RollbackCommand(ctx *cli.Context) error { func RollbackCommand(ctx *cli.Context) error {
drv, db, err := openDatabaseForMigration(ctx) drv, db, err := openDatabaseForMigration(ctx)
if db != nil { if db != nil {
defer db.Close() defer mustClose(db)
} }
if err != nil { if err != nil {
return err return err

View file

@ -20,7 +20,8 @@ func newContext() *cli.Context {
} }
func TestGetDatabaseUrl_Default(t *testing.T) { func TestGetDatabaseUrl_Default(t *testing.T) {
os.Setenv("DATABASE_URL", "postgres://example.org/db") err := os.Setenv("DATABASE_URL", "postgres://example.org/db")
require.Nil(t, err)
ctx := newContext() ctx := newContext()
u, err := main.GetDatabaseURL(ctx) u, err := main.GetDatabaseURL(ctx)

View file

@ -5,6 +5,7 @@ import (
"fmt" "fmt"
"github.com/adrianmacneil/dbmate/driver/shared" "github.com/adrianmacneil/dbmate/driver/shared"
pq "github.com/lib/pq" pq "github.com/lib/pq"
"io"
"net/url" "net/url"
) )
@ -26,6 +27,12 @@ func (postgres Driver) openPostgresDB(u *url.URL) (*sql.DB, error) {
return postgres.Open(&postgresURL) return postgres.Open(&postgresURL)
} }
func mustClose(c io.Closer) {
if err := c.Close(); err != nil {
panic(err)
}
}
// CreateDatabase creates the specified database // CreateDatabase creates the specified database
func (postgres Driver) CreateDatabase(u *url.URL) error { func (postgres Driver) CreateDatabase(u *url.URL) error {
name := shared.DatabaseName(u) name := shared.DatabaseName(u)
@ -35,7 +42,7 @@ func (postgres Driver) CreateDatabase(u *url.URL) error {
if err != nil { if err != nil {
return err return err
} }
defer db.Close() defer mustClose(db)
_, err = db.Exec(fmt.Sprintf("CREATE DATABASE %s", _, err = db.Exec(fmt.Sprintf("CREATE DATABASE %s",
pq.QuoteIdentifier(name))) pq.QuoteIdentifier(name)))
@ -52,7 +59,7 @@ func (postgres Driver) DropDatabase(u *url.URL) error {
if err != nil { if err != nil {
return err return err
} }
defer db.Close() defer mustClose(db)
_, err = db.Exec(fmt.Sprintf("DROP DATABASE IF EXISTS %s", _, err = db.Exec(fmt.Sprintf("DROP DATABASE IF EXISTS %s",
pq.QuoteIdentifier(name))) pq.QuoteIdentifier(name)))
@ -68,7 +75,7 @@ func (postgres Driver) DatabaseExists(u *url.URL) (bool, error) {
if err != nil { if err != nil {
return false, err return false, err
} }
defer db.Close() defer mustClose(db)
exists := false exists := false
err = db.QueryRow("SELECT true FROM pg_database WHERE datname = $1", name). err = db.QueryRow("SELECT true FROM pg_database WHERE datname = $1", name).
@ -105,7 +112,7 @@ func (postgres Driver) SelectMigrations(db *sql.DB, limit int) (map[string]struc
return nil, err return nil, err
} }
defer rows.Close() defer mustClose(rows)
migrations := map[string]struct{}{} migrations := map[string]struct{}{}
for rows.Next() { for rows.Next() {

View file

@ -4,6 +4,7 @@ import (
"database/sql" "database/sql"
"github.com/adrianmacneil/dbmate/driver/postgres" "github.com/adrianmacneil/dbmate/driver/postgres"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"io"
"net/url" "net/url"
"os" "os"
"testing" "testing"
@ -24,6 +25,12 @@ func testURL(t *testing.T) *url.URL {
return u return u
} }
func mustClose(c io.Closer) {
if err := c.Close(); err != nil {
panic(err)
}
}
func TestCreateDropDatabase(t *testing.T) { func TestCreateDropDatabase(t *testing.T) {
d := postgres.Driver{} d := postgres.Driver{}
u := testURL(t) u := testURL(t)
@ -40,7 +47,7 @@ func TestCreateDropDatabase(t *testing.T) {
func() { func() {
db, err := sql.Open("postgres", u.String()) db, err := sql.Open("postgres", u.String())
require.Nil(t, err) require.Nil(t, err)
defer db.Close() defer mustClose(db)
err = db.Ping() err = db.Ping()
require.Nil(t, err) require.Nil(t, err)
@ -54,7 +61,7 @@ func TestCreateDropDatabase(t *testing.T) {
func() { func() {
db, err := sql.Open("postgres", u.String()) db, err := sql.Open("postgres", u.String())
require.Nil(t, err) require.Nil(t, err)
defer db.Close() defer mustClose(db)
err = db.Ping() err = db.Ping()
require.NotNil(t, err) require.NotNil(t, err)

View file

@ -12,7 +12,7 @@ func main() {
loadDotEnv() loadDotEnv()
app := NewApp() app := NewApp()
app.Run(os.Args) app.RunAndExitOnError()
} }
// NewApp creates a new command line app // NewApp creates a new command line app