summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorSimon Heisterkamp <simon@heisterkamp.dk>2022-11-30 22:34:52 +0000
committerAndi Albrecht <albrecht.andi@gmail.com>2023-01-02 08:54:47 +0100
commitf9a73a62cfc23b10c38f22a10bd1d4c3edbb286f (patch)
treec96c5fcd8e93308456377b1926807fbdf9b912a6 /tests
parent8515d2edd70fc16d69aa7b1094f9b3534dfa74d9 (diff)
downloadsqlparse-f9a73a62cfc23b10c38f22a10bd1d4c3edbb286f.tar.gz
test for changing the regex
Diffstat (limited to 'tests')
-rw-r--r--tests/test_parse.py34
1 files changed, 31 insertions, 3 deletions
diff --git a/tests/test_parse.py b/tests/test_parse.py
index 3018d9a..3ac6500 100644
--- a/tests/test_parse.py
+++ b/tests/test_parse.py
@@ -1,10 +1,11 @@
"""Tests sqlparse.parse()."""
+import re
from io import StringIO
import pytest
import sqlparse
-from sqlparse import sql, tokens as T
+from sqlparse import sql, tokens as T, keywords
from sqlparse.lexer import Lexer
@@ -491,8 +492,7 @@ def test_parenthesis():
T.Newline,
T.Punctuation]
-
-def test_configurable_syntax():
+def test_configurable_keywords():
sql = """select * from foo BACON SPAM EGGS;"""
tokens = sqlparse.parse(sql)[0]
@@ -517,6 +517,9 @@ def test_configurable_syntax():
tokens = sqlparse.parse(sql)[0]
+ # reset the syntax for later tests.
+ Lexer().default_initialization()
+
assert list(
(t.ttype, t.value) for t in tokens if t.ttype not in sqlparse.tokens.Whitespace
) == [
@@ -529,5 +532,30 @@ def test_configurable_syntax():
(sqlparse.tokens.Keyword, "EGGS"),
(sqlparse.tokens.Punctuation, ";"),
]
+
+
+def test_configurable_regex():
+ lex = Lexer()
+ lex.clear()
+
+ my_regex = (
+ re.compile(r"ZORDER\s+BY\b", keywords.FLAGS).match,
+ sqlparse.tokens.Keyword,
+ )
+
+ lex.set_SQL_REGEX(keywords.SQL_REGEX[:38] + [my_regex] + keywords.SQL_REGEX[38:])
+ lex.add_keywords(keywords.KEYWORDS_COMMON)
+ lex.add_keywords(keywords.KEYWORDS_ORACLE)
+ lex.add_keywords(keywords.KEYWORDS_PLPGSQL)
+ lex.add_keywords(keywords.KEYWORDS_HQL)
+ lex.add_keywords(keywords.KEYWORDS_MSACCESS)
+ lex.add_keywords(keywords.KEYWORDS)
+
+ tokens = sqlparse.parse("select * from foo zorder by bar;")[0]
+
# reset the syntax for later tests.
Lexer().default_initialization()
+
+ assert list(
+ (t.ttype, t.value) for t in tokens if t.ttype not in sqlparse.tokens.Whitespace
+ )[4] == (sqlparse.tokens.Keyword, "zorder by")