Skip to content

Commit a48e2f5

Browse files
committed
restore pytest settings and remove usages of jp_cleanup_subprocesses
1 parent 68c4b7e commit a48e2f5

File tree

7 files changed

+31
-112
lines changed

7 files changed

+31
-112
lines changed

jupyter_server/pytest_plugin.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -482,7 +482,7 @@ def jp_server_cleanup(io_loop):
482482

483483
@pytest.fixture
484484
def jp_cleanup_subprocesses(jp_serverapp):
485-
"""Clean up subprocesses started by a Jupyter Server, i.e. kernels and terminal."""
485+
"""DEPRECATED: The jp_server_cleanup fixture automatically cleans up the singleton ServerApp class"""
486486

487487
async def _():
488488
pass

pyproject.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ addopts = "-raXs --durations 10 --color=yes --doctest-modules"
1313
testpaths = [
1414
"tests/"
1515
]
16-
timeout = 30
16+
timeout = 300
1717
# Restore this setting to debug failures
18-
timeout_method = "thread"
18+
# timeout_method = "thread"
1919
filterwarnings = [
2020
"error",
2121
"ignore:There is no current event loop:DeprecationWarning",

tests/auth/test_authorizer.py

-3
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,6 @@ async def test_authorized_requests(
205205
send_request,
206206
tmp_path,
207207
jp_serverapp,
208-
jp_cleanup_subprocesses,
209208
method,
210209
url,
211210
body,
@@ -275,5 +274,3 @@ async def test_authorized_requests(
275274

276275
code = await send_request(url, body=body, method=method)
277276
assert code in expected_codes
278-
279-
await jp_cleanup_subprocesses()

tests/services/kernels/test_api.py

+6-16
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ async def test_no_kernels(jp_fetch):
6767

6868

6969
@pytest.mark.timeout(TEST_TIMEOUT)
70-
async def test_default_kernels(jp_fetch, jp_base_url, jp_cleanup_subprocesses):
70+
async def test_default_kernels(jp_fetch, jp_base_url):
7171
r = await jp_fetch("api", "kernels", method="POST", allow_nonstandard_methods=True)
7272
kernel = json.loads(r.body.decode())
7373
assert r.headers["location"] == url_path_join(jp_base_url, "/api/kernels/", kernel["id"])
@@ -79,13 +79,10 @@ async def test_default_kernels(jp_fetch, jp_base_url, jp_cleanup_subprocesses):
7979
["frame-ancestors 'self'", "report-uri " + report_uri, "default-src 'none'"]
8080
)
8181
assert r.headers["Content-Security-Policy"] == expected_csp
82-
await jp_cleanup_subprocesses()
8382

8483

8584
@pytest.mark.timeout(TEST_TIMEOUT)
86-
async def test_main_kernel_handler(
87-
jp_fetch, jp_base_url, jp_cleanup_subprocesses, jp_serverapp, pending_kernel_is_ready
88-
):
85+
async def test_main_kernel_handler(jp_fetch, jp_base_url, jp_serverapp, pending_kernel_is_ready):
8986
# Start the first kernel
9087
r = await jp_fetch(
9188
"api", "kernels", method="POST", body=json.dumps({"name": NATIVE_KERNEL_NAME})
@@ -158,11 +155,10 @@ async def test_main_kernel_handler(
158155
)
159156
kernel3 = json.loads(r.body.decode())
160157
assert isinstance(kernel3, dict)
161-
await jp_cleanup_subprocesses()
162158

163159

164160
@pytest.mark.timeout(TEST_TIMEOUT)
165-
async def test_kernel_handler(jp_fetch, jp_cleanup_subprocesses, pending_kernel_is_ready):
161+
async def test_kernel_handler(jp_fetch, pending_kernel_is_ready):
166162
# Create a kernel
167163
r = await jp_fetch(
168164
"api", "kernels", method="POST", body=json.dumps({"name": NATIVE_KERNEL_NAME})
@@ -206,13 +202,10 @@ async def test_kernel_handler(jp_fetch, jp_cleanup_subprocesses, pending_kernel_
206202
with pytest.raises(tornado.httpclient.HTTPClientError) as e:
207203
await jp_fetch("api", "kernels", bad_id, method="DELETE")
208204
assert expected_http_error(e, 404, "Kernel does not exist: " + bad_id)
209-
await jp_cleanup_subprocesses()
210205

211206

212207
@pytest.mark.timeout(TEST_TIMEOUT)
213-
async def test_kernel_handler_startup_error(
214-
jp_fetch, jp_cleanup_subprocesses, jp_serverapp, jp_kernelspecs
215-
):
208+
async def test_kernel_handler_startup_error(jp_fetch, jp_serverapp, jp_kernelspecs):
216209
if getattr(jp_serverapp.kernel_manager, "use_pending_kernels", False):
217210
return
218211

@@ -223,7 +216,7 @@ async def test_kernel_handler_startup_error(
223216

224217
@pytest.mark.timeout(TEST_TIMEOUT)
225218
async def test_kernel_handler_startup_error_pending(
226-
jp_fetch, jp_ws_fetch, jp_cleanup_subprocesses, jp_serverapp, jp_kernelspecs
219+
jp_fetch, jp_ws_fetch, jp_serverapp, jp_kernelspecs
227220
):
228221
if not getattr(jp_serverapp.kernel_manager, "use_pending_kernels", False):
229222
return
@@ -238,9 +231,7 @@ async def test_kernel_handler_startup_error_pending(
238231

239232

240233
@pytest.mark.timeout(TEST_TIMEOUT)
241-
async def test_connection(
242-
jp_fetch, jp_ws_fetch, jp_http_port, jp_auth_header, jp_cleanup_subprocesses
243-
):
234+
async def test_connection(jp_fetch, jp_ws_fetch, jp_http_port, jp_auth_header):
244235
# Create kernel
245236
r = await jp_fetch(
246237
"api", "kernels", method="POST", body=json.dumps({"name": NATIVE_KERNEL_NAME})
@@ -274,4 +265,3 @@ async def test_connection(
274265
r = await jp_fetch("api", "kernels", kid, method="GET")
275266
model = json.loads(r.body.decode())
276267
assert model["connections"] == 0
277-
await jp_cleanup_subprocesses()

tests/services/kernels/test_cull.py

+2-6
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
),
4444
],
4545
)
46-
async def test_cull_idle(jp_fetch, jp_ws_fetch, jp_cleanup_subprocesses):
46+
async def test_cull_idle(jp_fetch, jp_ws_fetch):
4747
r = await jp_fetch("api", "kernels", method="POST", allow_nonstandard_methods=True)
4848
kernel = json.loads(r.body.decode())
4949
kid = kernel["id"]
@@ -59,7 +59,6 @@ async def test_cull_idle(jp_fetch, jp_ws_fetch, jp_cleanup_subprocesses):
5959
ws.close()
6060
culled = await get_cull_status(kid, jp_fetch) # not connected, should be culled
6161
assert culled
62-
await jp_cleanup_subprocesses()
6362

6463

6564
# Pending kernels was released in Jupyter Client 7.1
@@ -89,9 +88,7 @@ async def test_cull_idle(jp_fetch, jp_ws_fetch, jp_cleanup_subprocesses):
8988
],
9089
)
9190
@pytest.mark.timeout(30)
92-
async def test_cull_dead(
93-
jp_fetch, jp_ws_fetch, jp_serverapp, jp_cleanup_subprocesses, jp_kernelspecs
94-
):
91+
async def test_cull_dead(jp_fetch, jp_ws_fetch, jp_serverapp, jp_kernelspecs):
9592
r = await jp_fetch("api", "kernels", method="POST", allow_nonstandard_methods=True)
9693
kernel = json.loads(r.body.decode())
9794
kid = kernel["id"]
@@ -105,7 +102,6 @@ async def test_cull_dead(
105102
assert model["connections"] == 0
106103
culled = await get_cull_status(kid, jp_fetch) # connected, should not be culled
107104
assert culled
108-
await jp_cleanup_subprocesses()
109105

110106

111107
async def get_cull_status(kid, jp_fetch):

tests/services/sessions/test_api.py

+14-68
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ def assert_session_equality(actual, expected):
211211

212212

213213
@pytest.mark.timeout(TEST_TIMEOUT)
214-
async def test_create(session_client, jp_base_url, jp_cleanup_subprocesses, jp_serverapp):
214+
async def test_create(session_client, jp_base_url, jp_serverapp):
215215
# Make sure no sessions exist.
216216
resp = await session_client.list()
217217
sessions = j(resp)
@@ -251,14 +251,9 @@ async def test_create(session_client, jp_base_url, jp_cleanup_subprocesses, jp_s
251251
got = j(resp)
252252
assert_session_equality(got, new_session)
253253

254-
# Need to find a better solution to this.
255-
await jp_cleanup_subprocesses()
256-
257254

258255
@pytest.mark.timeout(TEST_TIMEOUT)
259-
async def test_create_bad(
260-
session_client, jp_base_url, jp_cleanup_subprocesses, jp_serverapp, jp_kernelspecs
261-
):
256+
async def test_create_bad(session_client, jp_base_url, jp_serverapp, jp_kernelspecs):
262257
if getattr(jp_serverapp.kernel_manager, "use_pending_kernels", False):
263258
return
264259

@@ -272,16 +267,12 @@ async def test_create_bad(
272267
with pytest.raises(HTTPClientError):
273268
await session_client.create("foo/nb1.ipynb")
274269

275-
# Need to find a better solution to this.
276-
await jp_cleanup_subprocesses()
277-
278270

279271
@pytest.mark.timeout(TEST_TIMEOUT)
280272
async def test_create_bad_pending(
281273
session_client,
282274
jp_base_url,
283275
jp_ws_fetch,
284-
jp_cleanup_subprocesses,
285276
jp_serverapp,
286277
jp_kernelspecs,
287278
):
@@ -310,56 +301,41 @@ async def test_create_bad_pending(
310301
if os.name != "nt":
311302
assert "non_existent_path" in session["kernel"]["reason"]
312303

313-
# Need to find a better solution to this.
314-
await jp_cleanup_subprocesses()
315-
316304

317305
@pytest.mark.timeout(TEST_TIMEOUT)
318-
async def test_create_file_session(
319-
session_client, jp_cleanup_subprocesses, jp_serverapp, session_is_ready
320-
):
306+
async def test_create_file_session(session_client, jp_serverapp, session_is_ready):
321307
resp = await session_client.create("foo/nb1.py", type="file")
322308
assert resp.code == 201
323309
newsession = j(resp)
324310
assert newsession["path"] == "foo/nb1.py"
325311
assert newsession["type"] == "file"
326312
sid = newsession["id"]
327313
await session_is_ready(sid)
328-
await jp_cleanup_subprocesses()
329314

330315

331316
@pytest.mark.timeout(TEST_TIMEOUT)
332-
async def test_create_console_session(
333-
session_client, jp_cleanup_subprocesses, jp_serverapp, session_is_ready
334-
):
317+
async def test_create_console_session(session_client, jp_serverapp, session_is_ready):
335318
resp = await session_client.create("foo/abc123", type="console")
336319
assert resp.code == 201
337320
newsession = j(resp)
338321
assert newsession["path"] == "foo/abc123"
339322
assert newsession["type"] == "console"
340-
# Need to find a better solution to this.
341323
sid = newsession["id"]
342324
await session_is_ready(sid)
343-
await jp_cleanup_subprocesses()
344325

345326

346327
@pytest.mark.timeout(TEST_TIMEOUT)
347-
async def test_create_deprecated(session_client, jp_cleanup_subprocesses, jp_serverapp):
328+
async def test_create_deprecated(session_client, jp_serverapp):
348329
resp = await session_client.create_deprecated("foo/nb1.ipynb")
349330
assert resp.code == 201
350331
newsession = j(resp)
351332
assert newsession["path"] == "foo/nb1.ipynb"
352333
assert newsession["type"] == "notebook"
353334
assert newsession["notebook"]["path"] == "foo/nb1.ipynb"
354-
# Need to find a better solution to this.
355-
sid = newsession["id"]
356-
await jp_cleanup_subprocesses()
357335

358336

359337
@pytest.mark.timeout(TEST_TIMEOUT)
360-
async def test_create_with_kernel_id(
361-
session_client, jp_fetch, jp_base_url, jp_cleanup_subprocesses, jp_serverapp
362-
):
338+
async def test_create_with_kernel_id(session_client, jp_fetch, jp_base_url, jp_serverapp):
363339
# create a new kernel
364340
resp = await jp_fetch("api/kernels", method="POST", allow_nonstandard_methods=True)
365341
kernel = j(resp)
@@ -384,14 +360,10 @@ async def test_create_with_kernel_id(
384360
resp = await session_client.get(sid)
385361
got = j(resp)
386362
assert_session_equality(got, new_session)
387-
# Need to find a better solution to this.
388-
await jp_cleanup_subprocesses()
389363

390364

391365
@pytest.mark.timeout(TEST_TIMEOUT)
392-
async def test_create_with_bad_kernel_id(
393-
session_client, jp_cleanup_subprocesses, jp_serverapp, session_is_ready
394-
):
366+
async def test_create_with_bad_kernel_id(session_client, jp_serverapp, session_is_ready):
395367
resp = await session_client.create("foo/nb1.py", type="file")
396368
assert resp.code == 201
397369
newsession = j(resp)
@@ -401,11 +373,10 @@ async def test_create_with_bad_kernel_id(
401373
# TODO
402374
assert newsession["path"] == "foo/nb1.py"
403375
assert newsession["type"] == "file"
404-
await jp_cleanup_subprocesses()
405376

406377

407378
@pytest.mark.timeout(TEST_TIMEOUT)
408-
async def test_delete(session_client, jp_cleanup_subprocesses, jp_serverapp, session_is_ready):
379+
async def test_delete(session_client, jp_serverapp, session_is_ready):
409380
resp = await session_client.create("foo/nb1.ipynb")
410381

411382
newsession = j(resp)
@@ -422,12 +393,10 @@ async def test_delete(session_client, jp_cleanup_subprocesses, jp_serverapp, ses
422393
with pytest.raises(tornado.httpclient.HTTPClientError) as e:
423394
await session_client.get(sid)
424395
assert expected_http_error(e, 404)
425-
# Need to find a better solution to this.
426-
await jp_cleanup_subprocesses()
427396

428397

429398
@pytest.mark.timeout(TEST_TIMEOUT)
430-
async def test_modify_path(session_client, jp_cleanup_subprocesses, jp_serverapp, session_is_ready):
399+
async def test_modify_path(session_client, jp_serverapp, session_is_ready):
431400
resp = await session_client.create("foo/nb1.ipynb")
432401
newsession = j(resp)
433402
sid = newsession["id"]
@@ -437,14 +406,10 @@ async def test_modify_path(session_client, jp_cleanup_subprocesses, jp_serverapp
437406
changed = j(resp)
438407
assert changed["id"] == sid
439408
assert changed["path"] == "nb2.ipynb"
440-
# Need to find a better solution to this.
441-
await jp_cleanup_subprocesses()
442409

443410

444411
@pytest.mark.timeout(TEST_TIMEOUT)
445-
async def test_modify_path_deprecated(
446-
session_client, jp_cleanup_subprocesses, jp_serverapp, session_is_ready
447-
):
412+
async def test_modify_path_deprecated(session_client, jp_serverapp, session_is_ready):
448413
resp = await session_client.create("foo/nb1.ipynb")
449414
newsession = j(resp)
450415
sid = newsession["id"]
@@ -454,12 +419,10 @@ async def test_modify_path_deprecated(
454419
changed = j(resp)
455420
assert changed["id"] == sid
456421
assert changed["notebook"]["path"] == "nb2.ipynb"
457-
# Need to find a better solution to this.
458-
await jp_cleanup_subprocesses()
459422

460423

461424
@pytest.mark.timeout(TEST_TIMEOUT)
462-
async def test_modify_type(session_client, jp_cleanup_subprocesses, jp_serverapp, session_is_ready):
425+
async def test_modify_type(session_client, jp_serverapp, session_is_ready):
463426
resp = await session_client.create("foo/nb1.ipynb")
464427
newsession = j(resp)
465428
sid = newsession["id"]
@@ -469,14 +432,10 @@ async def test_modify_type(session_client, jp_cleanup_subprocesses, jp_serverapp
469432
changed = j(resp)
470433
assert changed["id"] == sid
471434
assert changed["type"] == "console"
472-
# Need to find a better solution to this.
473-
await jp_cleanup_subprocesses()
474435

475436

476437
@pytest.mark.timeout(TEST_TIMEOUT)
477-
async def test_modify_kernel_name(
478-
session_client, jp_fetch, jp_cleanup_subprocesses, jp_serverapp, session_is_ready
479-
):
438+
async def test_modify_kernel_name(session_client, jp_fetch, jp_serverapp, session_is_ready):
480439
resp = await session_client.create("foo/nb1.ipynb")
481440
before = j(resp)
482441
sid = before["id"]
@@ -497,14 +456,9 @@ async def test_modify_kernel_name(
497456
if not getattr(jp_serverapp.kernel_manager, "use_pending_kernels", False):
498457
assert kernel_list == [after["kernel"]]
499458

500-
# Need to find a better solution to this.
501-
await jp_cleanup_subprocesses()
502-
503459

504460
@pytest.mark.timeout(TEST_TIMEOUT)
505-
async def test_modify_kernel_id(
506-
session_client, jp_fetch, jp_cleanup_subprocesses, jp_serverapp, session_is_ready
507-
):
461+
async def test_modify_kernel_id(session_client, jp_fetch, jp_serverapp, session_is_ready):
508462
resp = await session_client.create("foo/nb1.ipynb")
509463
before = j(resp)
510464
sid = before["id"]
@@ -532,14 +486,9 @@ async def test_modify_kernel_id(
532486
if not getattr(jp_serverapp.kernel_manager, "use_pending_kernels", False):
533487
assert kernel_list == [kernel]
534488

535-
# Need to find a better solution to this.
536-
await jp_cleanup_subprocesses()
537-
538489

539490
@pytest.mark.timeout(TEST_TIMEOUT)
540-
async def test_restart_kernel(
541-
session_client, jp_base_url, jp_fetch, jp_ws_fetch, jp_cleanup_subprocesses, session_is_ready
542-
):
491+
async def test_restart_kernel(session_client, jp_base_url, jp_fetch, jp_ws_fetch, session_is_ready):
543492
# Create a session.
544493
resp = await session_client.create("foo/nb1.ipynb")
545494
assert resp.code == 201
@@ -596,6 +545,3 @@ async def test_restart_kernel(
596545
r = await jp_fetch("api", "kernels", kid, method="GET")
597546
model = json.loads(r.body.decode())
598547
assert model["connections"] == 1
599-
600-
# Need to find a better solution to this.
601-
await jp_cleanup_subprocesses()

0 commit comments

Comments
 (0)