"""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()