Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 12 additions & 9 deletions .github/workflows/go_lint.yaml
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
name: Lint
on: push
jobs:
lint:
name: lint
runs-on: buildjet-4vcpu-ubuntu-2204
golangci:
runs-on: ubuntu-latest
steps:
- uses: buildjet/setup-go@v4
- name: Checkout
uses: actions/checkout@v4

- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: 1.21.5
- uses: actions/checkout@v4
- name: golangci-lint
uses: golangci/golangci-lint-action@v3
go-version-file: go.mod

- name: Run
uses: golangci/golangci-lint-action@v6
with:
version: v1.55.2
version: v1.64
14 changes: 9 additions & 5 deletions .github/workflows/go_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ name: Test
on: push
jobs:
test:
name: go test
runs-on: buildjet-4vcpu-ubuntu-2204
runs-on: ubuntu-latest
services:
postgres:
image: postgres
Expand All @@ -19,11 +18,16 @@ jobs:
--health-timeout 5s
--health-retries 5
steps:
- uses: actions/checkout@v4
- uses: buildjet/setup-go@v4
- name: Checkout
uses: actions/checkout@v4

- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: '1.21.5'
go-version-file: go.mod

- run: go test ./...

- run: go test --tags=acceptance_test ./...
env:
DOCKER_API_VERSION: 1.39
48 changes: 48 additions & 0 deletions .golangci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
linters:
enable:
# Enabled by default.
- errcheck
- gosimple
- govet
- ineffassign
- staticcheck
- unused
# Disabled by default.
- dupword
- durationcheck
- errchkjson
- errname
- errorlint
- exhaustive
- exptostd
- gocheckcompilerdirectives
- gochecknoglobals
- gochecknoinits
- gochecksumtype
- gocritic
- godot
- godox
- gofumpt
- gosec
- intrange
- mirror
- misspell
- nilerr
- nilnesserr
- nilnil
- nolintlint
- predeclared
- reassign
- recvcheck
- sloglint
- unconvert
- unparam
- usestdlibvars
- usetesting
- wastedassign

linters-settings:
gosec:
excludes:
- G115

4 changes: 3 additions & 1 deletion cmd/pggen/pggen.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,14 @@ import (
)

// Set via ldflags for release binaries.
//
//nolint:gochecknoglobals
var (
version = "dev"
commit = "head"
)

var flagHelp = `pggen generates type-safe code from files containing Postgres queries by running
const flagHelp = `pggen generates type-safe code from files containing Postgres queries by running
the queries on Postgres to get type information.

EXAMPLES
Expand Down
7 changes: 4 additions & 3 deletions example/author/codegen_test.go
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
package author

import (
"github.com/jschaf/pggen"
"github.com/jschaf/pggen/internal/pgtest"
"github.com/stretchr/testify/assert"
"os"
"path/filepath"
"testing"

"github.com/jschaf/pggen"
"github.com/jschaf/pggen/internal/pgtest"
"github.com/stretchr/testify/assert"
)

