78 lines
2.7 KiB
Python
78 lines
2.7 KiB
Python
"""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()
|