Skip to content

Commit 3a47d8a

Browse files
committed
ts: adapt tests for --enable-set-pythonpath
Signed-off-by: Xavier Delaruelle <xavier.delaruelle@cea.fr>
1 parent 290af7d commit 3a47d8a

6 files changed

Lines changed: 153 additions & 16 deletions

File tree

.github/workflows/linux_tests.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ jobs:
2121
--enable-quarantine-support
2222
--disable-set-binpath
2323
--disable-set-manpath
24+
--disable-set-pythonpath
2425
COVERAGE: y
2526
EXTRA_SCRIPT_PRETEST: make install-testmodulerc install-testetcrc install-testmodspath-empty install-testmoguicmd
2627
EXTRA_SCRIPT_POSTTEST: make uninstall-testconfig
@@ -386,6 +387,7 @@ jobs:
386387
--with-tclsh=/usr/local/bin/tclsh9.1
387388
--prefix=/tmp/modules
388389
--with-tcl=/usr/local/lib
390+
--enable-append-pythonpath
389391
--enable-append-manpath
390392
--enable-append-binpath
391393
--with-bin-search-path=/usr/bin:/bin

testsuite/install.00-init/030-options.exp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,28 @@ if {[string length $nafelgar_script]} {
267267
testall_cmd sh "module config tcl_linter $nafelgar_script; module lint --redirect $testsuite_modpath.3/lcompat/.version" $tserr {} 0
268268
}
269269

270+
271+
# test Python module is found if PYTHONPATH is defined
272+
if {$install_setpythonpath eq {y} && [info exists shell_path(python)]} {
273+
# create a temporary script that checks import of module command
274+
# cannot pass the code as argument to python command due to the intermediate processing done by bin/install_* script
275+
set temp_script $env(TESTSUITEDIR)/tempt_script.py
276+
set fid [open $temp_script w]
277+
puts $fid "from env_modules import module\nmodule('list', '-t')"
278+
close $fid
279+
280+
if {$install_loadedmodules ne ""} {
281+
set tserr "$cur_loaded\n[join $lm_list {.*\n}]"
282+
} else {
283+
set tserr $no_loaded
284+
}
285+
286+
testall_cmd_re sh "$shell_path(python) $temp_script" {} $tserr 0
287+
288+
file delete $temp_script
289+
}
290+
291+
270292
#
271293
# Clean up variables used in this test case
272294
#

testsuite/modules.50-cmds/400-source-sh.exp

Lines changed: 54 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1602,6 +1602,16 @@ setenv_var TESTSUITE_SHTOMOD_MODULE 1
16021602
setenv_var MODULES_SET_SHELL_STARTUP 0
16031603
setenv_var MODULES_CMD [file normalize $env(TESTSUITEDIR)/../modulecmd.tcl]
16041604

