diff --git a/airflow/www/utils.py b/airflow/www/utils.py index 2228341737de6..a215b6131cff3 100644 --- a/airflow/www/utils.py +++ b/airflow/www/utils.py @@ -321,8 +321,8 @@ def wrapped_markdown(s, css_class=None): return None return Markup( - '
' + markdown.markdown(s) + "
" - ).format(css_class=css_class) + '
'.format(css_class=css_class) + markdown.markdown(s) + "
" + ) def get_attr_renderer(): diff --git a/tests/www/test_utils.py b/tests/www/test_utils.py index d1c6a2a7f720d..51d73fba286b0 100644 --- a/tests/www/test_utils.py +++ b/tests/www/test_utils.py @@ -24,6 +24,7 @@ from parameterized import parameterized from airflow.www import utils +from airflow.www.utils import wrapped_markdown from tests.test_utils.config import conf_vars @@ -229,3 +230,16 @@ def test_markdown(self): def test_markdown_none(self): rendered = self.attr_renderer["python_callable"](None) self.assertEqual("", rendered) + + +class TestWrappedMarkdown(unittest.TestCase): + + def test_wrapped_markdown_with_docstring_curly_braces(self): + rendered = wrapped_markdown("{braces}", css_class="a_class") + self.assertEqual('

{braces}

', rendered) + + def test_wrapped_markdown_with_some_markdown(self): + rendered = wrapped_markdown("*italic*\n**bold**\n", css_class="a_class") + self.assertEqual( + '''

italic +bold

''', rendered)