58 lines
2.0 KiB
Python
58 lines
2.0 KiB
Python
"""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()
|