• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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