Skip to content

Commit 962fcfd

Browse files
file snapshots
1 parent d08a08e commit 962fcfd

File tree

7 files changed

+266
-249
lines changed

7 files changed

+266
-249
lines changed
Lines changed: 24 additions & 249 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
use std::fmt::Write;
2+
13
use insta::assert_snapshot;
24

35
fn printed_tree(sql: &str) -> String {
@@ -10,28 +12,25 @@ fn printed_tree(sql: &str) -> String {
1012
result
1113
}
1214

15+
fn file_snapshot(name: &str, sql: &str) {
16+
let mut writer = String::new();
17+
18+
write!(&mut writer, "{}", sql).unwrap();
19+
20+
writeln!(&mut writer).unwrap();
21+
write!(&mut writer, "-----------------------").unwrap();
22+
writeln!(&mut writer).unwrap();
23+
24+
write!(&mut writer, "{}", printed_tree(sql)).unwrap();
25+
26+
assert_snapshot!(name, writer);
27+
}
28+
1329
#[test]
1430
fn test_1() {
1531
let sql = "select * from auth.users;";
1632

17-
assert_snapshot!(printed_tree(sql), @r"
18-
program [0..25] 'select * from auth.users;'
19-
statement [0..24] 'select * from auth.users'
20-
select [0..8] 'select *'
21-
keyword_select [0..6] 'select'
22-
select_expression [7..8] '*'
23-
term [7..8] '*'
24-
all_fields [7..8] '*'
25-
* [7..8] '*'
26-
from [9..24] 'from auth.users'
27-
keyword_from [9..13] 'from'
28-
relation [14..24] 'auth.users'
29-
table_reference [14..24] 'auth.users'
30-
schema_identifier [14..18] 'auth'
31-
. [18..19] '.'
32-
table_identifier [19..24] 'users'
33-
; [24..25] ';'
34-
");
33+
file_snapshot("test_1", sql);
3534
}
3635

3736
#[test]
@@ -40,68 +39,9 @@ fn test_2() {
4039
let sql2 = "update auth.users set users.email = '[email protected]';";
4140
let sql3 = "update auth.users set auth.users.email = '[email protected]';";
4241

43-
assert_snapshot!(printed_tree(sql1), @r"
44-
program [0..44] 'update auth.users set email = '[email protected]';'
45-
statement [0..43] 'update auth.users set email = '[email protected]''
46-
update [0..43] 'update auth.users set email = '[email protected]''
47-
keyword_update [0..6] 'update'
48-
relation [7..17] 'auth.users'
49-
table_reference [7..17] 'auth.users'
50-
schema_identifier [7..11] 'auth'
51-
. [11..12] '.'
52-
table_identifier [12..17] 'users'
53-
keyword_set [18..21] 'set'
54-
assignment [22..43] 'email = '[email protected]''
55-
column_reference [22..27] 'email'
56-
any_identifier [22..27] 'email'
57-
= [28..29] '='
58-
literal [30..43] ''[email protected]''
59-
; [43..44] ';'
60-
");
61-
62-
assert_snapshot!(printed_tree(sql2), @r"
63-
program [0..50] 'update auth.users set users.email = '[email protected]';'
64-
statement [0..49] 'update auth.users set users.email = '[email protected]''
65-
update [0..49] 'update auth.users set users.email = '[email protected]''
66-
keyword_update [0..6] 'update'
67-
relation [7..17] 'auth.users'
68-
table_reference [7..17] 'auth.users'
69-
schema_identifier [7..11] 'auth'
70-
. [11..12] '.'
71-
table_identifier [12..17] 'users'
72-
keyword_set [18..21] 'set'
73-
assignment [22..49] 'users.email = '[email protected]''
74-
column_reference [22..33] 'users.email'
75-
any_identifier [22..27] 'users'
76-
. [27..28] '.'
77-
any_identifier [28..33] 'email'
78-
= [34..35] '='
79-
literal [36..49] ''[email protected]''
80-
; [49..50] ';'
81-
");
82-
83-
assert_snapshot!(printed_tree(sql3), @r"
84-
program [0..55] 'update auth.users set auth.users.email = '[email protected]';'
85-
statement [0..54] 'update auth.users set auth.users.email = '[email protected]''
86-
update [0..54] 'update auth.users set auth.users.email = '[email protected]''
87-
keyword_update [0..6] 'update'
88-
relation [7..17] 'auth.users'
89-
table_reference [7..17] 'auth.users'
90-
schema_identifier [7..11] 'auth'
91-
. [11..12] '.'
92-
table_identifier [12..17] 'users'
93-
keyword_set [18..21] 'set'
94-
assignment [22..54] 'auth.users.email = '[email protected]''
95-
column_reference [22..38] 'auth.users.email'
96-
schema_identifier [22..26] 'auth'
97-
. [26..27] '.'
98-
table_identifier [27..32] 'users'
99-
. [32..33] '.'
100-
column_identifier [33..38] 'email'
101-
= [39..40] '='
102-
literal [41..54] ''[email protected]''
103-
; [54..55] ';'
104-
");
42+
file_snapshot("test_2_sql1", sql1);
43+
file_snapshot("test_2_sql2", sql2);
44+
file_snapshot("test_2_sql3", sql3);
10545
}
10646

10747
#[test]
@@ -119,84 +59,14 @@ from
11959
12060
"#;
12161

122-
assert_snapshot!(printed_tree(sql), @r"
123-
program [0..25] 'select u.id, u.email, cs.user_settings, cs.client_id from auth.users u join public.client_settings cs on u.id = cs.user_id;'
124-
statement [0..24] 'select u.id, u.email, cs.user_settings, cs.client_id from auth.users u join public.client_settings cs on u.id = cs.user_id'
125-
select [0..16] 'select u.id, u.email, cs.user_settings, cs.client_id'
126-
keyword_select [0..6] 'select'
127-
select_expression [4..16] 'u.id, u.email, cs.user_settings, cs.client_id'
128-
term [4..8] 'u.id'
129-
object_reference [4..8] 'u.id'
130-
any_identifier [4..5] 'u'
131-
. [5..6] '.'
132-
any_identifier [6..8] 'id'
133-
, [8..9] ','
134-
term [4..11] 'u.email'
135-
object_reference [4..11] 'u.email'
136-
any_identifier [4..5] 'u'
137-
. [5..6] '.'
138-
any_identifier [6..11] 'email'
139-
, [11..12] ','
140-
term [4..20] 'cs.user_settings'
141-
object_reference [4..20] 'cs.user_settings'
142-
any_identifier [4..6] 'cs'
143-
. [6..7] '.'
144-
any_identifier [7..20] 'user_settings'
145-
, [20..21] ','
146-
term [4..16] 'cs.client_id'
147-
object_reference [4..16] 'cs.client_id'
148-
any_identifier [4..6] 'cs'
149-
. [6..7] '.'
150-
any_identifier [7..16] 'client_id'
151-
from [0..24] 'from auth.users u join public.client_settings cs on u.id = cs.user_id'
152-
keyword_from [0..4] 'from'
153-
relation [4..16] 'auth.users u'
154-
table_reference [4..14] 'auth.users'
155-
schema_identifier [4..8] 'auth'
156-
. [8..9] '.'
157-
table_identifier [9..14] 'users'
158-
alias [15..16] 'u'
159-
any_identifier [15..16] 'u'
160-
join [4..24] 'join public.client_settings cs on u.id = cs.user_id'
161-
keyword_join [4..8] 'join'
162-
relation [9..34] 'public.client_settings cs'
163-
table_reference [9..31] 'public.client_settings'
164-
schema_identifier [9..15] 'public'
165-
. [15..16] '.'
166-
table_identifier [16..31] 'client_settings'
167-
alias [32..34] 'cs'
168-
any_identifier [32..34] 'cs'
169-
keyword_on [4..6] 'on'
170-
binary_expression [7..24] 'u.id = cs.user_id'
171-
object_reference [7..11] 'u.id'
172-
any_identifier [7..8] 'u'
173-
. [8..9] '.'
174-
any_identifier [9..11] 'id'
175-
= [12..13] '='
176-
object_reference [14..24] 'cs.user_id'
177-
any_identifier [14..16] 'cs'
178-
. [16..17] '.'
179-
any_identifier [17..24] 'user_id'
180-
; [24..25] ';'
181-
");
62+
file_snapshot("test_3", sql);
18263
}
18364

18465
#[test]
18566
fn test_4() {
18667
let sql = r#"select "auth".REPLACED_TOKEN"#;
18768

188-
assert_snapshot!(printed_tree(sql), @r#"
189-
program [0..28] 'select "auth".REPLACED_TOKEN'
190-
statement [0..28] 'select "auth".REPLACED_TOKEN'
191-
select [0..28] 'select "auth".REPLACED_TOKEN'
192-
keyword_select [0..6] 'select'
193-
select_expression [7..28] '"auth".REPLACED_TOKEN'
194-
term [7..28] '"auth".REPLACED_TOKEN'
195-
object_reference [7..28] '"auth".REPLACED_TOKEN'
196-
any_identifier [7..13] '"auth"'
197-
. [13..14] '.'
198-
any_identifier [14..28] 'REPLACED_TOKEN'
199-
"#);
69+
file_snapshot("test_4", sql);
20070
}
20171

20272
#[test]
@@ -206,55 +76,7 @@ fn test_5() {
20676
where u.active = true and (u.role = 'admin' or u.role = 'moderator');
20777
"#;
20878

209-
assert_snapshot!(printed_tree(sql), @r"
210-
program [0..71] 'select * from users u where u.active = true and (u.role = 'admin' or u.role = 'moderator');'
211-
statement [0..70] 'select * from users u where u.active = true and (u.role = 'admin' or u.role = 'moderator')'
212-
select [0..8] 'select *'
213-
keyword_select [0..6] 'select'
214-
select_expression [7..8] '*'
215-
term [7..8] '*'
216-
all_fields [7..8] '*'
217-
* [7..8] '*'
218-
from [9..70] 'from users u where u.active = true and (u.role = 'admin' or u.role = 'moderator')'
219-
keyword_from [9..13] 'from'
220-
relation [14..21] 'users u'
221-
table_reference [14..19] 'users'
222-
any_identifier [14..19] 'users'
223-
alias [20..21] 'u'
224-
any_identifier [20..21] 'u'
225-
where [2..70] 'where u.active = true and (u.role = 'admin' or u.role = 'moderator')'
226-
keyword_where [2..7] 'where'
227-
binary_expression [8..70] 'u.active = true and (u.role = 'admin' or u.role = 'moderator')'
228-
binary_expression [8..23] 'u.active = true'
229-
object_reference [8..16] 'u.active'
230-
any_identifier [8..9] 'u'
231-
. [9..10] '.'
232-
any_identifier [10..16] 'active'
233-
= [17..18] '='
234-
literal [19..23] 'true'
235-
keyword_true [19..23] 'true'
236-
keyword_and [24..27] 'and'
237-
parenthesized_expression [28..70] '(u.role = 'admin' or u.role = 'moderator')'
238-
( [28..29] '('
239-
binary_expression [29..69] 'u.role = 'admin' or u.role = 'moderator''
240-
binary_expression [29..45] 'u.role = 'admin''
241-
object_reference [29..35] 'u.role'
242-
any_identifier [29..30] 'u'
243-
. [30..31] '.'
244-
any_identifier [31..35] 'role'
245-
= [36..37] '='
246-
literal [38..45] ''admin''
247-
keyword_or [46..48] 'or'
248-
binary_expression [49..69] 'u.role = 'moderator''
249-
object_reference [49..55] 'u.role'
250-
any_identifier [49..50] 'u'
251-
. [50..51] '.'
252-
any_identifier [51..55] 'role'
253-
= [56..57] '='
254-
literal [58..69] ''moderator''
255-
) [69..70] ')'
256-
; [70..71] ';'
257-
");
79+
file_snapshot("test_5", sql);
25880
}
25981

26082
#[test]
@@ -263,52 +85,5 @@ fn test_6() {
26385
select (create_composite_type(a, b)).email, (schema.actual_type).id, client from client_settings;
26486
"#;
26587

266-
assert_snapshot!(printed_tree(sql), @r"
267-
program [0..97] 'select (create_composite_type(a, b)).email, (schema.actual_type).id, client from client_settings;'
268-
statement [0..96] 'select (create_composite_type(a, b)).email, (schema.actual_type).id, client from client_settings'
269-
select [0..75] 'select (create_composite_type(a, b)).email, (schema.actual_type).id, client'
270-
keyword_select [0..6] 'select'
271-
select_expression [7..75] '(create_composite_type(a, b)).email, (schema.actual_type).id, client'
272-
term [7..42] '(create_composite_type(a, b)).email'
273-
field_selection [7..42] '(create_composite_type(a, b)).email'
274-
parenthesized_expression [7..36] '(create_composite_type(a, b))'
275-
( [7..8] '('
276-
invocation [8..35] 'create_composite_type(a, b)'
277-
function_reference [8..29] 'create_composite_type'
278-
any_identifier [8..29] 'create_composite_type'
279-
( [29..30] '('
280-
term [30..31] 'a'
281-
object_reference [30..31] 'a'
282-
any_identifier [30..31] 'a'
283-
, [31..32] ','
284-
term [33..34] 'b'
285-
object_reference [33..34] 'b'
286-
any_identifier [33..34] 'b'
287-
) [34..35] ')'
288-
) [35..36] ')'
289-
. [36..37] '.'
290-
any_identifier [37..42] 'email'
291-
, [42..43] ','
292-
term [44..67] '(schema.actual_type).id'
293-
field_selection [44..67] '(schema.actual_type).id'
294-
composite_reference [44..64] '(schema.actual_type)'
295-
( [44..45] '('
296-
object_reference [45..63] 'schema.actual_type'
297-
any_identifier [45..51] 'schema'
298-
. [51..52] '.'
299-
any_identifier [52..63] 'actual_type'
300-
) [63..64] ')'
301-
. [64..65] '.'
302-
any_identifier [65..67] 'id'
303-
, [67..68] ','
304-
term [69..75] 'client'
305-
object_reference [69..75] 'client'
306-
any_identifier [69..75] 'client'
307-
from [76..96] 'from client_settings'
308-
keyword_from [76..80] 'from'
309-
relation [81..96] 'client_settings'
310-
table_reference [81..96] 'client_settings'
311-
any_identifier [81..96] 'client_settings'
312-
; [96..97] ';'
313-
");
88+
file_snapshot("test_6", sql);
31489
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
---
2+
source: crates/pgls_treesitter_grammar/tests/grammar_tests.rs
3+
expression: writer
4+
---
5+
select * from auth.users;
6+
-----------------------
7+
program [0..25] 'select * from auth.users;'
8+
statement [0..24] 'select * from auth.users'
9+
select [0..8] 'select *'
10+
keyword_select [0..6] 'select'
11+
select_expression [7..8] '*'
12+
term [7..8] '*'
13+
all_fields [7..8] '*'
14+
* [7..8] '*'
15+
from [9..24] 'from auth.users'
16+
keyword_from [9..13] 'from'
17+
relation [14..24] 'auth.users'
18+
table_reference [14..24] 'auth.users'
19+
schema_identifier [14..18] 'auth'
20+
. [18..19] '.'
21+
table_identifier [19..24] 'users'
22+
; [24..25] ';'
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
---
2+
source: crates/pgls_treesitter_grammar/tests/grammar_tests.rs
3+
expression: writer
4+
---
5+
update auth.users set email = '[email protected]';
6+
-----------------------
7+
program [0..44] 'update auth.users set email = 'my@mail.com';'
8+
statement [0..43] 'update auth.users set email = 'my@mail.com''
9+
update [0..43] 'update auth.users set email = 'my@mail.com''
10+
keyword_update [0..6] 'update'
11+
relation [7..17] 'auth.users'
12+
table_reference [7..17] 'auth.users'
13+
schema_identifier [7..11] 'auth'
14+
. [11..12] '.'
15+
table_identifier [12..17] 'users'
16+
keyword_set [18..21] 'set'
17+
assignment [22..43] 'email = 'my@mail.com''
18+
column_reference [22..27] 'email'
19+
any_identifier [22..27] 'email'
20+
= [28..29] '='
21+
literal [30..43] ''my@mail.com''
22+
; [43..44] ';'

0 commit comments

Comments
 (0)