Skip to content

Commit e282d59

Browse files
committed
introduce make_mock_extension_app fixture to inject the template_paths
1 parent 5f99e53 commit e282d59

File tree

5 files changed

+27
-23
lines changed

5 files changed

+27
-23
lines changed

jupyter_server/pytest_plugin.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ def mkdir(tmp_path, *parts):
5252
config_dir = pytest.fixture(lambda tmp_path: mkdir(tmp_path, "config"))
5353
runtime_dir = pytest.fixture(lambda tmp_path: mkdir(tmp_path, "runtime"))
5454
root_dir = pytest.fixture(lambda tmp_path: mkdir(tmp_path, "root_dir"))
55+
template_dir = pytest.fixture(lambda tmp_path: mkdir(tmp_path, "template_dir"))
5556
system_jupyter_path = pytest.fixture(
5657
lambda tmp_path: mkdir(tmp_path, "share", "jupyter")
5758
)

tests/extension/conftest.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,14 @@ def _jupyter_server_extension_paths():
3333
'module': '_mockdestination/index'
3434
}]
3535

36+
@pytest.fixture
37+
def make_mock_extension_app(template_dir):
38+
def _make_mock_extension_app(**kwargs):
39+
kwargs.setdefault('template_paths', [str(template_dir)])
40+
return MockExtensionApp(**kwargs)
41+
42+
return _make_mock_extension_app
43+
3644

3745
@pytest.fixture
3846
def config_file(config_dir):
@@ -43,21 +51,21 @@ def config_file(config_dir):
4351

4452

4553
@pytest.fixture
46-
def extended_serverapp(serverapp):
54+
def extended_serverapp(serverapp, make_mock_extension_app):
4755
""""""
48-
m = MockExtensionApp()
56+
m = make_mock_extension_app()
4957
m.initialize(serverapp)
5058
return m
5159

5260

5361
@pytest.fixture
54-
def inject_mock_extension(environ, extension_environ):
62+
def inject_mock_extension(environ, extension_environ, make_mock_extension_app):
5563
"""Fixture that can be used to inject a mock Jupyter Server extension into the tests namespace.
5664
5765
Usage: inject_mock_extension({'extension_name': ExtensionClass})
5866
"""
5967
def ext(modulename="mockextension"):
60-
sys.modules[modulename] = e = MockExtensionApp()
68+
sys.modules[modulename] = e = make_mock_extension_app()
6169
return e
6270

6371
return ext

tests/extension/test_app.py

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,17 @@
33
from jupyter_server.serverapp import ServerApp
44
from jupyter_server.extension.application import ExtensionApp
55

6-
from .conftest import MockExtensionApp
76

8-
9-
def test_instance_creation():
10-
mock_extension = MockExtensionApp()
7+
def test_instance_creation(make_mock_extension_app, template_dir):
8+
mock_extension = make_mock_extension_app()
119
assert mock_extension.static_paths == []
12-
assert mock_extension.template_paths == []
10+
assert mock_extension.template_paths == [str(template_dir)]
1311
assert mock_extension.settings == {}
14-
assert mock_extension.handlers == []
12+
assert mock_extension.handlers == []
1513

1614

17-
def test_initialize(serverapp):
18-
mock_extension = MockExtensionApp()
15+
def test_initialize(serverapp, make_mock_extension_app):
16+
mock_extension = make_mock_extension_app()
1917
mock_extension.initialize(serverapp)
2018
# Check that settings and handlers were added to the mock extension.
2119
assert isinstance(mock_extension.serverapp, ServerApp)
@@ -35,24 +33,24 @@ def test_initialize(serverapp):
3533
'trait_name,trait_value',
3634
traits
3735
)
38-
def test_instance_creation_with_instance_args(trait_name, trait_value):
36+
def test_instance_creation_with_instance_args(trait_name, trait_value, make_mock_extension_app):
3937
kwarg = {}
4038
kwarg.setdefault(trait_name, trait_value)
41-
mock_extension = MockExtensionApp(**kwarg)
39+
mock_extension = make_mock_extension_app(**kwarg)
4240
assert getattr(mock_extension, trait_name) == trait_value
4341

4442

4543
@pytest.mark.parametrize(
4644
'trait_name,trait_value',
4745
traits
4846
)
49-
def test_instance_creation_with_argv(serverapp, trait_name, trait_value):
47+
def test_instance_creation_with_argv(serverapp, trait_name, trait_value, make_mock_extension_app):
5048
kwarg = {}
5149
kwarg.setdefault(trait_name, trait_value)
5250
argv = [
5351
'--MockExtensionApp.{name}={value}'.format(name=trait_name, value=trait_value)
5452
]
55-
mock_extension = MockExtensionApp()
53+
mock_extension = make_mock_extension_app()
5654
mock_extension.initialize(serverapp, argv=argv)
5755
assert getattr(mock_extension, trait_name) == trait_value
5856

tests/extension/test_entrypoint.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
from jupyter_core import paths
44
from jupyter_server.extension import serverextension
55

6-
from .conftest import MockExtensionApp
7-
86
# All test coroutines will be treated as marked.
97
pytestmark = pytest.mark.script_launch_mode('subprocess')
108

tests/extension/test_handler.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import pytest
22

33
from jupyter_server.serverapp import ServerApp
4-
from .conftest import MockExtensionApp
54

65
# ------------------ Start tests -------------------
76

@@ -14,9 +13,9 @@ async def test_handler(fetch, extended_serverapp):
1413
assert r.body.decode() == 'mock trait'
1514

1615

17-
async def test_handler_setting(fetch, serverapp):
16+
async def test_handler_setting(fetch, serverapp, make_mock_extension_app):
1817
# Configure trait in Mock Extension.
19-
m = MockExtensionApp(mock_trait='test mock trait')
18+
m = make_mock_extension_app(mock_trait='test mock trait')
2019
m.initialize(serverapp)
2120

2221
# Test that the extension trait was picked up by the webapp.
@@ -28,9 +27,9 @@ async def test_handler_setting(fetch, serverapp):
2827
assert r.body.decode() == 'test mock trait'
2928

3029

31-
async def test_handler_argv(fetch, serverapp):
30+
async def test_handler_argv(fetch, serverapp, make_mock_extension_app):
3231
# Configure trait in Mock Extension.
33-
m = MockExtensionApp()
32+
m = make_mock_extension_app()
3433
argv = ['--MockExtensionApp.mock_trait="test mock trait"']
3534
m.initialize(serverapp, argv=argv)
3635

0 commit comments

Comments
 (0)