From f8211b05882ee487b74dd04a34875053b6cf0ebe Mon Sep 17 00:00:00 2001 From: Ryan Petrello Date: Thu, 19 Apr 2018 09:13:56 -0400 Subject: [PATCH] add more edge case handling for yaml unsafe marking --- awx/main/tests/unit/utils/test_safe_yaml.py | 12 ++++++++++++ awx/main/utils/safe_yaml.py | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) 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}],