Skip to content

Commit

Permalink
Fix Jinja undefined upgrade check for non-templated objects (#13373)
Browse files Browse the repository at this point in the history
  • Loading branch information
madison-ookla committed Dec 29, 2020
1 parent 022f9e2 commit 748d05f
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 6 deletions.
9 changes: 5 additions & 4 deletions airflow/upgrade/rules/undefined_jinja_varaibles.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,6 @@ def _check_rendered_content(self, rendered_content, seen_oids=None):
if isinstance(rendered_content, six.string_types):
return set(re.findall(r"{{(.*?)}}", rendered_content))

elif isinstance(rendered_content, (int, float, bool)):
return set()

elif isinstance(rendered_content, (tuple, list, set)):
debug_error_messages = set()
for element in rendered_content:
Expand All @@ -63,11 +60,15 @@ def _check_rendered_content(self, rendered_content, seen_oids=None):
debug_error_messages.update(self._check_rendered_content(value))
return debug_error_messages

else:
elif hasattr(rendered_content, "template_fields"):
if seen_oids is None:
seen_oids = set()
return self._nested_check_rendered(rendered_content, seen_oids)

else:
# Rendered content is not actually rendered
return set()

def _nested_check_rendered(self, rendered_content, seen_oids):
debug_error_messages = set()
if id(rendered_content) not in seen_oids:
Expand Down
8 changes: 6 additions & 2 deletions tests/upgrade/rules/test_undefined_jinja_varaibles.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
from unittest import TestCase

import jinja2
import pytest

from airflow import DAG
from airflow.models import DagBag
Expand Down Expand Up @@ -67,6 +66,12 @@ def setUpValidDag(self):
"float": "{{ params.float }}",
"string": "{{ params.string }}",
"boolean": "{{ params.boolean }}",
"integer_direct": 1,
"float_direct": 1.0,
"string_direct": "test_string",
"boolean_direct": True,
"none_direct": None,
"object_direct": object(),
},
params={
"integer": 1,
Expand Down Expand Up @@ -156,7 +161,6 @@ def test_skipping_dag_check(self):

assert len(messages) == 0

@pytest.mark.quarantined
def test_invalid_check(self):
dagbag = DagBag(dag_folder=self.empty_dir, include_examples=False)
dagbag.dags[self.invalid_dag.dag_id] = self.invalid_dag
Expand Down

0 comments on commit 748d05f

Please sign in to comment.