|
3 | 3 | # Copyright (c) IPython Development Team. |
4 | 4 | # Distributed under the terms of the Modified BSD License. |
5 | 5 |
|
| 6 | +import asyncio |
6 | 7 | import os |
| 8 | +import warnings |
7 | 9 |
|
8 | 10 | import pytest |
9 | 11 |
|
@@ -72,6 +74,69 @@ async def test_direct_debug_request(kernel): |
72 | 74 | assert reply["header"]["msg_type"] == "debug_reply" |
73 | 75 |
|
74 | 76 |
|
| 77 | +async def test_deprecated_features(kernel): |
| 78 | + with warnings.catch_warnings(): |
| 79 | + warnings.simplefilter("ignore", DeprecationWarning) |
| 80 | + header = kernel._parent_header |
| 81 | + assert isinstance(header, dict) |
| 82 | + shell_streams = kernel.shell_streams |
| 83 | + assert len(shell_streams) == 1 |
| 84 | + assert shell_streams[0] == kernel.shell_stream |
| 85 | + warnings.simplefilter("ignore", RuntimeWarning) |
| 86 | + kernel.shell_streams = [kernel.shell_stream, kernel.shell_stream] |
| 87 | + |
| 88 | + |
| 89 | +async def test_process_control(kernel): |
| 90 | + from jupyter_client.session import DELIM |
| 91 | + |
| 92 | + class FakeMsg: |
| 93 | + def __init__(self, bytes): |
| 94 | + self.bytes = bytes |
| 95 | + |
| 96 | + await kernel.process_control([FakeMsg(DELIM), 1]) |
| 97 | + msg = kernel._prep_msg("does_not_exist") |
| 98 | + await kernel.process_control(msg) |
| 99 | + |
| 100 | + |
| 101 | +def test_should_handle(kernel): |
| 102 | + msg = kernel.session.msg("debug_request", {}) |
| 103 | + kernel.aborted.add(msg["header"]["msg_id"]) |
| 104 | + assert not kernel.should_handle(kernel.control_stream, msg, []) |
| 105 | + |
| 106 | + |
| 107 | +async def test_dispatch_shell(kernel): |
| 108 | + from jupyter_client.session import DELIM |
| 109 | + |
| 110 | + class FakeMsg: |
| 111 | + def __init__(self, bytes): |
| 112 | + self.bytes = bytes |
| 113 | + |
| 114 | + await kernel.dispatch_shell([FakeMsg(DELIM), 1]) |
| 115 | + msg = kernel._prep_msg("does_not_exist") |
| 116 | + await kernel.dispatch_shell(msg) |
| 117 | + |
| 118 | + |
| 119 | +async def test_enter_eventloop(kernel): |
| 120 | + kernel.eventloop = None |
| 121 | + kernel.enter_eventloop() |
| 122 | + kernel.eventloop = asyncio.get_running_loop() |
| 123 | + kernel.enter_eventloop() |
| 124 | + called = 0 |
| 125 | + |
| 126 | + def check_status(): |
| 127 | + nonlocal called |
| 128 | + if called == 0: |
| 129 | + msg = kernel.session.msg("debug_request", {}) |
| 130 | + kernel.msg_queue.put(msg) |
| 131 | + called += 1 |
| 132 | + kernel.io_loop.call_later(0.001, check_status) |
| 133 | + |
| 134 | + kernel.io_loop.call_later(0.001, check_status) |
| 135 | + kernel.start() |
| 136 | + while called < 2: |
| 137 | + await asyncio.sleep(0.1) |
| 138 | + |
| 139 | + |
75 | 140 | # TODO: this causes deadlock |
76 | 141 | # async def test_direct_usage_request(kernel): |
77 | 142 | # reply = await kernel.test_control_message("usage_request", {}) |
|
0 commit comments