summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cloudinit/util.py2
-rw-r--r--tests/unittests/test_util.py16
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