blob: 9d74df1a601d1c8bf0a644d6e52bbb2138212f57 [file] [log] [blame]
"""Unit tests for flashrom_handler.py."""
import mock
import unittest
from autotest_lib.client.common_lib import autotemp
from autotest_lib.client.cros.faft.utils import (os_interface,
flashrom_handler)
class TestFlashromHandler(unittest.TestCase):
"""Tests for flashrom_handler.FlashromHandler()"""
def setUp(self):
self._tempdir = autotemp.tempdir(unique_id='flashrom_handler_test')
self.addCleanup(self._tempdir.clean)
self.os_if = os_interface.OSInterface(
self._tempdir.name, test_mode=True)
self.flashrom_handler = flashrom_handler.FlashromHandler(self.os_if)
self.good_flashrom = mock.Mock()
attrs = {
'communicate.return_value':
('working flashrom stdout', 'working flashrom stderr')
}
self.good_flashrom.configure_mock(**attrs)
self.good_flashrom.returncode = 0
self.bad_flashrom = mock.Mock()
attrs = {
'communicate.return_value':
('broken flashrom stdout', 'broken flashrom stderr')
}
self.bad_flashrom.configure_mock(**attrs)
self.bad_flashrom.returncode = 1
@mock.patch('subprocess.Popen')
def testHandlerUnavailable(self, mock_subproc_popen):
"""Failing flashrom check should mark the handler unavailable"""
mock_subproc_popen.return_value = self.bad_flashrom
self.assertFalse(self.flashrom_handler.is_available())
@mock.patch('subprocess.Popen')
def testHandlerUnavailableCached(self, mock_subproc_popen):
"""Status of flashrom handler should be cached, and not rechecked"""
mock_subproc_popen.return_value = self.bad_flashrom
self.assertFalse(self.flashrom_handler.is_available())
mock_subproc_popen.return_value = self.good_flashrom
self.assertFalse(self.flashrom_handler.is_available())
mock_subproc_popen.assert_called_once()
@mock.patch('subprocess.Popen')
def testHandlerAvailable(self, mock_subproc_popen):
"""Successful flashrom check should mark the handler available"""
mock_subproc_popen.return_value = self.good_flashrom
self.assertTrue(self.flashrom_handler.is_available())
@mock.patch('subprocess.Popen')
def testHandlerAvailableCached(self, mock_subproc_popen):
"""Status of flashrom handler should be cached, and not rechecked"""
mock_subproc_popen.return_value = self.good_flashrom
self.assertTrue(self.flashrom_handler.is_available())
mock_subproc_popen.return_value = self.bad_flashrom
self.assertTrue(self.flashrom_handler.is_available())
mock_subproc_popen.assert_called_once()
if __name__ == '__main__':
unittest.main()