summaryrefslogtreecommitdiffstats
path: root/tests/test_templates.py
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--tests/test_templates.py130
1 files changed, 130 insertions, 0 deletions
diff --git a/tests/test_templates.py b/tests/test_templates.py
new file mode 100644
index 0000000..9ed816f
--- /dev/null
+++ b/tests/test_templates.py
@@ -0,0 +1,130 @@
+import pytest
+
+from pygments.lexers.templates import JavascriptDjangoLexer, MasonLexer, \
+ SqlJinjaLexer, VelocityLexer
+
+from pygments.token import Comment
+
+
+@pytest.fixture(scope="module")
+def lexer():
+ yield JavascriptDjangoLexer()
+
+@pytest.fixture(scope='module')
+def lexerMason():
+ yield MasonLexer()
+
+@pytest.fixture(scope='module')
+def lexerVelocity():
+ yield VelocityLexer()
+
+@pytest.fixture(scope='module')
+def lexerSqlJinja():
+ yield SqlJinjaLexer()
+
+def test_do_not_mistake_JSDoc_for_django_comment(lexer):
+ """
+ Test to make sure the lexer doesn't mistake
+ {* ... *} to be a django comment
+ """
+ text = """/**
+ * @param {*} cool
+ */
+ func = function(cool) {
+ };
+
+ /**
+ * @param {*} stuff
+ */
+ fun = function(stuff) {
+ };"""
+ tokens = lexer.get_tokens(text)
+ assert not any(t[0] == Comment for t in tokens)
+
+def test_mason_unnamed_block(lexerMason):
+ text = """
+ <%class>
+ has 'foo';
+ has 'bar' => (required => 1);
+ has 'baz' => (isa => 'Int', default => 17);
+ </%class>
+ """
+ res = lexerMason.analyse_text(text)
+ assert res == 1.0
+
+def test_velocity_macro(lexerVelocity):
+ text = """
+ #macro(getBookListLink, $readingTrackerResult)
+ $readingTrackerResult.getBookListLink()
+ #end
+ """
+ res = lexerVelocity.analyse_text(text)
+ assert res == 0.26
+
+def test_velocity_foreach(lexerVelocity):
+ text = """
+ <ul>
+ #foreach( $product in $allProducts )
+ <li>$product</li>
+ #end
+ </ul>
+ """
+ res = lexerVelocity.analyse_text(text)
+ assert res == 0.16
+
+def test_velocity_if(lexerVelocity):
+ text = """
+ #if( $display )
+ <strong>Velocity!</strong>
+ #end
+ """
+ res = lexerVelocity.analyse_text(text)
+ assert res == 0.16
+
+def test_velocity_reference(lexerVelocity):
+ text = """
+ Hello $name! Welcome to Velocity!
+ """
+ res = lexerVelocity.analyse_text(text)
+ assert res == 0.01
+
+def test_sql_jinja_dbt_ref(lexerSqlJinja):
+ text = """
+ {%- set payment_methods = ["bank_transfer", "credit_card", "gift_card"] -%}
+
+ select
+ order_id,
+ {%- for payment_method in payment_methods %}
+ sum(case when payment_method = '{{payment_method}}' then amount end) as {{payment_method}}_amount
+ {%- if not loop.last %},{% endif -%}
+ {% endfor %}
+ from {{ ref('raw_payments') }}
+ group by 1
+ """
+ res = lexerSqlJinja.analyse_text(text)
+ assert res == 0.4
+
+def test_sql_jinja_dbt_source(lexerSqlJinja):
+ text = """
+ {%- set payment_methods = ["bank_transfer", "credit_card", "gift_card"] -%}
+
+ select
+ order_id,
+ {%- for payment_method in payment_methods %}
+ sum(case when payment_method = '{{payment_method}}' then amount end) as {{payment_method}}_amount
+ {%- if not loop.last %},{% endif -%}
+ {% endfor %}
+ from {{ source('payments_db', 'payments') }}
+ group by 1
+ """
+ res = lexerSqlJinja.analyse_text(text)
+ assert res == 0.25
+
+def test_sql_jinja_dbt_macro(lexerSqlJinja):
+ text = """
+ {% macro cents_to_dollars(column_name, precision=2) %}
+ ({{ column_name }} / 100)::numeric(16, {{ precision }})
+ {% endmacro %}
+ """
+ res = lexerSqlJinja.analyse_text(text)
+ assert res == 0.15