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('', rendered)
+
+ def test_wrapped_markdown_with_some_markdown(self):
+ rendered = wrapped_markdown("*italic*\n**bold**\n", css_class="a_class")
+ self.assertEqual(
+ '''''', rendered)