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()
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() == ''