func TestGenerate_Go_Example_Author(t *testing.T) {
Expand Down
42 changes: 21 additions & 21 deletions example/author/query.sql_test.go
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package author

import (
"context"
"errors"
"testing"

"github.com/jschaf/pggen/internal/ptrs"
"github.com/stretchr/testify/require"
"testing"

"github.com/jackc/pgx/v4"
"github.com/jschaf/pggen/internal/pgtest"
Expand All @@ -21,7 +21,7 @@ func TestNewQuerier_FindAuthorByID(t *testing.T) {
insertAuthor(t, q, "george", "washington")

t.Run("FindAuthorByID", func(t *testing.T) {
authorByID, err := q.FindAuthorByID(context.Background(), adamsID)
authorByID, err := q.FindAuthorByID(t.Context(), adamsID)
require.NoError(t, err)
assert.Equal(t, FindAuthorByIDRow{
AuthorID: adamsID,
Expand All @@ -32,7 +32,7 @@ func TestNewQuerier_FindAuthorByID(t *testing.T) {
})

t.Run("FindAuthorByID - none-exists", func(t *testing.T) {
missingAuthorByID, err := q.FindAuthorByID(context.Background(), 888)
missingAuthorByID, err := q.FindAuthorByID(t.Context(), 888)
require.Error(t, err, "expected error when finding author ID that doesn't match")
assert.Zero(t, missingAuthorByID, "expected zero value when error")
if !errors.Is(err, pgx.ErrNoRows) {
Expand All @@ -50,7 +50,7 @@ func TestNewQuerier_FindAuthors(t *testing.T) {
carverID := insertAuthor(t, q, "george", "carver")

t.Run("FindAuthors - 1 row - john", func(t *testing.T) {
authors, err := q.FindAuthors(context.Background(), "john")
authors, err := q.FindAuthors(t.Context(), "john")
require.NoError(t, err)
want := []FindAuthorsRow{
{
Expand All @@ -64,7 +64,7 @@ func TestNewQuerier_FindAuthors(t *testing.T) {
})

t.Run("FindAuthors - 2 rows - george", func(t *testing.T) {
authors, err := q.FindAuthors(context.Background(), "george")
authors, err := q.FindAuthors(t.Context(), "george")
require.NoError(t, err)
want := []FindAuthorsRow{
{AuthorID: washingtonID, FirstName: "george", LastName: "washington", Suffix: nil},
Expand All @@ -74,7 +74,7 @@ func TestNewQuerier_FindAuthors(t *testing.T) {
})

t.Run("FindAuthors - 0 rows - joe", func(t *testing.T) {
authors, err := q.FindAuthors(context.Background(), "joe")
authors, err := q.FindAuthors(t.Context(), "joe")
require.NoError(t, err)
assert.Equal(t, []FindAuthorsRow{}, authors)
})
Expand All @@ -89,7 +89,7 @@ func TestNewQuerier_FindFirstNames(t *testing.T) {
insertAuthor(t, q, "george", "washington")

t.Run("FindAuthorByID", func(t *testing.T) {
firstNames, err := q.FindFirstNames(context.Background(), adamsID)
firstNames, err := q.FindFirstNames(t.Context(), adamsID)
require.NoError(t, err)
assert.Equal(t, []*string{ptrs.String("george"), ptrs.String("john")}, firstNames)
})
Expand All @@ -101,7 +101,7 @@ func TestNewQuerier_InsertAuthorSuffix(t *testing.T) {
q := NewQuerier(conn)

t.Run("InsertAuthorSuffix", func(t *testing.T) {
author, err := q.InsertAuthorSuffix(context.Background(), InsertAuthorSuffixParams{
author, err := q.InsertAuthorSuffix(t.Context(), InsertAuthorSuffixParams{
FirstName: "john",
LastName: "adams",
Suffix: "Jr.",
Expand All @@ -127,12 +127,12 @@ func TestNewQuerier_DeleteAuthorsByFirstName(t *testing.T) {
insertAuthor(t, q, "george", "carver")

t.Run("DeleteAuthorsByFirstName", func(t *testing.T) {
tag, err := q.DeleteAuthorsByFirstName(context.Background(), "george")
tag, err := q.DeleteAuthorsByFirstName(t.Context(), "george")
require.NoError(t, err)
assert.Truef(t, tag.Delete(), "expected delete tag; got %s", tag.String())
assert.Equal(t, int64(2), tag.RowsAffected())

authors, err := q.FindAuthors(context.Background(), "george")
authors, err := q.FindAuthors(t.Context(), "george")
require.NoError(t, err)
assert.Empty(t, authors, "no authors should remain with first name of george")
})
Expand All @@ -143,15 +143,15 @@ func TestNewQuerier_DeleteAuthorsByFullName(t *testing.T) {
defer cleanup()
q := NewQuerier(conn)
washingtonID := insertAuthor(t, q, "george", "washington")
_, err := q.InsertAuthorSuffix(context.Background(), InsertAuthorSuffixParams{
_, err := q.InsertAuthorSuffix(t.Context(), InsertAuthorSuffixParams{
FirstName: "george",
LastName: "washington",
Suffix: "Jr.",
})
require.NoError(t, err)

t.Run("DeleteAuthorsByFullName", func(t *testing.T) {
tag, err := q.DeleteAuthorsByFullName(context.Background(), DeleteAuthorsByFullNameParams{
tag, err := q.DeleteAuthorsByFullName(t.Context(), DeleteAuthorsByFullNameParams{
FirstName: "george",
LastName: "washington",
Suffix: "Jr.",
Expand All @@ -160,7 +160,7 @@ func TestNewQuerier_DeleteAuthorsByFullName(t *testing.T) {
assert.Truef(t, tag.Delete(), "expected delete tag; got %s", tag.String())
assert.Equal(t, int64(1), tag.RowsAffected())

authors, err := q.FindAuthors(context.Background(), "george")
authors, err := q.FindAuthors(t.Context(), "george")
require.NoError(t, err)
want := []FindAuthorsRow{
{
Expand All @@ -179,21 +179,21 @@ func TestNewQuerier_StringAggFirstName(t *testing.T) {
defer cleanup()
q := NewQuerier(conn)
washingtonID := insertAuthor(t, q, "george", "washington")
_, err := q.InsertAuthorSuffix(context.Background(), InsertAuthorSuffixParams{
_, err := q.InsertAuthorSuffix(t.Context(), InsertAuthorSuffixParams{
FirstName: "george",
LastName: "washington",
Suffix: "Jr.",
})
require.NoError(t, err)

t.Run("StringAggFirstName - null", func(t *testing.T) {
firstNames, err := q.StringAggFirstName(context.Background(), 999)
firstNames, err := q.StringAggFirstName(t.Context(), 999)
require.NoError(t, err)
require.Nil(t, firstNames)
})

t.Run("StringAggFirstName - one", func(t *testing.T) {
firstNames, err := q.StringAggFirstName(context.Background(), washingtonID)
firstNames, err := q.StringAggFirstName(t.Context(), washingtonID)
require.NoError(t, err)
assert.Equal(t, "george", *firstNames)
})
Expand All @@ -204,29 +204,29 @@ func TestNewQuerier_ArrayAggFirstName(t *testing.T) {
defer cleanup()
q := NewQuerier(conn)
washingtonID := insertAuthor(t, q, "george", "washington")
_, err := q.InsertAuthorSuffix(context.Background(), InsertAuthorSuffixParams{
_, err := q.InsertAuthorSuffix(t.Context(), InsertAuthorSuffixParams{
FirstName: "george",
LastName: "washington",
Suffix: "Jr.",
})
require.NoError(t, err)

t.Run("ArrayAggFirstName - null", func(t *testing.T) {
firstNames, err := q.ArrayAggFirstName(context.Background(), 999)
firstNames, err := q.ArrayAggFirstName(t.Context(), 999)
require.NoError(t, err)
require.Nil(t, firstNames)
})

t.Run("ArrayAggFirstName - one", func(t *testing.T) {
firstNames, err := q.ArrayAggFirstName(context.Background(), washingtonID)
firstNames, err := q.ArrayAggFirstName(t.Context(), washingtonID)
require.NoError(t, err)
assert.Equal(t, []string{"george"}, firstNames)
})
}

func insertAuthor(t *testing.T, q *DBQuerier, first, last string) int32 {
t.Helper()
authorID, err := q.InsertAuthor(context.Background(), first, last)
authorID, err := q.InsertAuthor(t.Context(), first, last)
require.NoError(t, err, "insert author")
return authorID
}
7 changes: 4 additions & 3 deletions example/complex_params/codegen_test.go
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
package complex_params

import (
"github.com/jschaf/pggen"
"github.com/jschaf/pggen/internal/pgtest"
"github.com/stretchr/testify/assert"
"os"
"path/filepath"
"testing"

"github.com/jschaf/pggen"
"github.com/jschaf/pggen/internal/pgtest"
"github.com/stretchr/testify/assert"
)

func TestGenerate_Go_Example_ComplexParams(t *testing.T) {
Expand Down
Loading
Loading