Skip to content

Commit 44f9b79

Browse files
committed
OMG wow
1 parent 2ef6a61 commit 44f9b79

File tree

1 file changed

+99
-0
lines changed

1 file changed

+99
-0
lines changed
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
import { Parser } from '@pgsql/parser';
2+
import { deparse } from 'pgsql-deparser';
3+
import { PG13ToPG17Transformer } from '../src/transformer';
4+
5+
import generated from '../../../__fixtures__/generated/generated.json';
6+
import { cleanTree } from '../test-utils/clean-tree';
7+
8+
describe('Full Transform Flow Tests', () => {
9+
const testFiles = [
10+
'original/upstream/plpgsql-86.sql',
11+
'original/upstream/plpgsql-202.sql',
12+
'original/upstream/plpgsql-203.sql',
13+
'original/upstream/plpgsql-204.sql',
14+
'original/upstream/plpgsql-205.sql',
15+
'original/upstream/plpgsql-206.sql',
16+
'original/upstream/plpgsql-207.sql',
17+
'original/upstream/plpgsql-208.sql',
18+
'original/upstream/plpgsql-209.sql',
19+
'original/upstream/plpgsql-210.sql',
20+
'original/upstream/plpgsql-211.sql',
21+
'original/upstream/plpgsql-212.sql',
22+
'original/upstream/plpgsql-213.sql',
23+
'original/upstream/plpgsql-214.sql',
24+
'original/upstream/plpgsql-215.sql',
25+
'original/upstream/plpgsql-216.sql',
26+
'original/upstream/plpgsql-217.sql',
27+
'original/upstream/plpgsql-218.sql',
28+
'original/upstream/plpgsql-219.sql',
29+
'original/upstream/plpgsql-220.sql',
30+
'original/upstream/plpgsql-221.sql',
31+
'original/upstream/plpgsql-222.sql',
32+
'original/upstream/plpgsql-223.sql',
33+
"pretty/select_statements-1.sql",
34+
"pretty/select_statements-2.sql",
35+
"pretty/select_statements-3.sql",
36+
"pretty/select_statements-4.sql",
37+
"pretty/select_statements-5.sql",
38+
"pretty/select_statements-6.sql",
39+
"pretty/misc-1.sql",
40+
"pretty/misc-2.sql",
41+
"pretty/misc-3.sql",
42+
"pretty/misc-4.sql",
43+
"pretty/misc-5.sql",
44+
"pretty/misc-6.sql",
45+
"pretty/misc-7.sql",
46+
"pretty/misc-8.sql",
47+
"pretty/misc-9.sql",
48+
"pretty/misc-10.sql",
49+
"pretty/misc-11.sql",
50+
"pretty/misc-12.sql",
51+
"pretty/misc-13.sql",
52+
"pretty/create_table-1.sql",
53+
"pretty/create_table-2.sql",
54+
"pretty/create_table-3.sql",
55+
"pretty/create_table-4.sql",
56+
"pretty/create_table-5.sql",
57+
"pretty/create_policy-1.sql",
58+
"pretty/create_policy-2.sql",
59+
"pretty/create_policy-3.sql",
60+
"pretty/create_policy-4.sql",
61+
"pretty/constraints-1.sql",
62+
"pretty/constraints-2.sql",
63+
"pretty/constraints-4.sql",
64+
];
65+
66+
// Initialize parsers and transformer once for all tests
67+
const pg13Parser = new Parser(13);
68+
const pg17Parser = new Parser(17);
69+
const transformer = new PG13ToPG17Transformer();
70+
71+
testFiles.forEach((filename) => {
72+
it(`tests end-to-end flow for ${filename}`, async () => {
73+
const sql = generated[filename as keyof typeof generated];
74+
75+
// Step 1: Parse with PG13
76+
const pg13Ast = await pg13Parser.parse(sql);
77+
78+
// Step 2: Transform PG13 → PG17
79+
const pg17Ast = transformer.transform(pg13Ast);
80+
81+
// Step 3: Deparse with PG17 deparser
82+
const deparsedSql = await deparse(pg17Ast, {
83+
pretty: true
84+
});
85+
86+
// Step 4: Parse with PG13
87+
const pg13Ast2 = await pg13Parser.parse(deparsedSql);
88+
89+
// Step 5: Compare the two ASTs
90+
expect(cleanTree(pg13Ast2)).toEqual(cleanTree(pg13Ast));
91+
92+
console.log(`Result for ${filename}:`, deparsedSql);
93+
94+
// Add assertions here if needed
95+
expect(deparsedSql).toBeDefined();
96+
expect(typeof deparsedSql).toBe('string');
97+
});
98+
});
99+
});

0 commit comments

Comments
 (0)