diff --git a/homeassistant/helpers/template.py b/homeassistant/helpers/template.py index e82302dfd3b9cdc79f24f1488ce37acbcbd6b65c..d8bbcbc6e122ae1ca99ef347fc8b94dfc26bd62b 100644 --- a/homeassistant/helpers/template.py +++ b/homeassistant/helpers/template.py @@ -165,7 +165,7 @@ class Template: try: variables['value_json'] = json.loads(value) - except ValueError: + except (ValueError, TypeError): pass try: diff --git a/tests/helpers/test_template.py b/tests/helpers/test_template.py index 02331c400d36771010c8dea7aea487f21824e647..3febd4037ad099983ae2276c149590f175f1006b 100644 --- a/tests/helpers/test_template.py +++ b/tests/helpers/test_template.py @@ -4,6 +4,7 @@ from datetime import datetime import unittest import random import math +import pytz from unittest.mock import patch from homeassistant.components import group @@ -422,6 +423,16 @@ class TestHelpersTemplate(unittest.TestCase): assert '' == \ tpl.render_with_possible_json_value('{"hello": "world"}', '') + def test_render_with_possible_json_value_non_string_value(self): + """Render with possible JSON value with non-string value.""" + tpl = template.Template(""" +{{ strptime(value~'+0000', '%Y-%m-%d %H:%M:%S%z') }} + """, self.hass) + value = datetime(2019, 1, 18, 12, 13, 14) + expected = str(pytz.utc.localize(value)) + assert expected == \ + tpl.render_with_possible_json_value(value) + def test_raise_exception_on_error(self): """Test raising an exception on error.""" with pytest.raises(TemplateError):