1"""Unit tests for saft_flashrom_util.py.""" 2 3import mock 4import unittest 5 6from autotest_lib.client.common_lib import autotemp 7from autotest_lib.client.common_lib import error 8from autotest_lib.client.cros.faft.utils import (os_interface, 9 saft_flashrom_util) 10 11 12class TestFlashromUtil(unittest.TestCase): 13 """Tests for saft_flashrom_util.flashrom_util().""" 14 15 def setUp(self): 16 self._tempdir = autotemp.tempdir(unique_id='saft_flashrom_util_test') 17 self.addCleanup(self._tempdir.clean) 18 19 self.os_if = os_interface.OSInterface( 20 self._tempdir.name, test_mode=True) 21 self.flashrom_util = saft_flashrom_util.flashrom_util(self.os_if) 22 23 @mock.patch('subprocess.Popen') 24 def testTargetIsBroken(self, mock_subproc_popen): 25 """check_target should raise error.CmdError if flashrom is broken""" 26 27 bad_flashrom = mock.Mock() 28 attrs = { 29 'communicate.return_value': 30 ('broken flashrom stdout', 'broken flashrom stderr') 31 } 32 bad_flashrom.configure_mock(**attrs) 33 bad_flashrom.returncode = 1 34 35 mock_subproc_popen.return_value = bad_flashrom 36 with self.assertRaises(error.CmdError): 37 self.flashrom_util.check_target() 38 39 @mock.patch('subprocess.Popen') 40 def testTargetIsNotBroken(self, mock_subproc_popen): 41 """check_target should return True if flashrom is working""" 42 43 good_flashrom = mock.Mock() 44 attrs = { 45 'communicate.return_value': 46 ('working flashrom stdout', 'working flashrom stderr') 47 } 48 good_flashrom.configure_mock(**attrs) 49 good_flashrom.returncode = 0 50 51 mock_subproc_popen.return_value = good_flashrom 52 self.assertTrue(self.flashrom_util.check_target()) 53 54 55if __name__ == '__main__': 56 unittest.main() 57