blob: bb426f151926b9dab67e4c179d8c7114bcf89155 [file] [log] [blame]
"""Unit tests for shell_wrapper.py."""
import mock
import unittest
from autotest_lib.client.cros.faft.utils import shell_wrapper
class TestLocalShell(unittest.TestCase):
"""Tests for shell_wrapper.LocalShell()."""
@mock.patch('subprocess.Popen')
def testSuccessTokenAbsent(self, mock_subproc_popen):
cmd = 'foo'
success_token = 'unexpected'
mock_process = mock.Mock()
mock_subproc_popen.return_value = mock_process
attrs = {'communicate.return_value': ('sucessfully executed foo', '')}
mock_process.configure_mock(**attrs)
os_if = mock.Mock()
local_shell = shell_wrapper.LocalShell(os_if)
self.assertFalse(
local_shell.run_command_check_output(cmd, success_token))
@mock.patch('subprocess.Popen')
def testSuccessTokenPresent(self, mock_subproc_popen):
cmd = 'bar'
success_token = 'expected'
mock_process = mock.Mock()
mock_subproc_popen.return_value = mock_process
attrs = {
'communicate.return_value':
('successfully executed bar. expected is expected.', '')
}
mock_process.configure_mock(**attrs)
os_if = mock.Mock()
local_shell = shell_wrapper.LocalShell(os_if)
self.assertTrue(
local_shell.run_command_check_output(cmd, success_token))
@mock.patch('subprocess.Popen')
def testSuccessTokenMalformed(self, mock_subproc_popen):
cmd = 'baz'
success_token = 'malformed token \n'
mock_process = mock.Mock()
mock_subproc_popen.return_value = mock_process
attrs = {'communicate.return_value': ('successfully executed baz', '')}
mock_process.configure_mock(**attrs)
os_if = mock.Mock()
local_shell = shell_wrapper.LocalShell(os_if)
self.assertRaises(shell_wrapper.UnsupportedSuccessToken,
local_shell.run_command_check_output, cmd,
success_token)
if __name__ == '__main__':
unittest.main()