Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 17 additions & 27 deletions tests/unittests/distros/test_sysconfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,12 @@
import re

from cloudinit.distros.parsers.sys_conf import SysConf
from tests.unittests.helpers import TestCase

# Lots of good examples @
# http://content.hccfl.edu/pollock/AUnix1/SysconfigFilesDesc.txt


class TestSysConfHelper(TestCase):
# This function was added in 2.7, make it work for 2.6
def assertRegMatches(self, text, regexp):
regexp = re.compile(regexp)
self.assertTrue(
regexp.search(text),
msg="%s must match %s!" % (text, regexp.pattern),
)
class TestSysConfHelper:

def test_parse_no_change(self):
contents = """# A comment
Expand All @@ -31,57 +23,55 @@ def test_parse_no_change(self):
ETHTOOL_OPTS="-K ${DEVICE} tso on; -G ${DEVICE} rx 256 tx 256"
USEMD5=no"""
conf = SysConf(contents.splitlines())
self.assertEqual(conf["HOSTNAME"], "blahblah")
self.assertEqual(conf["SHORTDATE"], "$(date +%y:%m:%d:%H:%M)")
assert conf["HOSTNAME"] == "blahblah"
assert conf["SHORTDATE"] == "$(date +%y:%m:%d:%H:%M)"
# Should be unquoted
self.assertEqual(
conf["ETHTOOL_OPTS"],
"-K ${DEVICE} tso on; -G ${DEVICE} rx 256 tx 256",
assert (
conf["ETHTOOL_OPTS"]
== "-K ${DEVICE} tso on; -G ${DEVICE} rx 256 tx 256"
)
self.assertEqual(contents, str(conf))
assert contents == str(conf)

def test_parse_shell_vars(self):
contents = "USESMBAUTH=$XYZ"
conf = SysConf(contents.splitlines())
self.assertEqual(contents, str(conf))
assert contents == str(conf)
conf = SysConf("")
conf["B"] = "${ZZ}d apples"
# Should be quoted
self.assertEqual('B="${ZZ}d apples"', str(conf))
assert 'B="${ZZ}d apples"' == str(conf)
conf = SysConf("")
conf["B"] = "$? d apples"
self.assertEqual('B="$? d apples"', str(conf))
assert 'B="$? d apples"' == str(conf)
contents = 'IPMI_WATCHDOG_OPTIONS="timeout=60"'
conf = SysConf(contents.splitlines())
self.assertEqual("IPMI_WATCHDOG_OPTIONS=timeout=60", str(conf))
assert "IPMI_WATCHDOG_OPTIONS=timeout=60" == str(conf)

def test_parse_adjust(self):
contents = 'IPV6TO4_ROUTING="eth0-:0004::1/64 eth1-:0005::1/64"'
conf = SysConf(contents.splitlines())
# Should be unquoted
self.assertEqual(
"eth0-:0004::1/64 eth1-:0005::1/64", conf["IPV6TO4_ROUTING"]
)
assert "eth0-:0004::1/64 eth1-:0005::1/64" == conf["IPV6TO4_ROUTING"]
conf["IPV6TO4_ROUTING"] = "blah \tblah"
contents2 = str(conf).strip()
# Should be requoted due to whitespace
self.assertRegex(contents2, r"IPV6TO4_ROUTING='blah\s+blah'")
assert re.search(r"IPV6TO4_ROUTING='blah\s+blah'", contents2)

def test_parse_no_adjust_shell(self):
conf = SysConf("".splitlines())
conf["B"] = " $(time)"
contents = str(conf)
self.assertEqual("B= $(time)", contents)
assert "B= $(time)" == contents

def test_parse_empty(self):
contents = ""
conf = SysConf(contents.splitlines())
self.assertEqual("", str(conf).strip())
assert "" == str(conf).strip()

def test_parse_add_new(self):
contents = "BLAH=b"
conf = SysConf(contents.splitlines())
conf["Z"] = "d"
contents = str(conf)
self.assertIn("Z=d", contents)
self.assertIn("BLAH=b", contents)
assert "Z=d" in contents
assert "BLAH=b" in contents