commit bbc17ff57e61cee529d92f38864dfde648a50482
parent 87c98e1eb4cc3d633c5af2e6a288c6f5de5720cc
Author: Richard Ipsum <richardipsum@vx21.xyz>
Date:   Tue,  7 Jan 2020 17:58:18 +0000
Write a file with environ contents to DATADIR
This can help with debugging failing scenarios.
Diffstat:
1 file changed, 17 insertions(+), 1 deletion(-)
diff --git a/tyarn.lua.in b/tyarn.lua.in
@@ -289,6 +289,19 @@ function env_from_table(env)
     return e
 end
 
+function write_env_to_file(datadir, envvars)
+    local path = datadir .. "/ENV"
+    local file, err = io.open(path, "w")
+    if file == nil then
+        io.stderr:write(string.format("Couldn't open `%s': %s\n", path, err))
+        os.exit(1)
+    end
+    for _, var in pairs(envvars) do
+        file:write(var .. '\n')
+    end
+    file:close()
+end
+
 function run_step(scenario_dir, datadir, implementations, scenario_key, step, shell_prelude)
     success = true
     skip_scenario = false
@@ -310,6 +323,7 @@ function run_step(scenario_dir, datadir, implementations, scenario_key, step, sh
         env[string.format('MATCH_%d', n)] = capture
     end
 
+    -- Add any environment variables passed via command line
     for k, v in pairs(parsed_env) do
         env[k] = v
     end
@@ -341,7 +355,9 @@ function run_step(scenario_dir, datadir, implementations, scenario_key, step, sh
     debug('shell_script_str:', shell_script_str)
 
     cmd = {"/usr/bin/env", parsed_args["shell"] or DEFAULT_SHELL, path}
-    ret, exit_code, stdout, stderr = tyarn.exec(cmd, env_from_table(env), datadir)
+    envvars = env_from_table(env)
+    write_env_to_file(datadir, envvars)
+    ret, exit_code, stdout, stderr = tyarn.exec(cmd, envvars, datadir)
     if parsed_args["show_stdout"] and string.len(stdout) > 0 then
         io.stderr:write("STDOUT:\n" .. stdout)
     end