2025-02-13 14:52:26 +01:00
|
|
|
import unittest
|
|
|
|
|
2025-02-13 14:57:38 +01:00
|
|
|
from sqlglot.tokens import Tokenizer, TokenType
|
2025-02-13 14:52:26 +01:00
|
|
|
|
|
|
|
|
|
|
|
class TestTokens(unittest.TestCase):
|
|
|
|
def test_comment_attachment(self):
|
|
|
|
tokenizer = Tokenizer()
|
|
|
|
sql_comment = [
|
2025-02-13 14:55:11 +01:00
|
|
|
("/*comment*/ foo", ["comment"]),
|
|
|
|
("/*comment*/ foo --test", ["comment", "test"]),
|
|
|
|
("--comment\nfoo --test", ["comment", "test"]),
|
|
|
|
("foo --comment", ["comment"]),
|
|
|
|
("foo", []),
|
|
|
|
("foo /*comment 1*/ /*comment 2*/", ["comment 1", "comment 2"]),
|
2025-02-13 14:52:26 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
for sql, comment in sql_comment:
|
2025-02-13 14:55:11 +01:00
|
|
|
self.assertEqual(tokenizer.tokenize(sql)[0].comments, comment)
|
2025-02-13 14:57:38 +01:00
|
|
|
|
|
|
|
def test_jinja(self):
|
|
|
|
tokenizer = Tokenizer()
|
|
|
|
|
|
|
|
tokens = tokenizer.tokenize(
|
|
|
|
"""
|
|
|
|
SELECT
|
|
|
|
{{ x }},
|
|
|
|
{{- x -}},
|
|
|
|
{% for x in y -%}
|
|
|
|
a {{+ b }}
|
|
|
|
{% endfor %};
|
|
|
|
"""
|
|
|
|
)
|
|
|
|
|
|
|
|
tokens = [(token.token_type, token.text) for token in tokens]
|
|
|
|
|
|
|
|
self.assertEqual(
|
|
|
|
tokens,
|
|
|
|
[
|
|
|
|
(TokenType.SELECT, "SELECT"),
|
2025-02-13 15:24:45 +01:00
|
|
|
(TokenType.L_BRACE, "{"),
|
|
|
|
(TokenType.L_BRACE, "{"),
|
2025-02-13 14:57:38 +01:00
|
|
|
(TokenType.VAR, "x"),
|
2025-02-13 15:07:44 +01:00
|
|
|
(TokenType.R_BRACE, "}"),
|
|
|
|
(TokenType.R_BRACE, "}"),
|
2025-02-13 14:57:38 +01:00
|
|
|
(TokenType.COMMA, ","),
|
|
|
|
(TokenType.BLOCK_START, "{{-"),
|
|
|
|
(TokenType.VAR, "x"),
|
|
|
|
(TokenType.BLOCK_END, "-}}"),
|
|
|
|
(TokenType.COMMA, ","),
|
|
|
|
(TokenType.BLOCK_START, "{%"),
|
|
|
|
(TokenType.FOR, "for"),
|
|
|
|
(TokenType.VAR, "x"),
|
|
|
|
(TokenType.IN, "in"),
|
|
|
|
(TokenType.VAR, "y"),
|
|
|
|
(TokenType.BLOCK_END, "-%}"),
|
|
|
|
(TokenType.VAR, "a"),
|
|
|
|
(TokenType.BLOCK_START, "{{+"),
|
|
|
|
(TokenType.VAR, "b"),
|
2025-02-13 15:07:44 +01:00
|
|
|
(TokenType.R_BRACE, "}"),
|
|
|
|
(TokenType.R_BRACE, "}"),
|
2025-02-13 14:57:38 +01:00
|
|
|
(TokenType.BLOCK_START, "{%"),
|
|
|
|
(TokenType.VAR, "endfor"),
|
|
|
|
(TokenType.BLOCK_END, "%}"),
|
|
|
|
(TokenType.SEMICOLON, ";"),
|
|
|
|
],
|
|
|
|
)
|