From 9b473779c2476b47f7b7813fa7c2a76855570771 Mon Sep 17 00:00:00 2001 From: David Brochart Date: Mon, 11 Jan 2021 15:11:02 +0100 Subject: [PATCH] Fix tests --- ipykernel/tests/test_kernel.py | 20 ++++++--- ipykernel/tests/test_message_spec.py | 65 ++++++++++++++++++++++------ ipykernel/tests/utils.py | 5 ++- 3 files changed, 71 insertions(+), 19 deletions(-) diff --git a/ipykernel/tests/test_kernel.py b/ipykernel/tests/test_kernel.py index 8cfcd3b2a..21d878c5c 100644 --- a/ipykernel/tests/test_kernel.py +++ b/ipykernel/tests/test_kernel.py @@ -360,9 +360,12 @@ def test_interrupt_during_input(): msg_id = kc.execute("input()") time.sleep(1) # Make sure it's actually waiting for input. km.interrupt_kernel() - # If we failed to interrupt interrupt, this will timeout: - reply = kc.get_shell_msg(timeout=TIMEOUT) from .test_message_spec import validate_message + while True: + # If we failed to interrupt interrupt, this will timeout: + reply = kc.get_shell_msg(timeout=TIMEOUT) + if reply['parent_header']['msg_id'] == msg_id: + break validate_message(reply, 'execute_reply', msg_id) @@ -385,9 +388,16 @@ def test_interrupt_during_pdb_set_trace(): msg_id2 = kc.execute("3 + 4") time.sleep(1) # Make sure it's actually waiting for input. km.interrupt_kernel() - # If we failed to interrupt interrupt, this will timeout: from .test_message_spec import validate_message - reply = kc.get_shell_msg(timeout=TIMEOUT) + while True: + # If we failed to interrupt interrupt, this will timeout: + reply = kc.get_shell_msg(timeout=TIMEOUT) + if reply['parent_header']['msg_id'] == msg_id: + break validate_message(reply, 'execute_reply', msg_id) - reply = kc.get_shell_msg(timeout=TIMEOUT) + while True: + # If we failed to interrupt interrupt, this will timeout: + reply = kc.get_shell_msg(timeout=TIMEOUT) + if reply['parent_header']['msg_id'] == msg_id2: + break validate_message(reply, 'execute_reply', msg_id2) diff --git a/ipykernel/tests/test_message_spec.py b/ipykernel/tests/test_message_spec.py index c6404a626..0ed1bb05b 100644 --- a/ipykernel/tests/test_message_spec.py +++ b/ipykernel/tests/test_message_spec.py @@ -278,7 +278,10 @@ def test_execute(): flush_channels() msg_id = KC.execute(code='x=1') - reply = KC.get_shell_msg(timeout=TIMEOUT) + while True: + reply = KC.get_shell_msg(timeout=TIMEOUT) + if reply['parent_header']['msg_id'] == msg_id: + break validate_message(reply, 'execute_reply', msg_id) @@ -405,7 +408,10 @@ def test_oinfo(): flush_channels() msg_id = KC.inspect('a') - reply = KC.get_shell_msg(timeout=TIMEOUT) + while True: + reply = KC.get_shell_msg(timeout=TIMEOUT) + if reply['parent_header']['msg_id'] == msg_id: + break validate_message(reply, 'inspect_reply', msg_id) @@ -415,7 +421,10 @@ def test_oinfo_found(): msg_id, reply = execute(code='a=5') msg_id = KC.inspect('a') - reply = KC.get_shell_msg(timeout=TIMEOUT) + while True: + reply = KC.get_shell_msg(timeout=TIMEOUT) + if reply['parent_header']['msg_id'] == msg_id: + break validate_message(reply, 'inspect_reply', msg_id) content = reply['content'] assert content['found'] @@ -430,7 +439,10 @@ def test_oinfo_detail(): msg_id, reply = execute(code='ip=get_ipython()') msg_id = KC.inspect('ip.object_inspect', cursor_pos=10, detail_level=1) - reply = KC.get_shell_msg(timeout=TIMEOUT) + while True: + reply = KC.get_shell_msg(timeout=TIMEOUT) + if reply['parent_header']['msg_id'] == msg_id: + break validate_message(reply, 'inspect_reply', msg_id) content = reply['content'] assert content['found'] @@ -443,7 +455,10 @@ def test_oinfo_not_found(): flush_channels() msg_id = KC.inspect('dne') - reply = KC.get_shell_msg(timeout=TIMEOUT) + while True: + reply = KC.get_shell_msg(timeout=TIMEOUT) + if reply['parent_header']['msg_id'] == msg_id: + break validate_message(reply, 'inspect_reply', msg_id) content = reply['content'] assert not content['found'] @@ -455,7 +470,10 @@ def test_complete(): msg_id, reply = execute(code="alpha = albert = 5") msg_id = KC.complete('al', 2) - reply = KC.get_shell_msg(timeout=TIMEOUT) + while True: + reply = KC.get_shell_msg(timeout=TIMEOUT) + if reply['parent_header']['msg_id'] == msg_id: + break validate_message(reply, 'complete_reply', msg_id) matches = reply['content']['matches'] for name in ('alpha', 'albert'): @@ -466,7 +484,10 @@ def test_kernel_info_request(): flush_channels() msg_id = KC.kernel_info() - reply = KC.get_shell_msg(timeout=TIMEOUT) + while True: + reply = KC.get_shell_msg(timeout=TIMEOUT) + if reply['parent_header']['msg_id'] == msg_id: + break validate_message(reply, 'kernel_info_reply', msg_id) @@ -477,7 +498,10 @@ def test_connect_request(): return msg['header']['msg_id'] msg_id = KC.kernel_info() - reply = KC.get_shell_msg(timeout=TIMEOUT) + while True: + reply = KC.get_shell_msg(timeout=TIMEOUT) + if reply['parent_header']['msg_id'] == msg_id: + break validate_message(reply, 'connect_reply', msg_id) @@ -486,7 +510,10 @@ def test_comm_info_request(): if not hasattr(KC, 'comm_info'): raise SkipTest() msg_id = KC.comm_info() - reply = KC.get_shell_msg(timeout=TIMEOUT) + while True: + reply = KC.get_shell_msg(timeout=TIMEOUT) + if reply['parent_header']['msg_id'] == msg_id: + break validate_message(reply, 'comm_info_reply', msg_id) @@ -512,7 +539,10 @@ def test_is_complete(): flush_channels() msg_id = KC.is_complete("a = 1") - reply = KC.get_shell_msg(timeout=TIMEOUT) + while True: + reply = KC.get_shell_msg(timeout=TIMEOUT) + if reply['parent_header']['msg_id'] == msg_id: + break validate_message(reply, 'is_complete_reply', msg_id) def test_history_range(): @@ -522,7 +552,10 @@ def test_history_range(): reply_exec = KC.get_shell_msg(timeout=TIMEOUT) msg_id = KC.history(hist_access_type = 'range', raw = True, output = True, start = 1, stop = 2, session = 0) - reply = KC.get_shell_msg(timeout=TIMEOUT) + while True: + reply = KC.get_shell_msg(timeout=TIMEOUT) + if reply['parent_header']['msg_id'] == msg_id: + break validate_message(reply, 'history_reply', msg_id) content = reply['content'] assert len(content['history']) == 1 @@ -534,7 +567,10 @@ def test_history_tail(): reply_exec = KC.get_shell_msg(timeout=TIMEOUT) msg_id = KC.history(hist_access_type = 'tail', raw = True, output = True, n = 1, session = 0) - reply = KC.get_shell_msg(timeout=TIMEOUT) + while True: + reply = KC.get_shell_msg(timeout=TIMEOUT) + if reply['parent_header']['msg_id'] == msg_id: + break validate_message(reply, 'history_reply', msg_id) content = reply['content'] assert len(content['history']) == 1 @@ -546,7 +582,10 @@ def test_history_search(): reply_exec = KC.get_shell_msg(timeout=TIMEOUT) msg_id = KC.history(hist_access_type = 'search', raw = True, output = True, n = 1, pattern = '*', session = 0) - reply = KC.get_shell_msg(timeout=TIMEOUT) + while True: + reply = KC.get_shell_msg(timeout=TIMEOUT) + if reply['parent_header']['msg_id'] == msg_id: + break validate_message(reply, 'history_reply', msg_id) content = reply['content'] assert len(content['history']) == 1 diff --git a/ipykernel/tests/utils.py b/ipykernel/tests/utils.py index f5d432070..d3051239c 100644 --- a/ipykernel/tests/utils.py +++ b/ipykernel/tests/utils.py @@ -58,7 +58,10 @@ def execute(code='', kc=None, **kwargs): if kc is None: kc = KC msg_id = kc.execute(code=code, **kwargs) - reply = kc.get_shell_msg(timeout=TIMEOUT) + while True: + reply = kc.get_shell_msg(timeout=TIMEOUT) + if reply['parent_header']['msg_id'] == msg_id: + break validate_message(reply, 'execute_reply', msg_id) busy = kc.get_iopub_msg(timeout=TIMEOUT) validate_message(busy, 'status', msg_id)