summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cloudinit/config/cc_snappy.py2
-rw-r--r--tests/unittests/test_handler/test_handler_snappy.py35
2 files changed, 35 insertions, 2 deletions
diff --git a/cloudinit/config/cc_snappy.py b/cloudinit/config/cc_snappy.py
index d1447fe5..bd928e54 100644
--- a/cloudinit/config/cc_snappy.py
+++ b/cloudinit/config/cc_snappy.py
@@ -101,7 +101,7 @@ def render_snap_op(op, name, path=None, cfgfile=None, config=None):
elif isinstance(config, six.text_type):
cfg_bytes = config.encode()
else:
- cfg_bytes = yaml.safe_dump(config).encode()
+ cfg_bytes = util.yaml_dumps(config)
(fd, cfg_tmpf) = tempfile.mkstemp()
os.write(fd, cfg_bytes)
diff --git a/tests/unittests/test_handler/test_handler_snappy.py b/tests/unittests/test_handler/test_handler_snappy.py
index 8759a07d..81d891d2 100644
--- a/tests/unittests/test_handler/test_handler_snappy.py
+++ b/tests/unittests/test_handler/test_handler_snappy.py
@@ -140,12 +140,45 @@ class TestInstallPackages(t_help.TestCase):
self.assertEqual(
self.snapcmds, [['install', 'snapf1', b'myconfig']])
- def test_render_op_config(self):
+ def test_render_op_config_bytes(self):
op = makeop('config', 'snapf1', config=b'myconfig')
render_snap_op(**op)
self.assertEqual(
self.snapcmds, [['config', 'snapf1', b'myconfig']])
+ def test_render_op_config_string(self):
+ mycfg = 'myconfig: foo\nhisconfig: bar\n'
+ op = makeop('config', 'snapf1', config=mycfg)
+ render_snap_op(**op)
+ self.assertEqual(
+ self.snapcmds, [['config', 'snapf1', mycfg.encode()]])
+
+ def test_render_op_config_dict(self):
+ # config entry for package can be a dict, not a string blob
+ mycfg = {'foo': 'bar'}
+ op = makeop('config', 'snapf1', config=mycfg)
+ render_snap_op(**op)
+ # snapcmds is a list of 3-entry lists. data_found will be the
+ # blob of data in the file in 'snappy install --config=<file>'
+ data_found = self.snapcmds[0][2]
+ self.assertEqual(mycfg, util.load_yaml(data_found))
+
+ def test_render_op_config_list(self):
+ # config entry for package can be a list, not a string blob
+ mycfg = ['foo', 'bar', 'wark', {'f1': 'b1'}]
+ op = makeop('config', 'snapf1', config=mycfg)
+ render_snap_op(**op)
+ data_found = self.snapcmds[0][2]
+ self.assertEqual(mycfg, util.load_yaml(data_found, allowed=(list,)))
+
+ def test_render_op_config_int(self):
+ # config entry for package can be a list, not a string blob
+ mycfg = 1
+ op = makeop('config', 'snapf1', config=mycfg)
+ render_snap_op(**op)
+ data_found = self.snapcmds[0][2]
+ self.assertEqual(mycfg, util.load_yaml(data_found, allowed=(int,)))
+
def makeop_tmpd(tmpd, op, name, config=None, path=None, cfgfile=None):
if cfgfile: