summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Heisterkamp <simon@heisterkamp.dk>2022-11-30 14:52:13 +0000
committerAndi Albrecht <albrecht.andi@gmail.com>2023-01-02 08:54:47 +0100
commite37eaea4a78cbb335070ffec018bfc28425aa1a4 (patch)
tree42369f4b7d883be2ad051403db6340d7730445c0
parent9a1cb5dddd1545c30b1e3a2c6f5d3514d079d93e (diff)
downloadsqlparse-e37eaea4a78cbb335070ffec018bfc28425aa1a4.tar.gz
test configurable syntax
-rw-r--r--tests/test_parse.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/test_parse.py b/tests/test_parse.py
index ec327ac..c5dfd36 100644
--- a/tests/test_parse.py
+++ b/tests/test_parse.py
@@ -5,6 +5,7 @@ import pytest
import sqlparse
from sqlparse import sql, tokens as T
+from sqlparse.lexer import Lexer
def test_parse_tokenize():
@@ -489,3 +490,45 @@ def test_parenthesis():
T.Newline,
T.Newline,
T.Punctuation]
+
+
+def test_configurable_syntax():
+ sql = """select * from foo BACON SPAM EGGS;"""
+ # sql="""select * from mydb.mytable BACON SPAM EGGS;"""
+ tokens = sqlparse.parse(sql)[0]
+
+ assert list(
+ (t.ttype, t.value) for t in tokens if t.ttype not in sqlparse.tokens.Whitespace
+ ) == [
+ (sqlparse.tokens.Keyword.DML, "select"),
+ (sqlparse.tokens.Wildcard, "*"),
+ (sqlparse.tokens.Keyword, "from"),
+ (None, "foo BACON"),
+ (None, "SPAM EGGS"),
+ (sqlparse.tokens.Punctuation, ";"),
+ ]
+
+ Lexer().add_keywords(
+ {
+ "BACON": sqlparse.tokens.Name.Builtin,
+ "SPAM": sqlparse.tokens.Keyword,
+ "EGGS": sqlparse.tokens.Keyword,
+ }
+ )
+
+ tokens = sqlparse.parse(sql)[0]
+
+ assert list(
+ (t.ttype, t.value) for t in tokens if t.ttype not in sqlparse.tokens.Whitespace
+ ) == [
+ (sqlparse.tokens.Keyword.DML, "select"),
+ (sqlparse.tokens.Wildcard, "*"),
+ (sqlparse.tokens.Keyword, "from"),
+ (None, "foo"),
+ (sqlparse.tokens.Name.Builtin, "BACON"),
+ (sqlparse.tokens.Keyword, "SPAM"),
+ (sqlparse.tokens.Keyword, "EGGS"),
+ (sqlparse.tokens.Punctuation, ";"),
+ ]
+ # reset the syntax for later tests.
+ Lexer().default_initialization()