def test_lmod_specific(self): """Lmod-specific test (skipped unless Lmod is used as modules tool).""" lmod_abspath = which(Lmod.COMMAND) # only run this test if 'lmod' is available in $PATH if lmod_abspath is not None: build_options = { 'allow_modules_tool_mismatch': True, } init_config(build_options=build_options) # drop any location where 'lmod' or 'spider' can be found from $PATH paths = os.environ.get('PATH', '').split(os.pathsep) new_paths = [] for path in paths: lmod_cand_path = os.path.join(path, Lmod.COMMAND) spider_cand_path = os.path.join(path, 'spider') if not os.path.isfile(lmod_cand_path) and not os.path.isfile(spider_cand_path): new_paths.append(path) os.environ['PATH'] = os.pathsep.join(new_paths) # make sure $MODULEPATH contains path that provides some modules os.environ['MODULEPATH'] = os.path.abspath(os.path.join(os.path.dirname(__file__), 'modules')) # initialize Lmod modules tool, pass full path to 'lmod' via $LMOD_CMD os.environ['LMOD_CMD'] = lmod_abspath lmod = Lmod(testing=True) # obtain list of availabe modules, should be non-empty self.assertTrue(lmod.available(), "List of available modules obtained using Lmod is non-empty") # test updating local spider cache (but don't actually update the local cache file!) self.assertTrue(lmod.update(), "Updated local Lmod spider cache is non-empty")
def test_lmod_specific(self): """Lmod-specific test (skipped unless Lmod is used as modules tool).""" lmod_abspath = which(Lmod.COMMAND) # only run this test if 'lmod' is available in $PATH if lmod_abspath is not None: build_options = { 'allow_modules_tool_mismatch': True, } init_config(build_options=build_options) # drop any location where 'lmod' or 'spider' can be found from $PATH paths = os.environ.get('PATH', '').split(os.pathsep) new_paths = [] for path in paths: lmod_cand_path = os.path.join(path, Lmod.COMMAND) spider_cand_path = os.path.join(path, 'spider') if not os.path.isfile(lmod_cand_path) and not os.path.isfile(spider_cand_path): new_paths.append(path) os.environ['PATH'] = os.pathsep.join(new_paths) # make sure $MODULEPATH contains path that provides some modules os.environ['MODULEPATH'] = os.path.abspath(os.path.join(os.path.dirname(__file__), 'modules')) # initialize Lmod modules tool, pass full path to 'lmod' via $LMOD_CMD os.environ['LMOD_CMD'] = lmod_abspath lmod = Lmod() lmod.testing = True # obtain list of availabe modules, should be non-empty self.assertTrue(lmod.available(), "List of available modules obtained using Lmod is non-empty") # test updating local spider cache (but don't actually update the local cache file!) self.assertTrue(lmod.update(), "Updated local Lmod spider cache is non-empty")
def test_lmod_specific(self): """Lmod-specific test (skipped unless Lmod is used as modules tool).""" lmod_abspath = which(Lmod.COMMAND) # only run this test if 'lmod' is available in $PATH if lmod_abspath is not None: build_options = { 'allow_modules_tool_mismatch': True, 'update_modules_tool_cache': True, } init_config(build_options=build_options) lmod = Lmod(testing=True) self.assertTrue(os.path.samefile(lmod.cmd, lmod_abspath)) # drop any location where 'lmod' or 'spider' can be found from $PATH paths = os.environ.get('PATH', '').split(os.pathsep) new_paths = [] for path in paths: lmod_cand_path = os.path.join(path, Lmod.COMMAND) spider_cand_path = os.path.join(path, 'spider') if not os.path.isfile(lmod_cand_path) and not os.path.isfile( spider_cand_path): new_paths.append(path) os.environ['PATH'] = os.pathsep.join(new_paths) # make sure $MODULEPATH contains path that provides some modules os.environ['MODULEPATH'] = os.path.abspath( os.path.join(os.path.dirname(__file__), 'modules')) # initialize Lmod modules tool, pass (fake) full path to 'lmod' via $LMOD_CMD fake_path = os.path.join(self.test_installpath, 'lmod') fake_lmod_txt = '\n'.join([ '#!/bin/bash', 'echo "Modules based on Lua: Version %s " >&2' % Lmod.REQ_VERSION, 'echo "os.environ[\'FOO\'] = \'foo\'"', ]) write_file(fake_path, fake_lmod_txt) os.chmod(fake_path, stat.S_IRUSR | stat.S_IXUSR) os.environ['LMOD_CMD'] = fake_path init_config(build_options=build_options) lmod = Lmod(testing=True) self.assertTrue(os.path.samefile(lmod.cmd, fake_path)) # use correct full path for 'lmod' via $LMOD_CMD os.environ['LMOD_CMD'] = lmod_abspath init_config(build_options=build_options) lmod = Lmod(testing=True) # obtain list of availabe modules, should be non-empty self.assertTrue( lmod.available(), "List of available modules obtained using Lmod is non-empty") # test updating local spider cache (but don't actually update the local cache file!) self.assertTrue(lmod.update(), "Updated local Lmod spider cache is non-empty")
def test_lmod_specific(self): """Lmod-specific test (skipped unless Lmod is used as modules tool).""" lmod_abspath = which(Lmod.COMMAND) # only run this test if 'lmod' is available in $PATH if lmod_abspath is not None: build_options = { 'allow_modules_tool_mismatch': True, 'update_modules_tool_cache': True, } init_config(build_options=build_options) lmod = Lmod(testing=True) self.assertEqual(lmod.cmd, os.path.realpath(lmod_abspath)) # drop any location where 'lmod' or 'spider' can be found from $PATH paths = os.environ.get('PATH', '').split(os.pathsep) new_paths = [] for path in paths: lmod_cand_path = os.path.join(path, Lmod.COMMAND) spider_cand_path = os.path.join(path, 'spider') if not os.path.isfile(lmod_cand_path) and not os.path.isfile(spider_cand_path): new_paths.append(path) os.environ['PATH'] = os.pathsep.join(new_paths) # make sure $MODULEPATH contains path that provides some modules os.environ['MODULEPATH'] = os.path.abspath(os.path.join(os.path.dirname(__file__), 'modules')) # initialize Lmod modules tool, pass (fake) full path to 'lmod' via $LMOD_CMD fake_path = os.path.join(self.test_installpath, 'lmod') fake_lmod_txt = '\n'.join([ '#!/bin/bash', 'echo "Modules based on Lua: Version %s " >&2' % Lmod.REQ_VERSION, 'echo "os.environ[\'FOO\'] = \'foo\'"', ]) write_file(fake_path, fake_lmod_txt) os.chmod(fake_path, stat.S_IRUSR|stat.S_IXUSR) os.environ['LMOD_CMD'] = fake_path init_config(build_options=build_options) lmod = Lmod(testing=True) self.assertEqual(lmod.cmd, os.path.realpath(fake_path)) # use correct full path for 'lmod' via $LMOD_CMD os.environ['LMOD_CMD'] = lmod_abspath init_config(build_options=build_options) lmod = Lmod(testing=True) # obtain list of availabe modules, should be non-empty self.assertTrue(lmod.available(), "List of available modules obtained using Lmod is non-empty") # test updating local spider cache (but don't actually update the local cache file!) self.assertTrue(lmod.update(), "Updated local Lmod spider cache is non-empty")