# # # patch "tester.cc" # from [92f084120ecb09cf0c92c3f291070cfe250a88b8] # to [dd220bcf13b0837562660dbcbd1eadc5f85e6784] # # patch "tester.lua" # from [5fbd70278ff8878b3d5ee65b0650449f90356132] # to [8ec06c74bad74bfd0fb2000f39cc2c88d18c5467] # ============================================================ --- tester.cc 92f084120ecb09cf0c92c3f291070cfe250a88b8 +++ tester.cc dd220bcf13b0837562660dbcbd1eadc5f85e6784 @@ -413,15 +413,30 @@ LUAEXT(set_env, ) { char const * var = luaL_checkstring(L, -2); char const * val = luaL_checkstring(L, -1); - char const * old = getenv(var); - if (old) - orig_env_vars.insert(make_pair(string(var), string(old))); - else - orig_env_vars.insert(make_pair(string(var), "")); + if (orig_env_vars.find(string(var)) == orig_env_vars.end()) { + char const * old = getenv(var); + if (old) + orig_env_vars.insert(make_pair(string(var), string(old))); + else + orig_env_vars.insert(make_pair(string(var), "")); + } setenv(var, val); return 0; } +LUAEXT(unset_env, ) +{ + char const * var = luaL_checkstring(L, -2); + if (orig_env_vars.find(string(var)) == orig_env_vars.end()) { + char const * old = getenv(var); + if (old) + orig_env_vars.insert(make_pair(string(var), string(old))); + else + orig_env_vars.insert(make_pair(string(var), "")); + } + unsetenv(var); +} + LUAEXT(timed_wait, ) { pid_t pid = static_cast(luaL_checknumber(L, -2)); ============================================================ --- tester.lua 5fbd70278ff8878b3d5ee65b0650449f90356132 +++ tester.lua 8ec06c74bad74bfd0fb2000f39cc2c88d18c5467 @@ -818,6 +818,7 @@ function run_tests(args) local of_interest = {} local function runtest(i, tname) + save_env() local env = {} local genv = getfenv(0) for x,y in pairs(genv) do @@ -888,7 +889,6 @@ function run_tests(args) end end test.errline = errline - restore_env() posix_umask(oldmask) end @@ -947,9 +947,9 @@ function run_tests(args) end end counts.total = counts.total + 1 + restore_env() end - save_env() if run_all then for i,t in pairs(tests) do if list_only then