diff --git a/tests/docker-stacks-foundation/run-hooks-unset/a.sh b/tests/docker-stacks-foundation/run-hooks-unset/a.sh new file mode 100644 index 0000000000..61701e2a82 --- /dev/null +++ b/tests/docker-stacks-foundation/run-hooks-unset/a.sh @@ -0,0 +1,6 @@ +#!/bin/bash +# Copyright (c) Jupyter Development Team. +# Distributed under the terms of the Modified BSD License. + +export MY_VAR=123 +echo "Inside a.sh MY_VAR variable has ${MY_VAR} value" diff --git a/tests/docker-stacks-foundation/run-hooks-unset/b.sh b/tests/docker-stacks-foundation/run-hooks-unset/b.sh new file mode 100644 index 0000000000..ab64e932b2 --- /dev/null +++ b/tests/docker-stacks-foundation/run-hooks-unset/b.sh @@ -0,0 +1,7 @@ +#!/bin/bash +# Copyright (c) Jupyter Development Team. +# Distributed under the terms of the Modified BSD License. + +echo "Inside b.sh MY_VAR variable has ${MY_VAR} value" +echo "Unsetting MY_VAR" +unset MY_VAR diff --git a/tests/docker-stacks-foundation/run-hooks-unset/c.sh b/tests/docker-stacks-foundation/run-hooks-unset/c.sh new file mode 100644 index 0000000000..ef69df395f --- /dev/null +++ b/tests/docker-stacks-foundation/run-hooks-unset/c.sh @@ -0,0 +1,5 @@ +#!/bin/bash +# Copyright (c) Jupyter Development Team. +# Distributed under the terms of the Modified BSD License. + +echo "Inside c.sh MY_VAR variable has ${MY_VAR} value" diff --git a/tests/docker-stacks-foundation/test_run_hooks.py b/tests/docker-stacks-foundation/test_run_hooks.py index 0774f5f59d..483b68175f 100644 --- a/tests/docker-stacks-foundation/test_run_hooks.py +++ b/tests/docker-stacks-foundation/test_run_hooks.py @@ -127,3 +127,25 @@ def test_run_hooks_with_failures(container: TrackedContainer) -> None: ) assert "OTHER_VAR=456" in logs + + +def test_run_hooks_unset(container: TrackedContainer) -> None: + host_data_dir = THIS_DIR / "run-hooks-unset" + cont_data_dir = "/home/jovyan/data" + # https://forums.docker.com/t/all-files-appear-as-executable-in-file-paths-using-bind-mount/99921 + # Unfortunately, Docker treats all files in mounter dir as executable files + # So we make a copy of mounted dir inside a container + command = ( + "cp -r /home/jovyan/data/ /home/jovyan/data-copy/ &&" + "source /usr/local/bin/run-hooks.sh /home/jovyan/data-copy/" + ) + logs = container.run_and_wait( + timeout=5, + volumes={str(host_data_dir): {"bind": cont_data_dir, "mode": "ro"}}, + tty=True, + command=["bash", "-c", command], + ) + assert "Inside a.sh MY_VAR variable has 123 value" in logs + assert "Inside b.sh MY_VAR variable has 123 value" in logs + assert "Unsetting MY_VAR" in logs + assert "Inside c.sh MY_VAR variable has value" in logs