1*9c5db199SXin Li"""Tests for base_sysinfo.""" 2*9c5db199SXin Li 3*9c5db199SXin Liimport unittest 4*9c5db199SXin Lifrom unittest import mock 5*9c5db199SXin Li 6*9c5db199SXin Liimport common 7*9c5db199SXin Lifrom autotest_lib.client.common_lib import autotemp 8*9c5db199SXin Lifrom autotest_lib.client.bin import base_sysinfo 9*9c5db199SXin Li 10*9c5db199SXin Li 11*9c5db199SXin Liclass LoggableTestException(Exception): 12*9c5db199SXin Li """An exception thrown by the loggable used for testing.""" 13*9c5db199SXin Li 14*9c5db199SXin Li 15*9c5db199SXin Liclass BaseSysinfoTestCase(unittest.TestCase): 16*9c5db199SXin Li """TestCase for free functions in the base_sysinfo module.""" 17*9c5db199SXin Li 18*9c5db199SXin Li def setUp(self): 19*9c5db199SXin Li self._output_dir = autotemp.tempdir() 20*9c5db199SXin Li self.addCleanup(self._output_dir.clean) 21*9c5db199SXin Li 22*9c5db199SXin Li def test_run_loggables_with_no_exception(self): 23*9c5db199SXin Li """Tests _run_loggables_ignoring_errors when no loggable throws""" 24*9c5db199SXin Li loggables = { 25*9c5db199SXin Li mock.create_autospec(base_sysinfo.loggable), 26*9c5db199SXin Li mock.create_autospec(base_sysinfo.loggable), 27*9c5db199SXin Li } 28*9c5db199SXin Li base_sysinfo._run_loggables_ignoring_errors(loggables, self._output_dir) 29*9c5db199SXin Li for log in loggables: 30*9c5db199SXin Li log.run.assert_called_once_with(self._output_dir) 31*9c5db199SXin Li 32*9c5db199SXin Li def test_run_loggables_with_exception(self): 33*9c5db199SXin Li """Tests _run_loggables_ignoring_errors when one loggable throws""" 34*9c5db199SXin Li failing_loggable = mock.create_autospec(base_sysinfo.loggable) 35*9c5db199SXin Li failing_loggable.run.side_effect = LoggableTestException 36*9c5db199SXin Li loggables = { 37*9c5db199SXin Li mock.create_autospec(base_sysinfo.loggable), 38*9c5db199SXin Li failing_loggable, 39*9c5db199SXin Li mock.create_autospec(base_sysinfo.loggable), 40*9c5db199SXin Li } 41*9c5db199SXin Li base_sysinfo._run_loggables_ignoring_errors(loggables, self._output_dir) 42*9c5db199SXin Li for log in loggables: 43*9c5db199SXin Li log.run.assert_called_once_with(self._output_dir) 44*9c5db199SXin Li 45*9c5db199SXin Li 46*9c5db199SXin Liif __name__ == '__main__': 47*9c5db199SXin Li unittest.main() 48