summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2020-05-24 20:19:30 +0300
committerLars Wirzenius <liw@liw.fi>2020-05-24 20:24:51 +0300
commit83db7a29fd4432f28adcd01039ba468716cacc10 (patch)
tree5a3ac67abf2e8375b39a0e56222b57a5a46975e5
parentf53fa38f71391771011aef390961aa92b08389c3 (diff)
downloadsubplot-83db7a29fd4432f28adcd01039ba468716cacc10.tar.gz
feat: set up a minimal environment in the code templates
-rw-r--r--templates/bash/template.sh11
-rw-r--r--templates/python/template.py13
2 files changed, 24 insertions, 0 deletions
diff --git a/templates/bash/template.sh b/templates/bash/template.sh
index 286e56f..89958d4 100644
--- a/templates/bash/template.sh
+++ b/templates/bash/template.sh
@@ -176,6 +176,8 @@ scenario_{{ loop.index }}() {
scendir="$(mktemp -d -p "$_datadir")"
cd "$scendir"
+ export HOME="$scendir"
+
ctx_new
cleanups[0]=''
steps[0]=''
@@ -227,6 +229,15 @@ scenario_{{ loop.index }}() {
{% endfor %}
#############################################################################
+# Make the environment minimal.
+
+unset $(env | sed 's/=.*//')
+export PATH=/bin:/usr/bin
+export SHELL=/bin/sh
+export HOME=/ # Will be set to datadir for each scenario.
+
+
+#############################################################################
# Run the scenarios.
if [ "$#" = 0 ]
diff --git a/templates/python/template.py b/templates/python/template.py
index a1fa3ee..4ceeb51 100644
--- a/templates/python/template.py
+++ b/templates/python/template.py
@@ -156,6 +156,7 @@ class Scenario:
scendir = tempfile.mkdtemp(dir=_datadir)
os.chdir(scendir)
+ os.environ['HOME'] = scendir
ctx = Context()
done = []
@@ -216,6 +217,17 @@ def parse_command_line():
return p.parse_args()
+def setup_minimal_environment():
+ minimal = {
+ 'PATH': '/bin:/usr/bin',
+ 'SHELL': '/bin/sh',
+ 'HOME': '/', # will be set to datadir for each scenario
+ }
+
+ os.environ.clear()
+ os.environ.update(minimal)
+
+
def setup_logging(args):
if args.log:
fmt = "%(asctime)s %(levelname)s %(message)s"
@@ -243,6 +255,7 @@ def save_directory(dirname, tarname):
def main():
args = parse_command_line()
+ setup_minimal_environment()
setup_logging(args)
logging.info("Test program starts")