| """Unit tests for shell_wrapper.py.""" |
| |
| import mock |
| import StringIO |
| 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_process.stdout = StringIO.StringIO('sucessfully executed foo') |
| mock_subproc_popen.return_value = mock_process |
| 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_process.stdout = StringIO.StringIO( |
| 'successfully executed bar. expected is expected.') |
| mock_subproc_popen.return_value = mock_process |
| 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_process.stdout = StringIO.StringIO('successfully executed baz') |
| mock_subproc_popen.return_value = mock_process |
| 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() |