From 15827c87f251d03c0dd750b55c7e9be31c802d7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaros=C5=82aw=20Za=C5=82ucki?= Date: Fri, 20 Dec 2024 09:43:21 +0100 Subject: [PATCH 1/2] Remove autoescape from jinja - allow to use special chars in variables. --- soda/core/soda/common/jinja.py | 2 +- .../test_user_defined_metric_checks.py | 25 +++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/soda/core/soda/common/jinja.py b/soda/core/soda/common/jinja.py index b98a41205..54a198182 100644 --- a/soda/core/soda/common/jinja.py +++ b/soda/core/soda/common/jinja.py @@ -19,7 +19,7 @@ def resolve_or_missing(self, key): def create_os_environment(): - environment = SandboxedEnvironment(variable_start_string="${", variable_end_string="}", autoescape=True) + environment = SandboxedEnvironment(variable_start_string="${", variable_end_string="}") environment.context_class = OsContext return environment diff --git a/soda/core/tests/data_source/test_user_defined_metric_checks.py b/soda/core/tests/data_source/test_user_defined_metric_checks.py index 781ac91ef..7be076da2 100644 --- a/soda/core/tests/data_source/test_user_defined_metric_checks.py +++ b/soda/core/tests/data_source/test_user_defined_metric_checks.py @@ -110,6 +110,31 @@ def test_user_defined_data_source_query_metric_check_with_variable(data_source_f assert 1068 < avg_surface < 1069 +def test_user_defined_data_source_query_metric_check_with_variable_special_chars(data_source_fixture: DataSourceFixture): + table_name = data_source_fixture.ensure_test_table(customers_test_table) + + qualified_table_name = data_source_fixture.data_source.qualified_table_name(table_name) + + scan = data_source_fixture.create_test_scan() + scan.add_variables({"cst_size": ">= -5"}) + scan.add_sodacl_yaml_str( + f""" + checks: + - avg_surface between 1068 and 1069: + avg_surface query: | + SELECT AVG(cst_size * distance) as avg_surface + FROM {qualified_table_name} WHERE cst_size ${{cst_size}} OR cst_size IS NULL + """ + ) + scan.execute() + + scan.assert_all_checks_pass() + + avg_surface = scan._checks[0].check_value + assert isinstance(avg_surface, float) + assert 1068 < avg_surface < 1069 + + def test_user_defined_data_source_query_metric_with_sql_file(data_source_fixture: DataSourceFixture): fd, path = tempfile.mkstemp() table_name = data_source_fixture.ensure_test_table(customers_test_table) From e77202afdd08720d32a2892bcc8a025f8e1c638c Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 20 Dec 2024 08:44:11 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .../core/tests/data_source/test_user_defined_metric_checks.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/soda/core/tests/data_source/test_user_defined_metric_checks.py b/soda/core/tests/data_source/test_user_defined_metric_checks.py index 7be076da2..b17ac384a 100644 --- a/soda/core/tests/data_source/test_user_defined_metric_checks.py +++ b/soda/core/tests/data_source/test_user_defined_metric_checks.py @@ -110,7 +110,9 @@ def test_user_defined_data_source_query_metric_check_with_variable(data_source_f assert 1068 < avg_surface < 1069 -def test_user_defined_data_source_query_metric_check_with_variable_special_chars(data_source_fixture: DataSourceFixture): +def test_user_defined_data_source_query_metric_check_with_variable_special_chars( + data_source_fixture: DataSourceFixture, +): table_name = data_source_fixture.ensure_test_table(customers_test_table) qualified_table_name = data_source_fixture.data_source.qualified_table_name(table_name)