diff --git a/integration-tests/plugins/simplest/tljh_simplest.py b/integration-tests/plugins/simplest/tljh_simplest.py index 4e03f3c..3c6a3f7 100644 --- a/integration-tests/plugins/simplest/tljh_simplest.py +++ b/integration-tests/plugins/simplest/tljh_simplest.py @@ -39,4 +39,10 @@ def tljh_config_post_install(config): @hookimpl def tljh_custom_jupyterhub_config(c): - c.JupyterHub.authenticator_class = 'tmpauthenticator.TmpAuthenticator' \ No newline at end of file + c.JupyterHub.authenticator_class = 'tmpauthenticator.TmpAuthenticator' + + +@hookimpl +def tljh_post_install(): + with open('test_post_install', 'w') as f: + f.write('123456789') diff --git a/integration-tests/test_simplest_plugin.py b/integration-tests/test_simplest_plugin.py index 37d17c4..bb07a83 100644 --- a/integration-tests/test_simplest_plugin.py +++ b/integration-tests/test_simplest_plugin.py @@ -54,6 +54,7 @@ def test_config_hook(): assert data['simplest_plugin']['present'] + def test_jupyterhub_config_hook(): """ Test that tmpauthenticator is enabled by our custom config plugin @@ -61,3 +62,13 @@ def test_jupyterhub_config_hook(): resp = requests.get('http://localhost/hub/tmplogin', allow_redirects=False) assert resp.status_code == 302 assert resp.headers['Location'] == '/hub/spawn' + + +def test_post_install_hook(): + """ + Test that the test_post_install file has the correct content + """ + with open("test_post_install") as f: + content = f.read() + + assert content == "123456789" diff --git a/tljh/hooks.py b/tljh/hooks.py index 8ab8d13..d59f246 100644 --- a/tljh/hooks.py +++ b/tljh/hooks.py @@ -58,4 +58,14 @@ def tljh_config_post_install(config): be the serialized contents of config, so try to not overwrite anything the user might have explicitly set. """ + pass + +@hookspec +def tljh_post_install(): + """ + Post install script to be executed after installation + and after all the other hooks. + + This can be arbitrary Python code. + """ pass \ No newline at end of file diff --git a/tljh/installer.py b/tljh/installer.py index 3a4ea93..05055e2 100644 --- a/tljh/installer.py +++ b/tljh/installer.py @@ -405,6 +405,9 @@ def run_plugin_actions(plugin_manager, plugins): )) conda.ensure_pip_packages(USER_ENV_PREFIX, user_pip_packages) + # Custom post install actions + hook.tljh_post_install() + def ensure_config_yaml(plugin_manager): """