mirror of
https://github.com/TECHNOFAB11/dbmate.git
synced 2025-12-12 16:10:03 +01:00
Add errcheck and fix unchecked errors
This commit is contained in:
parent
913234a60d
commit
c6aba53e51
7 changed files with 40 additions and 13 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
1
Makefile
1
Makefile
|
|
@ -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 ./...
|
||||||
|
|
|
||||||
18
commands.go
18
commands.go
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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() {
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
2
main.go
2
main.go
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue