Skip to content

Commit c582cdd

Browse files
author
Robert McLay
committed
merging in set_alias test
2 parents 0bd2dfc + 886e06f commit c582cdd

File tree

10 files changed

+157
-31
lines changed

10 files changed

+157
-31
lines changed

README.new

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,7 @@ W.I.P:
209209
Modified convertSh2MF.lua support converting export -f func to export_shell_function("func")
210210
Make "export -f funcName" appear last in bash/zsh/sh shell output
211211
* PR #752: Ensure m_Module_Msgs_close has an ending newline
212-
* Issue #743: "module show noSuchModule" return an LmodError instead of
213-
LmodWarning except when $LMOD_QUIET is set
212+
* Issue #743: "module show noSuchModule" return an LmodError.
213+
When $LMOD_QUIET is set LmodWarning is executed (but since LMOD_QUIET=1, LmodWarning produces nothing)
214214
* Issue #749: set display mode when executing "module update"
215+
* Issue #748: Remove blank lines from shell function definitions

pkgs/tcl2lua/tcl2lua.c

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@
88
#define MYNAME "tcl2lua"
99
#define MYVERSION MYNAME " 0.1"
1010

11-
static char* resultStr = NULL;
12-
static int rlen = 0;
11+
typedef struct _results {
12+
char* resultStr;
13+
int rlen;
14+
} results_t;
1315

