diff options
author | Barry Warsaw <barry@python.org> | 2015-01-26 17:05:21 -0500 |
---|---|---|
committer | Barry Warsaw <barry@python.org> | 2015-01-26 17:05:21 -0500 |
commit | fe99f7d6d87e88320933957b2933288c6eb2986d (patch) | |
tree | 82aff0c8aecaf6e87cfb77aea04d944965bc25f5 /tests/unittests/test_util.py | |
parent | fabff4aec884467729fc372bb67f240752c15511 (diff) | |
parent | 78915c97c18d678db10e0fde0d9306823c5f4610 (diff) | |
download | vyos-cloud-init-fe99f7d6d87e88320933957b2933288c6eb2986d.tar.gz vyos-cloud-init-fe99f7d6d87e88320933957b2933288c6eb2986d.zip |
Trunk merged and ported.
Diffstat (limited to 'tests/unittests/test_util.py')
-rw-r--r-- | tests/unittests/test_util.py | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/tests/unittests/test_util.py b/tests/unittests/test_util.py index f537d332..7a224230 100644 --- a/tests/unittests/test_util.py +++ b/tests/unittests/test_util.py @@ -1,3 +1,5 @@ +from __future__ import print_function + import os import stat import yaml @@ -319,4 +321,61 @@ class TestMountinfoParsing(helpers.ResourceUsingTestCase): expected = ('none', 'tmpfs', '/run/lock') self.assertEqual(expected, util.parse_mount_info('/run/lock', lines)) + +class TestReadDMIData(helpers.FilesystemMockingTestCase): + + def _patchIn(self, root): + self.patchOS(root) + self.patchUtils(root) + + def _write_key(self, key, content): + """Mocks the sys path found on Linux systems.""" + new_root = tempfile.mkdtemp() + self.addCleanup(shutil.rmtree, new_root) + self._patchIn(new_root) + util.ensure_dir(os.path.join('sys', 'class', 'dmi', 'id')) + + dmi_key = "/sys/class/dmi/id/{}".format(key) + util.write_file(dmi_key, content) + + def _no_syspath(self, key, content): + """ + In order to test a missing sys path and call outs to dmidecode, this + function fakes the results of dmidecode to test the results. + """ + new_root = tempfile.mkdtemp() + self.addCleanup(shutil.rmtree, new_root) + self._patchIn(new_root) + self.real_which = util.which + self.real_subp = util.subp + + def _which(key): + return True + util.which = _which + + def _cdd(_key, error=None): + return (content, error) + util.subp = _cdd + + def test_key(self): + key_content = "TEST-KEY-DATA" + self._write_key("key", key_content) + self.assertEquals(key_content, util.read_dmi_data("key")) + + def test_key_mismatch(self): + self._write_key("test", "ABC") + self.assertNotEqual("123", util.read_dmi_data("test")) + + def test_no_key(self): + self._no_syspath(None, None) + self.assertFalse(util.read_dmi_data("key")) + + def test_callout_dmidecode(self): + """test to make sure that dmidecode is used when no syspath""" + self._no_syspath("key", "stuff") + self.assertEquals("stuff", util.read_dmi_data("key")) + self._no_syspath("key", None) + self.assertFalse(None, util.read_dmi_data("key")) + + # vi: ts=4 expandtab |