From bd4b0500a7bf62cef49885a72342b42bc99010e4 Mon Sep 17 00:00:00 2001 From: Colin Harrison Date: Thu, 22 Jan 2026 12:53:52 -0800 Subject: [PATCH 1/3] add basic e2e test --- tests/test_parser_fomatter_e2e.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 tests/test_parser_fomatter_e2e.py diff --git a/tests/test_parser_fomatter_e2e.py b/tests/test_parser_fomatter_e2e.py new file mode 100644 index 0000000..8749965 --- /dev/null +++ b/tests/test_parser_fomatter_e2e.py @@ -0,0 +1,24 @@ +from core.query_formatter import QueryFormatter +from core.query_parser import QueryParser +from re import sub +from mo_sql_parsing import parse, format + +formatter = QueryFormatter() +parser = QueryParser() + + +def test_basic_format(): + original_sql = """ + SELECT e.name, d.name as dept_name, COUNT(*) as emp_count + FROM employees e JOIN departments d ON e.department_id = d.id + WHERE e.salary > 40000 AND e.age < 60 + GROUP BY d.id, d.name + HAVING COUNT(*) > 2 + ORDER BY dept_name, emp_count DESC + LIMIT 10 OFFSET 5 + """ + + parsed_ast = parser.parse(original_sql) + formatted_sql = formatter.format(parsed_ast) + + assert parse(formatted_sql) == parse(original_sql) \ No newline at end of file From ffd9a4c8281373386015c6d002de5c10c242394a Mon Sep 17 00:00:00 2001 From: Colin Harrison Date: Thu, 22 Jan 2026 12:54:06 -0800 Subject: [PATCH 2/3] add comment --- tests/test_parser_fomatter_e2e.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/tests/test_parser_fomatter_e2e.py b/tests/test_parser_fomatter_e2e.py index 8749965..fa31944 100644 --- a/tests/test_parser_fomatter_e2e.py +++ b/tests/test_parser_fomatter_e2e.py @@ -1,13 +1,11 @@ from core.query_formatter import QueryFormatter from core.query_parser import QueryParser -from re import sub -from mo_sql_parsing import parse, format +from mo_sql_parsing import parse formatter = QueryFormatter() parser = QueryParser() - -def test_basic_format(): +def test_basic_e2e(): original_sql = """ SELECT e.name, d.name as dept_name, COUNT(*) as emp_count FROM employees e JOIN departments d ON e.department_id = d.id @@ -17,8 +15,8 @@ def test_basic_format(): ORDER BY dept_name, emp_count DESC LIMIT 10 OFFSET 5 """ - parsed_ast = parser.parse(original_sql) formatted_sql = formatter.format(parsed_ast) + # test our output is semantically equivalent to input using mo_sql_parsing assert parse(formatted_sql) == parse(original_sql) \ No newline at end of file From 01984d07997a565b1bd13c45f5e553a160daa095 Mon Sep 17 00:00:00 2001 From: Colin Harrison Date: Thu, 22 Jan 2026 12:59:27 -0800 Subject: [PATCH 3/3] fix typo --- .../{test_parser_fomatter_e2e.py => test_parser_formatter_e2e.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename tests/{test_parser_fomatter_e2e.py => test_parser_formatter_e2e.py} (100%) diff --git a/tests/test_parser_fomatter_e2e.py b/tests/test_parser_formatter_e2e.py similarity index 100% rename from tests/test_parser_fomatter_e2e.py rename to tests/test_parser_formatter_e2e.py