summaryrefslogtreecommitdiff
path: root/tests/unittests/test_util.py
diff options
context:
space:
mode:
authorScott Moser <smoser@brickies.net>2016-11-04 13:46:09 -0400
committerScott Moser <smoser@brickies.net>2016-11-04 13:46:09 -0400
commitb380e16183446f2e39f47a3c0804d2081714acb2 (patch)
treea5e05b4a22553769d6eaa7e5fa93e3401a758b2b /tests/unittests/test_util.py
parent882b22e024733e17757fdbe36ba2a3672c6ebe06 (diff)
parenta1cdebdea65ccd827060c823146992bba9debe19 (diff)
downloadvyos-cloud-init-b380e16183446f2e39f47a3c0804d2081714acb2.tar.gz
vyos-cloud-init-b380e16183446f2e39f47a3c0804d2081714acb2.zip
merge from master at 0.7.8-34-ga1cdebd
Diffstat (limited to 'tests/unittests/test_util.py')
-rw-r--r--tests/unittests/test_util.py42
1 files changed, 38 insertions, 4 deletions
diff --git a/tests/unittests/test_util.py b/tests/unittests/test_util.py
index d2031f59..f6a8ab75 100644
--- a/tests/unittests/test_util.py
+++ b/tests/unittests/test_util.py
@@ -223,8 +223,10 @@ class TestKeyValStrings(helpers.TestCase):
class TestGetCmdline(helpers.TestCase):
def test_cmdline_reads_debug_env(self):
- os.environ['DEBUG_PROC_CMDLINE'] = 'abcd 123'
- self.assertEqual(os.environ['DEBUG_PROC_CMDLINE'], util.get_cmdline())
+ with mock.patch.dict("os.environ",
+ values={'DEBUG_PROC_CMDLINE': 'abcd 123'}):
+ ret = util.get_cmdline()
+ self.assertEqual("abcd 123", ret)
class TestLoadYaml(helpers.TestCase):
@@ -384,7 +386,7 @@ class TestReadDMIData(helpers.FilesystemMockingTestCase):
dmi_name = 'use-dmidecode'
self._configure_dmidecode_return(dmi_name, dmi_val)
- expected = {'armel': None, 'aarch64': None, 'x86_64': dmi_val}
+ expected = {'armel': None, 'aarch64': dmi_val, 'x86_64': dmi_val}
found = {}
# we do not run the 'dmi-decode' binary on some arches
# verify that anything requested that is not in the sysfs dir
@@ -516,6 +518,7 @@ class TestSubp(helpers.TestCase):
utf8_invalid = b'ab\xaadef'
utf8_valid = b'start \xc3\xa9 end'
utf8_valid_2 = b'd\xc3\xa9j\xc8\xa7'
+ printenv = ['bash', '-c', 'for n in "$@"; do echo "$n=${!n}"; done', '--']
def printf_cmd(self, *args):
# bash's printf supports \xaa. So does /usr/bin/printf
@@ -550,7 +553,7 @@ class TestSubp(helpers.TestCase):
def test_subp_decode_invalid_utf8_replaces(self):
(out, _err) = util.subp(self.stdin2out, capture=True,
data=self.utf8_invalid)
- expected = self.utf8_invalid.decode('utf-8', errors='replace')
+ expected = self.utf8_invalid.decode('utf-8', 'replace')
self.assertEqual(out, expected)
def test_subp_decode_strict_raises(self):
@@ -566,6 +569,29 @@ class TestSubp(helpers.TestCase):
self.assertEqual(err, data)
self.assertEqual(out, b'')
+ def test_subp_reads_env(self):
+ with mock.patch.dict("os.environ", values={'FOO': 'BAR'}):
+ out, err = util.subp(self.printenv + ['FOO'], capture=True)
+ self.assertEqual('FOO=BAR', out.splitlines()[0])
+
+ def test_subp_env_and_update_env(self):
+ out, err = util.subp(
+ self.printenv + ['FOO', 'HOME', 'K1', 'K2'], capture=True,
+ env={'FOO': 'BAR'},
+ update_env={'HOME': '/myhome', 'K2': 'V2'})
+ self.assertEqual(
+ ['FOO=BAR', 'HOME=/myhome', 'K1=', 'K2=V2'], out.splitlines())
+
+ def test_subp_update_env(self):
+ extra = {'FOO': 'BAR', 'HOME': '/root', 'K1': 'V1'}
+ with mock.patch.dict("os.environ", values=extra):
+ out, err = util.subp(
+ self.printenv + ['FOO', 'HOME', 'K1', 'K2'], capture=True,
+ update_env={'HOME': '/myhome', 'K2': 'V2'})
+
+ self.assertEqual(
+ ['FOO=BAR', 'HOME=/myhome', 'K1=V1', 'K2=V2'], out.splitlines())
+
def test_returns_none_if_no_capture(self):
(out, err) = util.subp(self.stdin2out, data=b'', capture=False)
self.assertEqual(err, None)
@@ -577,4 +603,12 @@ class TestSubp(helpers.TestCase):
self.assertEqual("/target/my/path/",
util.target_path("/target/", "///my/path/"))
+
+class TestEncode(helpers.TestCase):
+ """Test the encoding functions"""
+ def test_decode_binary_plain_text_with_hex(self):
+ blob = 'BOOTABLE_FLAG=\x80init=/bin/systemd'
+ text = util.decode_binary(blob)
+ self.assertEqual(text, blob)
+
# vi: ts=4 expandtab