Add Github action workflow (#437)

This commit is contained in:
Asdine El Hrychy
2021-12-04 19:32:23 +01:00
committed by GitHub
parent 8983d68daf
commit c8be9968cd
4 changed files with 50 additions and 35 deletions

39
.github/workflows/go.yml vendored Normal file
View File

@@ -0,0 +1,39 @@
name: Go
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: 1.17
- name: Vendor
run: go mod vendor
- name: Build
run: make
- name: Install go-acc
run: go install github.com/ory/go-acc@latest
- name: Test Genji
run: go-acc $(go list ./...) -- -mod vendor -race -timeout=2m
- name: Test Genji CLI
run: cd ./cmd/genji && go test -race ./... && cd -
- name: Test Badget Engine
run: cd ./engine/badgerengine && go test -race ./... && cd -
- name: Upload Codecov
run: bash <(curl -s https://codecov.io/bash)

View File

@@ -1,24 +0,0 @@
language: go
env:
- GO111MODULE=on
go:
- "1.17.x"
- tip
matrix:
allow_failures:
- go: tip
script:
- go mod vendor
- make
- make gen
- go install github.com/ory/go-acc@latest
- go-acc $(go list ./...) -- -mod vendor -race -timeout=2m
- cd ./cmd/genji && go test -race ./... && cd -
- cd ./engine/badgerengine && go test -race ./... && cd -
after_success:
- bash <(curl -s https://codecov.io/bash)

View File

@@ -87,7 +87,7 @@ func (q *Query) Prepare(context *Context) error {
}
// Run executes all the statements in their own transaction and returns the last result.
func (q *Query) Run(context *Context) (*statement.Result, error) {
func (q Query) Run(context *Context) (*statement.Result, error) {
var res statement.Result
var err error
@@ -109,7 +109,7 @@ func (q *Query) Run(context *Context) (*statement.Result, error) {
res = statement.Result{}
if qa, ok := stmt.(queryAlterer); ok {
err = qa.alterQuery(ctx, context.DB, q)
err = qa.alterQuery(ctx, context.DB, &q)
if err != nil {
if tx := context.GetTx(); tx != nil {
tx.Rollback()

View File

@@ -19,11 +19,11 @@ func TestInsertStmt(t *testing.T) {
expected string
params []interface{}
}{
{"Values / Positional Params", "INSERT INTO test (a, b, c) VALUES (?, 'e', ?)", false, `[{"pk()":1,"a":"d","b":"e","c":"f"}]`, []interface{}{"d", "f"}},
{"Values / Named Params", "INSERT INTO test (a, b, c) VALUES ($d, 'e', $f)", false, `[{"pk()":1,"a":"d","b":"e","c":"f"}]`, []interface{}{sql.Named("f", "f"), sql.Named("d", "d")}},
{"Values / Positional Params", "INSERT INTO test (a, b, c) VALUES (?, 'e', ?)", false, `[{"pk()":[1],"a":"d","b":"e","c":"f"}]`, []interface{}{"d", "f"}},
{"Values / Named Params", "INSERT INTO test (a, b, c) VALUES ($d, 'e', $f)", false, `[{"pk()":[1],"a":"d","b":"e","c":"f"}]`, []interface{}{sql.Named("f", "f"), sql.Named("d", "d")}},
{"Values / Invalid params", "INSERT INTO test (a, b, c) VALUES ('d', ?)", true, "", []interface{}{'e'}},
{"Documents / Named Params", "INSERT INTO test VALUES {a: $a, b: 2.3, c: $c}", false, `[{"pk()":1,"a":1,"b":2.3,"c":true}]`, []interface{}{sql.Named("c", true), sql.Named("a", 1)}},
{"Documents / List ", "INSERT INTO test VALUES {a: [1, 2, 3]}", false, `[{"pk()":1,"a":[1,2,3]}]`, nil},
{"Documents / Named Params", "INSERT INTO test VALUES {a: $a, b: 2.3, c: $c}", false, `[{"pk()":[1],"a":1,"b":2.3,"c":true}]`, []interface{}{sql.Named("c", true), sql.Named("a", 1)}},
{"Documents / List ", "INSERT INTO test VALUES {a: [1, 2, 3]}", false, `[{"pk()":[1],"a":[1,2,3]}]`, nil},
{"Select / same table", "INSERT INTO test SELECT * FROM test", true, ``, nil},
}
@@ -102,7 +102,7 @@ func TestInsertStmt(t *testing.T) {
d, err := db.QueryDocument(`insert into test (a) VALUES (1) RETURNING *, pk(), a AS A`)
assert.NoError(t, err)
testutil.RequireDocJSONEq(t, d, `{"a": 1, "pk()": 1, "A": 1}`)
testutil.RequireDocJSONEq(t, d, `{"a": 1, "pk()": [1], "A": 1}`)
})
t.Run("ensure rollback", func(t *testing.T) {
@@ -170,10 +170,10 @@ func TestInsertSelect(t *testing.T) {
params []interface{}
}{
{"Same table", `INSERT INTO foo SELECT * FROM foo`, true, ``, nil},
{"No fields / No projection", `INSERT INTO foo SELECT * FROM bar`, false, `[{"pk()":1, "a":1, "b":10}]`, nil},
{"No fields / Projection", `INSERT INTO foo SELECT a FROM bar`, false, `[{"pk()":1, "a":1}]`, nil},
{"With fields / No Projection", `INSERT INTO foo (a, b) SELECT * FROM bar`, false, `[{"pk()":1, "a":1, "b":10}]`, nil},
{"With fields / Projection", `INSERT INTO foo (c, d) SELECT a, b FROM bar`, false, `[{"pk()":1, "c":1, "d":10}]`, nil},
{"No fields / No projection", `INSERT INTO foo SELECT * FROM bar`, false, `[{"pk()":[1], "a":1, "b":10}]`, nil},
{"No fields / Projection", `INSERT INTO foo SELECT a FROM bar`, false, `[{"pk()":[1], "a":1}]`, nil},
{"With fields / No Projection", `INSERT INTO foo (a, b) SELECT * FROM bar`, false, `[{"pk()":[1], "a":1, "b":10}]`, nil},
{"With fields / Projection", `INSERT INTO foo (c, d) SELECT a, b FROM bar`, false, `[{"pk()":[1], "c":1, "d":10}]`, nil},
{"Too many fields / No Projection", `INSERT INTO foo (c) SELECT * FROM bar`, true, ``, nil},
{"Too many fields / Projection", `INSERT INTO foo (c, d) SELECT a, b, c FROM bar`, true, ``, nil},
{"Too few fields / No Projection", `INSERT INTO foo (c, d, e) SELECT * FROM bar`, true, ``, nil},