diff --git a/awx/main/tests/unit/utils/test_safe_yaml.py b/awx/main/tests/unit/utils/test_safe_yaml.py index 7f528ea595..8e8dd933aa 100644 --- a/awx/main/tests/unit/utils/test_safe_yaml.py +++ b/awx/main/tests/unit/utils/test_safe_yaml.py @@ -20,6 +20,18 @@ def test_raw_string(): assert safe_dump('foo') == "!unsafe 'foo'\n" +def test_kv_null(): + assert safe_dump({'a': None}) == "!unsafe 'a': null\n" + + +def test_kv_null_safe(): + assert safe_dump({'a': None}, {'a': None}) == "a: null\n" + + +def test_kv_null_unsafe(): + assert safe_dump({'a': ''}, {'a': None}) == "!unsafe 'a': !unsafe ''\n" + + def test_kv_int(): assert safe_dump({'a': 1}) == "!unsafe 'a': 1\n" diff --git a/awx/main/utils/safe_yaml.py b/awx/main/utils/safe_yaml.py index 1b958b69d0..28c4dc4694 100644 --- a/awx/main/utils/safe_yaml.py +++ b/awx/main/utils/safe_yaml.py @@ -58,7 +58,7 @@ def safe_dump(x, safe_dict=None): # equality matches (and consider those branches safe) for k, v in x.items(): dumper = yaml.SafeDumper - if safe_dict.get(k) != v: + if k not in safe_dict or safe_dict.get(k) != v: dumper = SafeStringDumper yamls.append(yaml.dump_all( [{k: v}],