| """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() |