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