普通文本  |  48行  |  1.6 KB

"""Tests for base_sysinfo."""

import mock
import unittest

import common
from autotest_lib.client.common_lib import autotemp
from autotest_lib.client.bin import base_sysinfo


class LoggableTestException(Exception):
    """An exception thrown by the loggable used for testing."""


class BaseSysinfoTestCase(unittest.TestCase):
    """TestCase for free functions in the base_sysinfo module."""

    def setUp(self):
        self._output_dir = autotemp.tempdir()
        self.addCleanup(self._output_dir.clean)

    def test_run_loggables_with_no_exception(self):
        """Tests _run_loggables_ignoring_errors when no loggable throws"""
        loggables = {
                mock.create_autospec(base_sysinfo.loggable),
                mock.create_autospec(base_sysinfo.loggable),
        }
        base_sysinfo._run_loggables_ignoring_errors(loggables, self._output_dir)
        for log in loggables:
            log.run.assert_called_once_with(self._output_dir)

    def test_run_loggables_with_exception(self):
        """Tests _run_loggables_ignoring_errors when one loggable throws"""
        failing_loggable = mock.create_autospec(base_sysinfo.loggable)
        failing_loggable.run.side_effect = LoggableTestException
        loggables = {
                mock.create_autospec(base_sysinfo.loggable),
                failing_loggable,
                mock.create_autospec(base_sysinfo.loggable),
        }
        base_sysinfo._run_loggables_ignoring_errors(loggables, self._output_dir)
        for log in loggables:
            log.run.assert_called_once_with(self._output_dir)


if __name__ == '__main__':
    unittest.main()