Skip to content

Commit 97d5abc

Browse files
committed
chore: couple schema invariant test via sqlc.json
1 parent dec9457 commit 97d5abc

File tree

3 files changed

+88
-51
lines changed

3 files changed

+88
-51
lines changed

provider_test.go

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ package loosey
22

33
import (
44
"context"
5+
"encoding/json"
56
"errors"
67
"fmt"
78
"os"
8-
"path/filepath"
99
"strings"
1010
"testing"
1111
"testing/fstest"
@@ -82,23 +82,32 @@ func TestNewManager_WithEnv(t *testing.T) {
8282
}
8383

8484
func TestSchemaIsSubstringOfQueries(t *testing.T) {
85-
schemaFiles, err := filepath.Glob(filepath.FromSlash("internal/*/schema.sql"))
85+
var config struct {
86+
SQL []struct {
87+
Name string `json:"name"`
88+
Schema string `json:"schema"`
89+
Queries string `json:"queries"`
90+
} `json:"sql"`
91+
}
92+
configData, err := os.ReadFile("sqlc.json")
8693
if err != nil {
8794
t.Fatal(err)
8895
}
89-
for _, p := range schemaFiles {
90-
pkg := filepath.Dir(p)
91-
t.Run(pkg, func(t *testing.T) {
92-
schema, err := os.ReadFile(filepath.Join(pkg, "schema.sql"))
96+
if err := json.Unmarshal(configData, &config); err != nil {
97+
t.Fatal(err)
98+
}
99+
for _, entry := range config.SQL {
100+
t.Run(entry.Name, func(t *testing.T) {
101+
schema, err := os.ReadFile(entry.Schema)
93102
if err != nil {
94103
t.Fatal(err)
95104
}
96-
queries, err := os.ReadFile(filepath.Join(pkg, "queries.sql"))
105+
queries, err := os.ReadFile(entry.Queries)
97106
if err != nil {
98107
t.Fatal(err)
99108
}
100109
if !strings.Contains(string(queries), string(schema)) {
101-
t.Errorf("schema.sql is not a substring of queries.sql for %s", p)
110+
t.Errorf("schema.sql is not a substring of queries.sql for %s", entry.Schema)
102111
}
103112
})
104113
}

sqlc.json

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
{
2+
"version": "2",
3+
"sql": [
4+
{
5+
"name": "postgresql",
6+
"engine": "postgresql",
7+
"schema": "internal/postgres/schema.sql",
8+
"queries": "internal/postgres/queries.sql",
9+
"gen": {
10+
"go": {
11+
"package": "postgres",
12+
"out": "internal/postgres"
13+
}
14+
}
15+
},
16+
{
17+
"name": "sqlite",
18+
"engine": "sqlite",
19+
"schema": "internal/sqlite3/schema.sql",
20+
"queries": "internal/sqlite3/queries.sql",
21+
"gen": {
22+
"go": {
23+
"package": "sqlite3",
24+
"out": "internal/sqlite3",
25+
"overrides": [
26+
{
27+
"column": "goose_db_version.version_id",
28+
"go_type": "int64"
29+
}
30+
]
31+
}
32+
}
33+
},
34+
{
35+
"name": "mysql",
36+
"engine": "mysql",
37+
"schema": "internal/mysql/schema.sql",
38+
"queries": "internal/mysql/queries.sql",
39+
"gen": {
40+
"go": {
41+
"package": "mysql",
42+
"out": "internal/mysql",
43+
"overrides": [
44+
{
45+
"column": "goose_db_version.version_id",
46+
"go_type": "int64"
47+
}
48+
]
49+
}
50+
}
51+
},
52+
{
53+
"name": "libsql",
54+
"engine": "sqlite",
55+
"schema": "internal/libsql/schema.sql",
56+
"queries": "internal/libsql/queries.sql",
57+
"gen": {
58+
"go": {
59+
"package": "libsql",
60+
"out": "internal/libsql",
61+
"overrides": [
62+
{
63+
"column": "goose_db_version.version_id",
64+
"go_type": "int64"
65+
}
66+
]
67+
}
68+
}
69+
}
70+
]
71+
}

sqlc.yaml

Lines changed: 0 additions & 43 deletions
This file was deleted.

0 commit comments

Comments
 (0)