diff options
| author | Scott Moser <smoser@ubuntu.com> | 2015-02-11 14:00:20 -0500 | 
|---|---|---|
| committer | Scott Moser <smoser@ubuntu.com> | 2015-02-11 14:00:20 -0500 | 
| commit | 35dd98c07bce490e85e03bef872cbbf1185e0be9 (patch) | |
| tree | 9b71de77b27ca916fa1d869fa95c0a5ab9f5e51c /tests/unittests/test_util.py | |
| parent | cd632b2f153a61faa48531cb41d0288650e72c71 (diff) | |
| parent | 587387cfbff7a89573128dc958df903d1becbde1 (diff) | |
| download | vyos-cloud-init-35dd98c07bce490e85e03bef872cbbf1185e0be9.tar.gz vyos-cloud-init-35dd98c07bce490e85e03bef872cbbf1185e0be9.zip  | |
some python3 fixes
This fixes the last set of WARN messages in my testing.
 * open /dev/console in text mode
 * move final message to be jinja template by default to avoid
   a warning about lack of cheetah.
 * write and read pickle'd contents in binary
 * some logging tests
Also:
 * add tool tox-venv for simple things like:
   tox-venv py34 /bin/bash
Diffstat (limited to 'tests/unittests/test_util.py')
| -rw-r--r-- | tests/unittests/test_util.py | 77 | 
1 files changed, 72 insertions, 5 deletions
diff --git a/tests/unittests/test_util.py b/tests/unittests/test_util.py index a1bd2c46..b96da663 100644 --- a/tests/unittests/test_util.py +++ b/tests/unittests/test_util.py @@ -1,21 +1,22 @@  from __future__ import print_function +import logging  import os -import stat -import yaml  import shutil +import stat  import tempfile -from . import helpers  import six +import yaml + +from cloudinit import importer, util +from . import helpers  try:      from unittest import mock  except ImportError:      import mock -from cloudinit import importer -from cloudinit import util  class FakeSelinux(object): @@ -377,4 +378,70 @@ class TestReadDMIData(helpers.FilesystemMockingTestCase):          self.assertFalse(None, util.read_dmi_data("key")) +class TestMultiLog(helpers.FilesystemMockingTestCase): + +    def _createConsole(self, root): +        os.mkdir(os.path.join(root, 'dev')) +        open(os.path.join(root, 'dev', 'console'), 'a').close() + +    def setUp(self): +        super(TestMultiLog, self).setUp() +        self.root = tempfile.mkdtemp() +        self.addCleanup(shutil.rmtree, self.root) +        self.patchOS(self.root) +        self.patchUtils(self.root) +        self.patchOpen(self.root) +        self.stdout = six.StringIO() +        self.stderr = six.StringIO() +        self.patchStdoutAndStderr(self.stdout, self.stderr) + +    def test_stderr_used_by_default(self): +        logged_string = 'test stderr output' +        util.multi_log(logged_string) +        self.assertEqual(logged_string, self.stderr.getvalue()) + +    def test_stderr_not_used_if_false(self): +        util.multi_log('should not see this', stderr=False) +        self.assertEqual('', self.stderr.getvalue()) + +    def test_logs_go_to_console_by_default(self): +        self._createConsole(self.root) +        logged_string = 'something very important' +        util.multi_log(logged_string) +        self.assertEqual(logged_string, open('/dev/console').read()) + +    def test_logs_dont_go_to_stdout_if_console_exists(self): +        self._createConsole(self.root) +        util.multi_log('something') +        self.assertEqual('', self.stdout.getvalue()) + +    def test_logs_go_to_stdout_if_console_does_not_exist(self): +        logged_string = 'something very important' +        util.multi_log(logged_string) +        self.assertEqual(logged_string, self.stdout.getvalue()) + +    def test_logs_go_to_log_if_given(self): +        log = mock.MagicMock() +        logged_string = 'something very important' +        util.multi_log(logged_string, log=log) +        self.assertEqual([((mock.ANY, logged_string), {})], +                         log.log.call_args_list) + +    def test_newlines_stripped_from_log_call(self): +        log = mock.MagicMock() +        expected_string = 'something very important' +        util.multi_log('{0}\n'.format(expected_string), log=log) +        self.assertEqual((mock.ANY, expected_string), log.log.call_args[0]) + +    def test_log_level_defaults_to_debug(self): +        log = mock.MagicMock() +        util.multi_log('message', log=log) +        self.assertEqual((logging.DEBUG, mock.ANY), log.log.call_args[0]) + +    def test_given_log_level_used(self): +        log = mock.MagicMock() +        log_level = mock.Mock() +        util.multi_log('message', log=log, log_level=log_level) +        self.assertEqual((log_level, mock.ANY), log.log.call_args[0]) +  # vi: ts=4 expandtab  | 
