xref: /aosp_15_r20/external/autotest/client/bin/base_sysinfo_unittest.py (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
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