1416
/*
1517
* The sLiteral argument *must* be a string literal; the incantation with
@@ -23,6 +25,8 @@ int setResultsObjCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Ob
2325
int len;
2426
Tcl_Obj *objPtr;
2527
int i;
28+
results_t* results = (results_t*)clientData;
29+
2630
if (objc != 2) {
2731
Tcl_WrongNumArgs(interp, 1, objv, "value");
2832
return TCL_ERROR;
@@ -36,22 +40,21 @@ int setResultsObjCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Ob
3640
return TCL_ERROR;
3741
}
3842

39-
if (len > rlen)
43+
if (len > results->rlen)
4044
{
41-
free(resultStr);
42-
rlen = len + 1;
43-
resultStr = (char *) malloc(rlen*sizeof(char));
45+
free(results->resultStr);
46+
results->rlen = len + 1;
47+
results->resultStr = (char *) malloc(results->rlen*sizeof(char));
4448
}
45-
memcpy(&resultStr[0], str, len);
46-
resultStr[len] = '\0';
49+
memcpy(results->resultStr, str, len);
50+
results->resultStr[len] = '\0';
4751
return TCL_OK;
4852
}
4953

5054
int Tcl_AppInit(Tcl_Interp* interp)
5155
{
5256
if (Tcl_Init(interp) == TCL_ERROR)
5357
return TCL_ERROR;
54-
Tcl_CreateObjCommand(interp,"setResults", setResultsObjCmd, (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
5558
return TCL_OK;
5659
}
5760

@@ -72,12 +75,10 @@ static int runTCLprog(lua_State *L)
7275
int argc = 0;
7376
int status = 1;
7477

75-
if (rlen == 0)
76-
{
77-
rlen = 1024;
78-
resultStr = (char *) malloc((rlen+1)*sizeof(char));
79-
}
80-
strcpy(resultStr," ");
78+
results_t results;
79+
results.rlen = 1024;
80+
results.resultStr = (char *) malloc((results.rlen+1)*sizeof(char));
81+
strcpy(results.resultStr," ");
8182

8283
Tcl_FindExecutable(cmd);
8384
interp = Tcl_CreateInterp();
@@ -90,6 +91,8 @@ static int runTCLprog(lua_State *L)
9091
if (Tcl_AppInit(interp) != TCL_OK)
9192
return TCL_ERROR;
9293

94+
Tcl_CreateObjCommand(interp,"setResults", setResultsObjCmd, (ClientData) &results, (Tcl_CmdDeleteProc *) NULL);
95+
9396
Tcl_SetVar2Ex(interp, "argv0", NULL, Tcl_NewStringObj(cmd,-1), TCL_GLOBAL_ONLY);
9497
argvPtr = Tcl_NewListObj(0, NULL);
9598

@@ -167,9 +170,10 @@ static int runTCLprog(lua_State *L)
167170
}
168171

169172
lua_status = (tcl_status == TCL_OK);
170-
lua_pushstring(L, resultStr);
173+
lua_pushstring(L, results.resultStr);
171174
Tcl_DeleteInterp(interp);
172-
(resultStr) ? lua_pushboolean(L, lua_status): lua_pushboolean(L, 0);
175+
(results.resultStr) ? lua_pushboolean(L, lua_status): lua_pushboolean(L, 0);
176+
free(results.resultStr);
173177
return 2;
174178
}
175179

rt/set_alias/err.txt

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,28 @@ lua ProjectDIR/src/lmod.in.lua shell --regression_testing unload spack
3838
===========================
3939
===========================
4040
step 10
41+
lua ProjectDIR/src/lmod.in.lua shell --regression_testing load multiline/3.0
42+
===========================
43+
===========================
44+
step 11
45+
lua ProjectDIR/src/lmod.in.lua shell --regression_testing load multiline/2.0
46+
===========================
47+
The following have been reloaded with a version change:
48+
1) multiline/3.0 => multiline/2.0
49+
===========================
50+
step 12
51+
lua ProjectDIR/src/lmod.in.lua shell --regression_testing load multiline/1.0
52+
===========================
53+
The following have been reloaded with a version change:
54+
1) multiline/2.0 => multiline/1.0
55+
===========================
56+
step 13
57+
lua ProjectDIR/src/lmod.in.lua shell --regression_testing load multiline/4.0
58+
===========================
59+
The following have been reloaded with a version change:
60+
1) multiline/1.0 => multiline/4.0
61+
===========================
62+
step 14
4163
lua ProjectDIR/src/lmod.in.lua shell --regression_testing show showMe
4264
===========================
4365
ProjectDIR/rt/set_alias/mf/showMe/1.0.lua:

rt/set_alias/mf/multiline/1.0.lua

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
local _func = [==[
2+
3+
echo foo
4+
5+
]==]
6+
7+
set_shell_function("foo", _func)

rt/set_alias/mf/multiline/2.0.lua

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
local _func = [==[
2+
3+
echo foo \
4+
5+
]==]
6+
7+
set_shell_function("foo", _func)

rt/set_alias/mf/multiline/3.0.lua

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
local _func = [==[
2+
echo foo
3+
]==]
4+
5+
set_shell_function("foo", _func)

rt/set_alias/mf/multiline/4.0.lua

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
local _func = [==[
2+
STR="
3+
foo
4+
bar
5+
"
6+
echo $STR \
7+
8+
9+
10+
11+
12+
]==]
13+
14+
set_shell_function("foo", _func)

rt/set_alias/out.txt

Lines changed: 63 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,71 @@ unset -f _some_spack_func 2> /dev/null || true;
129129
[[ -n "${BASH_VERSION:-}" ]] && unset -f _some_spack_func 2> /dev/null || true;
130130
===========================
131131
step 10
132+
lua ProjectDIR/src/lmod.in.lua shell --regression_testing load multiline/3.0
133+
===========================
134+
LOADEDMODULES=test1/1.0:sfunc/1.0:alias/1.0:multiline/3.0;
135+
export LOADEDMODULES;
136+
MODULEPATH=ProjectDIR/rt/set_alias/mf;
137+
export MODULEPATH;
138+
_LMFILES_=ProjectDIR/rt/set_alias/mf/test1/1.0.lua:ProjectDIR/rt/set_alias/mf/sfunc/1.0.lua:ProjectDIR/rt/set_alias/mf/alias/1.0:ProjectDIR/rt/set_alias/mf/multiline/3.0.lua;
139+
export _LMFILES_;
140+
_ModuleTable_='_ModuleTable_={MTversion=3,depthT={},family={},mT={alias={fn="ProjectDIR/rt/set_alias/mf/alias/1.0",fullName="alias/1.0",loadOrder=3,propT={},stackDepth=0,status="active",userName="alias",wV="000000001.*zfinal",},multiline={fn="ProjectDIR/rt/set_alias/mf/multiline/3.0.lua",fullName="multiline/3.0",loadOrder=4,propT={},stackDepth=0,status="active",userName="multiline/3.0",wV="000000003.*zfinal",},sfunc={fn="ProjectDIR/rt/set_alias/mf/sfunc/1.0.lua",fullName="sfunc/1.0",loadOrder=2,propT={},stackDepth=0,status="active",userName="sfunc",wV="000000001.*zfinal",},test1={fn="ProjectDIR/rt/set_alias/mf/test1/1.0.lua",fullName="test1/1.0",loadOrder=1,propT={},stackDepth=0,status="active",userName="test1",wV="000000001.*zfinal",},},mpathA={"ProjectDIR/rt/set_alias/mf",},systemBaseMPATH="ProjectDIR/rt/set_alias/mf",}';
141+
export _ModuleTable_;
142+
foo () { echo foo ;
143+
};
144+
===========================
145+
step 11
146+
lua ProjectDIR/src/lmod.in.lua shell --regression_testing load multiline/2.0
147+
===========================
148+
LOADEDMODULES=test1/1.0:sfunc/1.0:alias/1.0:multiline/2.0;
149+
export LOADEDMODULES;
150+
MODULEPATH=ProjectDIR/rt/set_alias/mf;
151+
export MODULEPATH;
152+
_LMFILES_=ProjectDIR/rt/set_alias/mf/test1/1.0.lua:ProjectDIR/rt/set_alias/mf/sfunc/1.0.lua:ProjectDIR/rt/set_alias/mf/alias/1.0:ProjectDIR/rt/set_alias/mf/multiline/2.0.lua;
153+
export _LMFILES_;
154+
_ModuleTable_='_ModuleTable_={MTversion=3,depthT={},family={},mT={alias={fn="ProjectDIR/rt/set_alias/mf/alias/1.0",fullName="alias/1.0",loadOrder=3,propT={},stackDepth=0,status="active",userName="alias",wV="000000001.*zfinal",},multiline={fn="ProjectDIR/rt/set_alias/mf/multiline/2.0.lua",fullName="multiline/2.0",loadOrder=4,propT={},stackDepth=0,status="active",userName="multiline/2.0",wV="000000002.*zfinal",},sfunc={fn="ProjectDIR/rt/set_alias/mf/sfunc/1.0.lua",fullName="sfunc/1.0",loadOrder=2,propT={},stackDepth=0,status="active",userName="sfunc",wV="000000001.*zfinal",},test1={fn="ProjectDIR/rt/set_alias/mf/test1/1.0.lua",fullName="test1/1.0",loadOrder=1,propT={},stackDepth=0,status="active",userName="test1",wV="000000001.*zfinal",},},mpathA={"ProjectDIR/rt/set_alias/mf",},systemBaseMPATH="ProjectDIR/rt/set_alias/mf",}';
155+
export _ModuleTable_;
156+
foo () {
157+
echo foo ;
158+
};
159+
===========================
160+
step 12
161+
lua ProjectDIR/src/lmod.in.lua shell --regression_testing load multiline/1.0
162+
===========================
163+
LOADEDMODULES=test1/1.0:sfunc/1.0:alias/1.0:multiline/1.0;
164+
export LOADEDMODULES;
165+
MODULEPATH=ProjectDIR/rt/set_alias/mf;
166+
export MODULEPATH;
167+
_LMFILES_=ProjectDIR/rt/set_alias/mf/test1/1.0.lua:ProjectDIR/rt/set_alias/mf/sfunc/1.0.lua:ProjectDIR/rt/set_alias/mf/alias/1.0:ProjectDIR/rt/set_alias/mf/multiline/1.0.lua;
168+
export _LMFILES_;
169+
_ModuleTable_='_ModuleTable_={MTversion=3,depthT={},family={},mT={alias={fn="ProjectDIR/rt/set_alias/mf/alias/1.0",fullName="alias/1.0",loadOrder=3,propT={},stackDepth=0,status="active",userName="alias",wV="000000001.*zfinal",},multiline={fn="ProjectDIR/rt/set_alias/mf/multiline/1.0.lua",fullName="multiline/1.0",loadOrder=4,propT={},stackDepth=0,status="active",userName="multiline/1.0",wV="000000001.*zfinal",},sfunc={fn="ProjectDIR/rt/set_alias/mf/sfunc/1.0.lua",fullName="sfunc/1.0",loadOrder=2,propT={},stackDepth=0,status="active",userName="sfunc",wV="000000001.*zfinal",},test1={fn="ProjectDIR/rt/set_alias/mf/test1/1.0.lua",fullName="test1/1.0",loadOrder=1,propT={},stackDepth=0,status="active",userName="test1",wV="000000001.*zfinal",},},mpathA={"ProjectDIR/rt/set_alias/mf",},systemBaseMPATH="ProjectDIR/rt/set_alias/mf",}';
170+
export _ModuleTable_;
171+
foo () {
172+
echo foo;
173+
};
174+
===========================
175+
step 13
176+
lua ProjectDIR/src/lmod.in.lua shell --regression_testing load multiline/4.0
177+
===========================
178+
LOADEDMODULES=test1/1.0:sfunc/1.0:alias/1.0:multiline/4.0;
179+
export LOADEDMODULES;
180+
MODULEPATH=ProjectDIR/rt/set_alias/mf;
181+
export MODULEPATH;
182+
_LMFILES_=ProjectDIR/rt/set_alias/mf/test1/1.0.lua:ProjectDIR/rt/set_alias/mf/sfunc/1.0.lua:ProjectDIR/rt/set_alias/mf/alias/1.0:ProjectDIR/rt/set_alias/mf/multiline/4.0.lua;
183+
export _LMFILES_;
184+
_ModuleTable_='_ModuleTable_={MTversion=3,depthT={},family={},mT={alias={fn="ProjectDIR/rt/set_alias/mf/alias/1.0",fullName="alias/1.0",loadOrder=3,propT={},stackDepth=0,status="active",userName="alias",wV="000000001.*zfinal",},multiline={fn="ProjectDIR/rt/set_alias/mf/multiline/4.0.lua",fullName="multiline/4.0",loadOrder=4,propT={},stackDepth=0,status="active",userName="multiline/4.0",wV="000000004.*zfinal",},sfunc={fn="ProjectDIR/rt/set_alias/mf/sfunc/1.0.lua",fullName="sfunc/1.0",loadOrder=2,propT={},stackDepth=0,status="active",userName="sfunc",wV="000000001.*zfinal",},test1={fn="ProjectDIR/rt/set_alias/mf/test1/1.0.lua",fullName="test1/1.0",loadOrder=1,propT={},stackDepth=0,status="active",userName="test1",wV="000000001.*zfinal",},},mpathA={"ProjectDIR/rt/set_alias/mf",},systemBaseMPATH="ProjectDIR/rt/set_alias/mf",}';
185+
export _ModuleTable_;
186+
foo () { STR="
187+
foo
188+
bar
189+
"
190+
echo $STR ;
191+
};
192+
===========================
193+
step 14
132194
lua ProjectDIR/src/lmod.in.lua shell --regression_testing show showMe
133195
===========================
134196
MODULEPATH=ProjectDIR/rt/set_alias/mf;
135197
export MODULEPATH;
136-
_ModuleTable_='_ModuleTable_={MTversion=3,depthT={},family={},mT={alias={fn="ProjectDIR/rt/set_alias/mf/alias/1.0",fullName="alias/1.0",loadOrder=3,propT={},stackDepth=0,status="active",userName="alias",wV="000000001.*zfinal",},sfunc={fn="ProjectDIR/rt/set_alias/mf/sfunc/1.0.lua",fullName="sfunc/1.0",loadOrder=2,propT={},stackDepth=0,status="active",userName="sfunc",wV="000000001.*zfinal",},test1={fn="ProjectDIR/rt/set_alias/mf/test1/1.0.lua",fullName="test1/1.0",loadOrder=1,propT={},stackDepth=0,status="active",userName="test1",wV="000000001.*zfinal",},},mpathA={"ProjectDIR/rt/set_alias/mf",},systemBaseMPATH="ProjectDIR/rt/set_alias/mf",}';
198+
_ModuleTable_='_ModuleTable_={MTversion=3,depthT={},family={},mT={alias={fn="ProjectDIR/rt/set_alias/mf/alias/1.0",fullName="alias/1.0",loadOrder=3,propT={},stackDepth=0,status="active",userName="alias",wV="000000001.*zfinal",},multiline={fn="ProjectDIR/rt/set_alias/mf/multiline/4.0.lua",fullName="multiline/4.0",loadOrder=4,propT={},stackDepth=0,status="active",userName="multiline/4.0",wV="000000004.*zfinal",},sfunc={fn="ProjectDIR/rt/set_alias/mf/sfunc/1.0.lua",fullName="sfunc/1.0",loadOrder=2,propT={},stackDepth=0,status="active",userName="sfunc",wV="000000001.*zfinal",},test1={fn="ProjectDIR/rt/set_alias/mf/test1/1.0.lua",fullName="test1/1.0",loadOrder=1,propT={},stackDepth=0,status="active",userName="test1",wV="000000001.*zfinal",},},mpathA={"ProjectDIR/rt/set_alias/mf",},systemBaseMPATH="ProjectDIR/rt/set_alias/mf",}';
137199
export _ModuleTable_;

rt/set_alias/set_alias.tdesc

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,20 @@ testdescript = {
2323
remove_generated_lmod_files a b c
2424
2525
touch a b c
26-
runLmod --version # 1
27-
runLmod load test1 # 2
28-
runLmod load test2 # 3
29-
runLmod unload test2 # 4
30-
runLmod load test1 # 5
31-
runLmod load sfunc # 6
32-
runLmod load alias # 7
33-
runLmod load spack # 8
34-
runLmod unload spack # 9
35-
runLmod show showMe #10
26+
runLmod --version # 1
27+
runLmod load test1 # 2
28+
runLmod load test2 # 3
29+
runLmod unload test2 # 4
30+
runLmod load test1 # 5
31+
runLmod load sfunc # 6
32+
runLmod load alias # 7
33+
runLmod load spack # 8
34+
runLmod unload spack # 9
35+
runLmod load multiline/3.0 #10
36+
runLmod load multiline/2.0 #11
37+
runLmod load multiline/1.0 #12
38+
runLmod load multiline/4.0 #13
39+
runLmod show showMe #14
3640
3741
HOME=$ORIG_HOME
3842

shells/Bash.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ local function l_build_shell_func(name, func)
7171
local a = {}
7272
a[#a+1] = name
7373
a[#a+1] = " () { ";
74-
a[#a+1] = func:gsub("\n$","")
74+
a[#a+1] = func:gsub("\n%s*\n","\n"):gsub("\n$","")
7575
a[#a+1] = "; \n};\n"
7676
return concatTbl(a,"")
7777
end

0 commit comments

Comments
 (0)