55 "strings"
66 "testing"
77
8- "github.com/google/go-cmp/cmp "
8+ pg_query "github.com/pganalyze/pg_query_go/v4 "
99
10- "github.com/sqlc-dev/sqlc/internal/debug"
1110 "github.com/sqlc-dev/sqlc/internal/sql/ast"
1211)
1312
@@ -16,11 +15,27 @@ func TestPrintAst(t *testing.T) {
1615
1716 queries := []string {
1817 `SELECT * FROM foo;` ,
18+ `SELECT *
19+ FROM foo;` ,
1920 `SELECT * FROM foo,bar;` ,
2021 `SELECT * FROM foo WHERE EXISTS (SELECT * FROM foo);` ,
2122 `WITH bar AS (SELECT * FROM foo), bat AS (SELECT 1) SELECT * FROM foo;` ,
2223 `SELECT t.* FROM foo t;` ,
2324 `SELECT *,*,foo.* FROM foo;` ,
25+ `SELECT 'foo';` ,
26+ `SELECT true;` ,
27+ `SELECT 1.2;` ,
28+ `SELECT "foo";` ,
29+ `SELECT * FROM foo LIMIT 1;` ,
30+ `SELECT * FROM foo OFFSET 1;` ,
31+ `SELECT * FROM foo LIMIT 1 OFFSET 1;` ,
32+ `SELECT * FROM foo ORDER BY name;` ,
33+ `SELECT DISTINCT * FROM foo;` ,
34+ `SELECT DISTINCT ON (location) location, time, report
35+ FROM weather_reports
36+ ORDER BY location, time DESC;` ,
37+ `SELECT * FROM (SELECT * FROM mytable FOR SHARE) ss WHERE col1 = 5;` ,
38+ `INSERT INTO myschema.foo (a, b) VALUES ($1, $2);` ,
2439 }
2540
2641 // Use astutils to look for select nodes
@@ -29,17 +44,27 @@ func TestPrintAst(t *testing.T) {
2944 for i , q := range queries {
3045 q := q
3146 t .Run (fmt .Sprintf ("%d" , i ), func (t * testing.T ) {
47+ expected , err := pg_query .Fingerprint (q )
48+ if err != nil {
49+ t .Fatal (err )
50+ }
3251 stmts , err := p .Parse (strings .NewReader (q ))
3352 if err != nil {
3453 t .Fatal (err )
3554 }
36- for _ , stmt := range stmts {
37- out := ast .Format (stmt .Raw )
38- if diff := cmp .Diff (q , out ); diff != "" {
39- debug .Dump (stmt )
40- t .Errorf ("- %s" , q )
41- t .Errorf ("+ %s" , out )
42- }
55+ if len (stmts ) != 1 {
56+ t .Fatal ("expected one statement" )
57+ }
58+ out := ast .Format (stmts [0 ].Raw )
59+ actual , err := pg_query .Fingerprint (out )
60+ if err != nil {
61+ t .Error (err )
62+ }
63+ if expected != actual {
64+ t .Errorf ("- %s" , expected )
65+ t .Errorf ("- %s" , q )
66+ t .Errorf ("+ %s" , actual )
67+ t .Errorf ("+ %s" , out )
4368 }
4469 })
4570 }
0 commit comments