From c33e3d44e6f710f3e7ba0af7e47a754dd8a28b6a Mon Sep 17 00:00:00 2001 From: Robert McLay Date: Mon, 27 Jan 2025 14:36:41 -0700 Subject: [PATCH] Issue #745: posix.setenv does not work with a value of false. It mush be nil --- README.new | 1 + rt/pushenv/err.txt | 14 ++++++++- rt/pushenv/mf/Core3/tryThis/1.0.lua | 1 + rt/pushenv/out.txt | 46 +++++++++++++++++++++++++++++ rt/pushenv/pushenv.tdesc | 11 +++++-- src/MainControl.lua | 3 ++ 6 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 rt/pushenv/mf/Core3/tryThis/1.0.lua diff --git a/README.new b/README.new index fe06e20cb..b557a8d2b 100644 --- a/README.new +++ b/README.new @@ -203,3 +203,4 @@ W.I.P: * Fixed LMOD_FILE_IGNORE_PATTERNS so that it can be an env. var and converted to a Lua array table. * Documented LMOD_FILE_IGNORE_PATTERNS * Issue #740: Rewrite ModuleA l_find_vA so that it checks partial version strings. + * Issue #745: posix.setenv("var", false, true) must change to posix.setenv("var", nil, true). diff --git a/rt/pushenv/err.txt b/rt/pushenv/err.txt index 7ad3d4495..cb2487f4c 100644 --- a/rt/pushenv/err.txt +++ b/rt/pushenv/err.txt @@ -2,7 +2,7 @@ step 1 lua ProjectDIR/src/lmod.in.lua shell --regression_testing --version =========================== -Modules based on Lua: Version 8.7.40 2024-06-11 15:18 -06:00 +Modules based on Lua: Version 8.7.55 2024-12-13 12:24 -07:00 by Robert McLay mclay@tacc.utexas.edu =========================== step 2 @@ -114,3 +114,15 @@ lua ProjectDIR/src/lmod.in.lua shell --regression_testing unload second step 27 echo FOO=%% BAZ=% % =========================== +=========================== +step 28 +lua ProjectDIR/src/lmod.in.lua shell --regression_testing purge +=========================== +=========================== +step 29 +lua ProjectDIR/src/lmod.in.lua shell --regression_testing load tryThis +=========================== +=========================== +step 30 +lua ProjectDIR/src/lmod.in.lua shell --regression_testing refresh +=========================== diff --git a/rt/pushenv/mf/Core3/tryThis/1.0.lua b/rt/pushenv/mf/Core3/tryThis/1.0.lua new file mode 100644 index 000000000..30323f70a --- /dev/null +++ b/rt/pushenv/mf/Core3/tryThis/1.0.lua @@ -0,0 +1 @@ +pushenv("TESTVAR",false) diff --git a/rt/pushenv/out.txt b/rt/pushenv/out.txt index 15c5e7f89..5d57d481b 100644 --- a/rt/pushenv/out.txt +++ b/rt/pushenv/out.txt @@ -447,3 +447,49 @@ step 27 echo FOO=%% BAZ=% % =========================== FOO=%% BAZ=% % +=========================== +step 28 +lua ProjectDIR/src/lmod.in.lua shell --regression_testing purge +=========================== +unset A; +unset B; +unset BAR; +unset BAZ; +unset C; +unset FOO; +unset LOADEDMODULES; +MODULEPATH=ProjectDIR/rt/pushenv/mf/Core2; +export MODULEPATH; +unset _LMFILES_; +_ModuleTable_='_ModuleTable_={MTversion=3,depthT={},family={},mT={},mpathA={"ProjectDIR/rt/pushenv/mf/Core2",},systemBaseMPATH="ProjectDIR/rt/pushenv/mf/Core2",}'; +export _ModuleTable_; +unset __LMOD_STACK_A; +unset __LMOD_STACK_B; +unset __LMOD_STACK_BAZ; +unset __LMOD_STACK_C; +unset __LMOD_STACK_FOO; +=========================== +step 29 +lua ProjectDIR/src/lmod.in.lua shell --regression_testing load tryThis +=========================== +LOADEDMODULES=tryThis/1.0; +export LOADEDMODULES; +__LMOD_REF_COUNT_MODULEPATH=ProjectDIR/rt/pushenv/mf/Core3:1; +export __LMOD_REF_COUNT_MODULEPATH; +MODULEPATH=ProjectDIR/rt/pushenv/mf/Core3; +export MODULEPATH; +unset TESTVAR; +_LMFILES_=ProjectDIR/rt/pushenv/mf/Core3/tryThis/1.0.lua; +export _LMFILES_; +_ModuleTable_='_ModuleTable_={MTversion=3,depthT={},family={},mT={tryThis={fn="ProjectDIR/rt/pushenv/mf/Core3/tryThis/1.0.lua",fullName="tryThis/1.0",loadOrder=1,propT={},stackDepth=0,status="active",userName="tryThis",wV="000000001.*zfinal",},},mpathA={"ProjectDIR/rt/pushenv/mf/Core3",},systemBaseMPATH="ProjectDIR/rt/pushenv/mf/Core3",}'; +export _ModuleTable_; +__LMOD_STACK_TESTVAR=false:tryThis; +export __LMOD_STACK_TESTVAR; +=========================== +step 30 +lua ProjectDIR/src/lmod.in.lua shell --regression_testing refresh +=========================== +MODULEPATH=ProjectDIR/rt/pushenv/mf/Core3; +export MODULEPATH; +_ModuleTable_='_ModuleTable_={MTversion=3,depthT={},family={},mT={tryThis={fn="ProjectDIR/rt/pushenv/mf/Core3/tryThis/1.0.lua",fullName="tryThis/1.0",loadOrder=1,propT={},stackDepth=0,status="active",userName="tryThis",wV="000000001.*zfinal",},},mpathA={"ProjectDIR/rt/pushenv/mf/Core3",},systemBaseMPATH="ProjectDIR/rt/pushenv/mf/Core3",}'; +export _ModuleTable_; diff --git a/rt/pushenv/pushenv.tdesc b/rt/pushenv/pushenv.tdesc index d3bdde7a5..48ac47db3 100644 --- a/rt/pushenv/pushenv.tdesc +++ b/rt/pushenv/pushenv.tdesc @@ -66,10 +66,15 @@ testdescript = { runLmod unload second #26 runBase echo FOO="%$FOO%" BAZ="%$BAZ%" #27 + #-------------------------------------------------------------- + # Issue: #745: pushenv("FOO",false) then module refresh - - - + runLmod purge #28 + unsetMT + MODULEPATH=$MODULEPATH_ROOT/Core3; export MODULEPATH + export TESTVAR="tryThis" + runLmod load tryThis #29 + runLmod refresh #30 HOME_ORIG=$HOME diff --git a/src/MainControl.lua b/src/MainControl.lua index 67df1e6d9..0597f1cde 100644 --- a/src/MainControl.lua +++ b/src/MainControl.lua @@ -346,6 +346,9 @@ function M.setenv_env(self, name, value, respect) name = (name or ""):trim() dbg.start{"MainControl:setenv_env(\"",name,"\", \"",value,"\", \"", respect,"\")"} + if (value == false) then + value = nil + end posix.setenv(name, value, true) dbg.fini("MainControl:setenv_env") end