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