1605+
# prepare things if PYTHONPATH is configured by autoinit
1606+
if {[is_conf_enabled setpythonpath]} {
1607+
unsetenv_var PYTHONPATH
1608+
if {[string first { } $install_initdir] != -1} {
1609+
set initdirenc "{$install_initdir}"
1610+
} else {
1611+
set initdirenc $install_initdir
1612+
}
1613+
}
1614+
16051615
set lmsourceshpath {}
16061616
# setup simpler MANPATH value for tests if autoinit adds Modules man location to MANPATH
16071617
if {$install_setmanpath eq {y}} {
@@ -1685,9 +1695,20 @@ if {$is_modules_defined} {
16851695
set extraans {}
16861696
}
16871697
if {$install_versioning eq {y}} {
1688-
lappend ans [list set __MODULES_LMSOURCESH source-sh/1\&bash\ testsuite/example/sh-to-mod.sh\|${lmsourceshpath}setenv\ MODULE_VERSION\ $install_version\|setenv\ MODULE_VERSION_STACK\ $install_version\|setenv\ MODULES_COLLECTION_TARGET\ bar\|setenv\ testsuite\ yes$extraans]
1698+
if {[is_conf_enabled setpythonpath]} {
1699+
lappend ans [list set __MODULES_LMSOURCESH source-sh/1\&bash\ testsuite/example/sh-to-mod.sh\|${lmsourceshpath}setenv\ MODULE_VERSION\ $install_version\|setenv\ MODULE_VERSION_STACK\ $install_version\|setenv\ MODULES_COLLECTION_TARGET\ bar\|setenv\ PYTHONPATH\ $initdirenc\|setenv\ testsuite\ yes$extraans]
1700+
} else {
1701+
lappend ans [list set __MODULES_LMSOURCESH source-sh/1\&bash\ testsuite/example/sh-to-mod.sh\|${lmsourceshpath}setenv\ MODULE_VERSION\ $install_version\|setenv\ MODULE_VERSION_STACK\ $install_version\|setenv\ MODULES_COLLECTION_TARGET\ bar\|setenv\ testsuite\ yes$extraans]
1702+
}
16891703
} else {
1690-
lappend ans [list set __MODULES_LMSOURCESH source-sh/1\&bash\ testsuite/example/sh-to-mod.sh\|${lmsourceshpath}setenv\ MODULES_COLLECTION_TARGET\ bar\|setenv\ testsuite\ yes$extraans]
1704+
if {[is_conf_enabled setpythonpath]} {
1705+
lappend ans [list set __MODULES_LMSOURCESH source-sh/1\&bash\ testsuite/example/sh-to-mod.sh\|${lmsourceshpath}setenv\ MODULES_COLLECTION_TARGET\ bar\|setenv\ PYTHONPATH\ $initdirenc\|setenv\ testsuite\ yes$extraans]
1706+
} else {
1707+
lappend ans [list set __MODULES_LMSOURCESH source-sh/1\&bash\ testsuite/example/sh-to-mod.sh\|${lmsourceshpath}setenv\ MODULES_COLLECTION_TARGET\ bar\|setenv\ testsuite\ yes$extraans]
1708+
}
1709+
}
1710+
if {[is_conf_enabled setpythonpath]} {
1711+
lappend ans [list set PYTHONPATH $install_initdir]
16911712
}
16921713
if {$install_versioning eq {y}} {
16931714
lappend ans [list set MODULE_VERSION $install_version]
@@ -1740,8 +1761,11 @@ if {$install_versioning eq {y}} {
17401761
append tserr "setenv\t\tMODULE_VERSION $install_version
17411762
setenv\t\tMODULE_VERSION_STACK $install_version\n"
17421763
}
1743-
append tserr "setenv\t\tMODULES_COLLECTION_TARGET bar
1744-
setenv\t\ttestsuite yes$extratserr
1764+
append tserr "setenv\t\tMODULES_COLLECTION_TARGET bar"
1765+
if {[is_conf_enabled setpythonpath]} {
1766+
append tserr "\nsetenv\t\tPYTHONPATH $initdirenc"
1767+
}
1768+
append tserr "\nsetenv\t\ttestsuite yes$extratserr
17451769
module-whatis\tsource-sh/1
17461770
-------------------------------------------------------------------"
17471771
testouterr_cmd sh {display source-sh/1} OK $tserr
@@ -1781,9 +1805,20 @@ lappend ans [list set _LMFILES_ $mp/source-sh/1]
17811805
lappend ans [list set LOADEDMODULES source-sh/1]
17821806
lappend ans [list set MODULES_COLLECTION_TARGET bar]
17831807
if {$install_versioning eq {y}} {
1784-
lappend ans [list set __MODULES_LMSOURCESH source-sh/1\&bash\ testsuite/example/sh-to-mod.sh\|${lmsourceshpath}setenv\ MODULE_VERSION\ $install_version\|setenv\ MODULE_VERSION_STACK\ $install_version\|setenv\ MODULES_COLLECTION_TARGET\ bar$extraans]
1808+
if {[is_conf_enabled setpythonpath]} {
1809+
lappend ans [list set __MODULES_LMSOURCESH source-sh/1\&bash\ testsuite/example/sh-to-mod.sh\|${lmsourceshpath}setenv\ MODULE_VERSION\ $install_version\|setenv\ MODULE_VERSION_STACK\ $install_version\|setenv\ MODULES_COLLECTION_TARGET\ bar\|setenv\ PYTHONPATH\ $initdirenc$extraans]
1810+
} else {
1811+
lappend ans [list set __MODULES_LMSOURCESH source-sh/1\&bash\ testsuite/example/sh-to-mod.sh\|${lmsourceshpath}setenv\ MODULE_VERSION\ $install_version\|setenv\ MODULE_VERSION_STACK\ $install_version\|setenv\ MODULES_COLLECTION_TARGET\ bar$extraans]
1812+
}
17851813
} else {
1786-
lappend ans [list set __MODULES_LMSOURCESH source-sh/1\&bash\ testsuite/example/sh-to-mod.sh\|${lmsourceshpath}setenv\ MODULES_COLLECTION_TARGET\ bar$extraans]
1814+
if {[is_conf_enabled setpythonpath]} {
1815+
lappend ans [list set __MODULES_LMSOURCESH source-sh/1\&bash\ testsuite/example/sh-to-mod.sh\|${lmsourceshpath}setenv\ MODULES_COLLECTION_TARGET\ bar\|setenv\ PYTHONPATH\ $initdirenc$extraans]
1816+
} else {
1817+
lappend ans [list set __MODULES_LMSOURCESH source-sh/1\&bash\ testsuite/example/sh-to-mod.sh\|${lmsourceshpath}setenv\ MODULES_COLLECTION_TARGET\ bar$extraans]
1818+
}
1819+
}
1820+
if {[is_conf_enabled setpythonpath]} {
1821+
lappend ans [list set PYTHONPATH $install_initdir]
17871822
}
17881823
if {$install_versioning eq {y}} {
17891824
lappend ans [list set MODULE_VERSION $install_version]
@@ -1819,9 +1854,20 @@ lappend ans [list set _LMFILES_ $modpath/setenv/1.0:$mp/source-sh/1]
18191854
lappend ans [list set LOADEDMODULES setenv/1.0:source-sh/1]
18201855
lappend ans [list set MODULES_COLLECTION_TARGET bar]
18211856
if {$install_versioning eq {y}} {
1822-
lappend ans [list set __MODULES_LMSOURCESH source-sh/1\&bash\ testsuite/example/sh-to-mod.sh\|${lmsourceshpath}setenv\ MODULE_VERSION\ $install_version\|setenv\ MODULE_VERSION_STACK\ $install_version\|setenv\ MODULES_COLLECTION_TARGET\ bar$extraans]
1857+
if {[is_conf_enabled setpythonpath]} {
1858+
lappend ans [list set __MODULES_LMSOURCESH source-sh/1\&bash\ testsuite/example/sh-to-mod.sh\|${lmsourceshpath}setenv\ MODULE_VERSION\ $install_version\|setenv\ MODULE_VERSION_STACK\ $install_version\|setenv\ MODULES_COLLECTION_TARGET\ bar\|setenv\ PYTHONPATH\ $initdirenc$extraans]
1859+
} else {
1860+
lappend ans [list set __MODULES_LMSOURCESH source-sh/1\&bash\ testsuite/example/sh-to-mod.sh\|${lmsourceshpath}setenv\ MODULE_VERSION\ $install_version\|setenv\ MODULE_VERSION_STACK\ $install_version\|setenv\ MODULES_COLLECTION_TARGET\ bar$extraans]
1861+
}
18231862
} else {
1824-
lappend ans [list set __MODULES_LMSOURCESH source-sh/1\&bash\ testsuite/example/sh-to-mod.sh\|${lmsourceshpath}setenv\ MODULES_COLLECTION_TARGET\ bar$extraans]
1863+
if {[is_conf_enabled setpythonpath]} {
1864+
lappend ans [list set __MODULES_LMSOURCESH source-sh/1\&bash\ testsuite/example/sh-to-mod.sh\|${lmsourceshpath}setenv\ MODULES_COLLECTION_TARGET\ bar\|setenv\ PYTHONPATH\ $initdirenc$extraans]
1865+
} else {
1866+
lappend ans [list set __MODULES_LMSOURCESH source-sh/1\&bash\ testsuite/example/sh-to-mod.sh\|${lmsourceshpath}setenv\ MODULES_COLLECTION_TARGET\ bar$extraans]
1867+
}
1868+
}
1869+
if {[is_conf_enabled setpythonpath]} {
1870+
lappend ans [list set PYTHONPATH $install_initdir]
18251871
}
18261872
if {$install_versioning eq {y}} {
18271873
lappend ans [list set MODULE_VERSION $install_version]

testsuite/modules.70-maint/120-autoinit.exp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -901,6 +901,16 @@ if {$install_setbinpath eq {y}} {
901901
setenv_path_var MODULEPATH $modpath.3
902902
setenv_loaded_module [list foo/1.0] [list $modpath.3/foo/1.0]
903903

904+
# setup PYTHONPATH if changed by autoinit
905+
if {[is_conf_enabled setpythonpath]} {
906+
setenv_var PYTHONPATH /tmp
907+
if {[is_conf_enabled appendpythonpath]} {
908+
set updatedpythonpath /tmp:$install_initdir
909+
} else {
910+
set updatedpythonpath $install_initdir:/tmp
911+
}
912+
}
913+
904914
# ensure ml is set disabled as if modrc1 initrc were previously evaluated
905915
# since modulepath and modules are loaded, initrc will not be evaluated by autoinit
906916
if {$modrc1_exinstalled} {
@@ -912,6 +922,11 @@ foreach set_shell_startup [list {} 0 1] {
912922
setenv_var MODULES_SET_SHELL_STARTUP $set_shell_startup
913923

914924
foreach shell $supported_shells {
925+
# skip one case where variable definition order is scrambled (not interesting to increase test complexity for this one test)
926+
if {[is_conf_enabled setpythonpath] && $shell eq {ksh} && $set_shell_startup eq {1}} {
927+
continue
928+
}
929+
915930
switch -- $shell {
916931
{lisp} {
917932
testouterr_cmd "lisp" "autoinit" "ERR" "$err_lisp"
@@ -942,6 +957,9 @@ foreach set_shell_startup [list {} 0 1] {
942957
lappend ans [list set BASH_ENV $install_initdir/bash]
943958
}
944959
lappend ans [list set MODULESHOME $moduleshome]
960+
if {[is_conf_enabled setpythonpath]} {
961+
lappend ans [list set PYTHONPATH $updatedpythonpath]
962+
}
945963
if {$shell eq {ksh}} {
946964
lappend ans [list set FPATH $install_initdir/ksh-functions]
947965
}
@@ -965,6 +983,9 @@ foreach set_shell_startup [list {} 0 1] {
965983
lappend ans [list set BASH_ENV $install_initdir/bash]
966984
}
967985
lappend ans [list set MODULESHOME $moduleshome]
986+
if {[is_conf_enabled setpythonpath]} {
987+
lappend ans [list set PYTHONPATH $updatedpythonpath]
988+
}
968989
if {$shell eq {ksh}} {
969990
lappend ans [list set FPATH $install_initdir/ksh-functions]
970991
}
@@ -990,6 +1011,10 @@ set tserr "$err_loinconsist
9901011
_LMFILES_="
9911012
testouterr_cmd_re bash autoinit ERR $tserr
9921013

1014+
# ensure PYTHONPATH is already initialized for Modules
1015+
if {[is_conf_enabled setpythonpath]} {
1016+
setenv_var PYTHONPATH $install_initdir
1017+
}
9931018

9941019
# coherent environment state with loaded module that defines volatile components
9951020
setenv_path_var MODULEPATH $modpath.3

testsuite/modules.70-maint/310-sh-to-mod.exp

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,16 @@ foreach var [array names -glob FOO*] {
7070
unsetenv_var $var
7171
}
7272

73+
# prepare things if PYTHONPATH is configured by autoinit
74+
if {[is_conf_enabled setpythonpath]} {
75+
unsetenv_var PYTHONPATH
76+
if {[string first { } $install_initdir] != -1} {
77+
set initdirenc "{$install_initdir}"
78+
} else {
79+
set initdirenc $install_initdir
80+
}
81+
}
82+
7383
# expected script env changes
7484
set tsvarpre "prepend-path\tFOOPATH /path/to/dir1 /path/to/dir2 /path/to/dir3
7585
prepend-path\tFOOPATHCB /path/to/dir1 /path/to/d\\{r2 /path/to/dir3
@@ -826,8 +836,11 @@ if {$install_versioning eq {y}} {
826836
setenv\t\tMODULE_VERSION_STACK $install_version\n"
827837
}
828838
append tserr $tsvarsetwpath
829-
append tserr "setenv\t\tMODULES_COLLECTION_TARGET bar
830-
setenv\t\ttestsuite yes"
839+
append tserr "setenv\t\tMODULES_COLLECTION_TARGET bar"
840+
if {[is_conf_enabled setpythonpath]} {
841+
append tserr "\nsetenv\t\tPYTHONPATH $initdirenc"
842+
}
843+
append tserr "\nsetenv\t\ttestsuite yes"
831844
set tserrbash "$tserr$extratserr"
832845
foreach sh $shtomod_avail_shells {
833846
# unset module definition on bash when module is predefined
@@ -851,7 +864,11 @@ if {$install_versioning eq {y}} {
851864
setenv\t\tMODULE_VERSION_STACK $install_version\n"
852865
}
853866
append tserr $tsvarsetwpath
854-
append tserr "setenv\t\tMODULES_COLLECTION_TARGET bar$extratserr"
867+
append tserr "setenv\t\tMODULES_COLLECTION_TARGET bar"
868+
if {[is_conf_enabled setpythonpath]} {
869+
append tserr "\nsetenv\t\tPYTHONPATH $initdirenc"
870+
}
871+
append tserr $extratserr
855872
testouterr_shtomod bash {} OK $tserr
856873

857874
# module is loaded prior sh-to-mod
@@ -863,7 +880,11 @@ if {$install_versioning eq {y}} {
863880
setenv\t\tMODULE_VERSION_STACK $install_version\n"
864881
}
865882
append tserr $tsvarsetwpath
866-
append tserr "setenv\t\tMODULES_COLLECTION_TARGET bar$extratserr"
883+
append tserr "setenv\t\tMODULES_COLLECTION_TARGET bar"
884+
if {[is_conf_enabled setpythonpath]} {
885+
append tserr "\nsetenv\t\tPYTHONPATH $initdirenc"
886+
}
887+
append tserr $extratserr
867888
testouterr_shtomod bash {} OK $tserr
868889

869890

testsuite/modules.70-maint/311-eval-sh-to-mod.exp

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,16 @@ foreach var [array names -glob FOO*] {
7171
unsetenv_var $var
7272
}
7373

74+
# prepare things if PYTHONPATH is configured by autoinit
75+
if {[is_conf_enabled setpythonpath]} {
76+
unsetenv_var PYTHONPATH
77+
if {[string first { } $install_initdir] != -1} {
78+
set initdirenc "{$install_initdir}"
79+
} else {
80+
set initdirenc $install_initdir
81+
}
82+
}
83+
7484
# expected script env changes
7585
set tsvarpre "prepend-path\tFOOPATH /path/to/dir1 /path/to/dir2 /path/to/dir3
7686
prepend-path\tFOOPATHCB /path/to/dir1 /path/to/d\\{r2 /path/to/dir3
@@ -495,8 +505,11 @@ if {$install_versioning eq {y}} {
495505
setenv\t\tMODULE_VERSION_STACK $install_version\n"
496506
}
497507
append tserr $tsvarsetwpath
498-
append tserr "setenv\t\tMODULES_COLLECTION_TARGET bar
499-
setenv\t\ttestsuite yes"
508+
append tserr "setenv\t\tMODULES_COLLECTION_TARGET bar"
509+
if {[is_conf_enabled setpythonpath]} {
510+
append tserr "\nsetenv\t\tPYTHONPATH $initdirenc"
511+
}
512+
append tserr "\nsetenv\t\ttestsuite yes"
500513
set tserrbash "$tserr$extratserr"
501514
foreach sh $shtomod_avail_shells {
502515
# unset module definition on bash when module is predefined
@@ -514,7 +527,11 @@ if {$install_versioning eq {y}} {
514527
setenv\t\tMODULE_VERSION_STACK $install_version\n"
515528
}
516529
append tserr $tsvarsetwpath
517-
append tserr "setenv\t\tMODULES_COLLECTION_TARGET bar$extratserr"
530+
append tserr "setenv\t\tMODULES_COLLECTION_TARGET bar"
531+
if {[is_conf_enabled setpythonpath]} {
532+
append tserr "\nsetenv\t\tPYTHONPATH $initdirenc"
533+
}
534+
append tserr $extratserr
518535
testouterr_shtomod bash-eval {} OK $tserr
519536

520537
# module is loaded prior sh-to-mod
@@ -526,7 +543,11 @@ if {$install_versioning eq {y}} {
526543
setenv\t\tMODULE_VERSION_STACK $install_version\n"
527544
}
528545
append tserr $tsvarsetwpath
529-
append tserr "setenv\t\tMODULES_COLLECTION_TARGET bar$extratserr"
546+
append tserr "setenv\t\tMODULES_COLLECTION_TARGET bar"
547+
if {[is_conf_enabled setpythonpath]} {
548+
append tserr "\nsetenv\t\tPYTHONPATH $initdirenc"
549+
}
550+
append tserr $extratserr
530551
testouterr_shtomod bash-eval {} OK $tserr
531552

532553

0 commit comments

Comments
 (0)