# This file is part of cloud-init. See LICENSE file for license information. import cloudinit.distros.bsd_utils as bsd_utils from cloudinit.tests.helpers import (CiTestCase, ExitStack, mock) RC_FILE = """ if something; then do something here fi hostname={hostname} """ class TestBsdUtils(CiTestCase): def setUp(self): super().setUp() patches = ExitStack() self.addCleanup(patches.close) self.load_file = patches.enter_context( mock.patch.object(bsd_utils.util, 'load_file')) self.write_file = patches.enter_context( mock.patch.object(bsd_utils.util, 'write_file')) def test_get_rc_config_value(self): self.load_file.return_value = 'hostname=foo\n' self.assertEqual(bsd_utils.get_rc_config_value('hostname'), 'foo') self.load_file.assert_called_with('/etc/rc.conf') self.load_file.return_value = 'hostname=foo' self.assertEqual(bsd_utils.get_rc_config_value('hostname'), 'foo') self.load_file.return_value = 'hostname="foo"' self.assertEqual(bsd_utils.get_rc_config_value('hostname'), 'foo') self.load_file.return_value = "hostname='foo'" self.assertEqual(bsd_utils.get_rc_config_value('hostname'), 'foo') self.load_file.return_value = 'hostname=\'foo"' self.assertEqual(bsd_utils.get_rc_config_value('hostname'), "'foo\"") self.load_file.return_value = '' self.assertEqual(bsd_utils.get_rc_config_value('hostname'), None) self.load_file.return_value = RC_FILE.format(hostname='foo') self.assertEqual(bsd_utils.get_rc_config_value('hostname'), "foo") def test_set_rc_config_value_unchanged(self): # bsd_utils.set_rc_config_value('hostname', 'foo') # self.write_file.assert_called_with('/etc/rc.conf', 'hostname=foo\n') self.load_file.return_value = RC_FILE.format(hostname='foo') self.write_file.assert_not_called() def test_set_rc_config_value(self): bsd_utils.set_rc_config_value('hostname', 'foo') self.write_file.assert_called_with('/etc/rc.conf', 'hostname=foo\n') self.load_file.return_value = RC_FILE.format(hostname='foo') bsd_utils.set_rc_config_value('hostname', 'bar') self.write_file.assert_called_with( '/etc/rc.conf', RC_FILE.format(hostname='bar'))