Skip to content

Commit 94ff50f

Browse files
committed
Ensure correct configuration for EnvironmentModules
Defines environment variables when initializing EnvironmentModules object to ensure that this module tool will not be influenced by external configuration. Setup Environment Modules configuration to ensure module search behaves like EasyBuild expects (match module name start, case sensitive, return in-depth modulepath content, ignore cache file). Also defines a basic output configuration not to get unexpected content like tags or variants. This change helps to pass "test_avail" test with Environment Modules v5.0+.
1 parent f4dda1e commit 94ff50f

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

easybuild/tools/modules.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1328,6 +1328,29 @@ class EnvironmentModules(EnvironmentModulesTcl):
13281328
MAX_VERSION = None
13291329
VERSION_REGEXP = r'^Modules\s+Release\s+(?P<version>\d\S*)\s'
13301330

1331+
def __init__(self, *args, **kwargs):
1332+
"""Constructor, set Environment Modules-specific class variable values."""
1333+
# ensure in-depth modulepath search (MODULES_AVAIL_INDEPTH has been introduced in v4.3)
1334+
setvar('MODULES_AVAIL_INDEPTH', '1', verbose=False)
1335+
# match against module name start (MODULES_SEARCH_MATCH has been introduced in v4.3)
1336+
setvar('MODULES_SEARCH_MATCH', 'starts_with', verbose=False)
1337+
# ensure no debug message (MODULES_VERBOSITY has been introduced in v4.3)
1338+
setvar('MODULES_VERBOSITY', 'normal', verbose=False)
1339+
# make module search case sensitive (search is case insensitive by default since v5.0)
1340+
setvar('MODULES_ICASE', 'never', verbose=False)
1341+
# disable extended default (introduced in v4.4 and enabled by default in v5.0)
1342+
setvar('MODULES_EXTENDED_DEFAULT', '0', verbose=False)
1343+
# hard disable output redirection, output messages are expected on stderr
1344+
setvar('MODULES_REDIRECT_OUTPUT', '0', verbose=False)
1345+
# make sure modulefile cache is ignored (cache mechanism supported since v5.3)
1346+
setvar('MODULES_IGNORE_CACHE', '1', verbose=False)
1347+
# ensure only module names are returned on avail (MODULES_AVAIL_TERSE_OUTPUT added in v4.7)
1348+
setvar('MODULES_AVAIL_TERSE_OUTPUT', '', verbose=False)
1349+
# ensure only module names are returned on list (MODULES_LIST_TERSE_OUTPUT added in v4.7)
1350+
setvar('MODULES_LIST_TERSE_OUTPUT', '', verbose=False)
1351+
1352+
super(EnvironmentModules, self).__init__(*args, **kwargs)
1353+
13311354
def check_module_output(self, cmd, stdout, stderr):
13321355
"""Check output of 'module' command, see if if is potentially invalid."""
13331356
if "_mlstatus = False" in stdout:

0 commit comments

Comments
 (0)