示例#1
0
    def test_terminate(self):
        """ Test if terminating a ProcessMonitor at least calls
            communicate and terminate on the Popen-Instance
        """
        with patch.multiple('subprocess.Popen',
                            __init__=DEFAULT,
                            terminate=DEFAULT,
                            communicate=DEFAULT) as mocks:

            mon = ProcessMonitor('abc')
            mon.stdout = sys.stdout
            mon.terminate()

            mocks['communicate'].assert_called_once()
            mocks['terminate'].assert_called_once()
示例#2
0
    def test_break_no_remaining_on_terminate(self):
        """ Test if terminating a ProcessMonitor at least calls
            communicate and terminate on the Popen-Instance
        """
        with patch.multiple('subprocess.Popen',
                            __init__=DEFAULT,
                            terminate=DEFAULT,
                            communicate=DEFAULT):

            m_file = mock_open(read_data='testpattern')
            m_file.fileno = Mock(return_value=123)

            with patch('select.select', return_value=([], [], [])):
                reads = [b'testpattern', b'']
                with patch('os.read', side_effect=lambda a, b: reads.pop(0)):
                    mon = ProcessMonitor('abc')
                    mon.stdout = m_file
                    mon._cmd_output_target = StringIO()
                    mon.pid = 123
                    mon.terminate()

                assert mon._cmd_output_target.getvalue() == ''