diff options
-rw-r--r-- | cloudinit/util.py | 2 | ||||
-rw-r--r-- | tests/unittests/test_util.py | 16 |
2 files changed, 17 insertions, 1 deletions
diff --git a/cloudinit/util.py b/cloudinit/util.py index b486e182..f570b9d3 100644 --- a/cloudinit/util.py +++ b/cloudinit/util.py @@ -2529,7 +2529,7 @@ def load_shell_content(content, add_empty=False, empty_val=None): if PY26 and isinstance(blob, six.text_type): # Older versions don't support unicode input blob = blob.encode("utf8") - return shlex.split(blob) + return shlex.split(blob, comments=True) data = {} for line in _shlex_split(content): diff --git a/tests/unittests/test_util.py b/tests/unittests/test_util.py index 65035be2..f38a664c 100644 --- a/tests/unittests/test_util.py +++ b/tests/unittests/test_util.py @@ -807,4 +807,20 @@ class TestSystemIsSnappy(helpers.FilesystemMockingTestCase): self.reRoot(root_d) self.assertTrue(util.system_is_snappy()) + +class TestLoadShellContent(helpers.TestCase): + def test_comments_handled_correctly(self): + """Shell comments should be allowed in the content.""" + self.assertEqual( + {'key1': 'val1', 'key2': 'val2', 'key3': 'val3 #tricky'}, + util.load_shell_content('\n'.join([ + "#top of file comment", + "key1=val1 #this is a comment", + "# second comment", + 'key2="val2" # inlin comment' + '#badkey=wark', + 'key3="val3 #tricky"', + '']))) + + # vi: ts=4 expandtab |