environment modifications : permit to pass parameters along with file to be sourced (#1626)

This commit is contained in:
Massimiliano Culpo 2016-10-12 07:55:14 +02:00 committed by Todd Gamblin
parent 949766d92e
commit eb17895630
3 changed files with 20 additions and 3 deletions

View File

@ -271,8 +271,12 @@ def from_sourcing_files(*args, **kwargs):
env = EnvironmentModifications()
# Check if the files are actually there
if not all(os.path.isfile(file) for file in args):
raise RuntimeError('trying to source non-existing files')
files = [line.split(' ')[0] for line in args]
non_existing = [file for file in files if not os.path.isfile(file)]
if non_existing:
message = 'trying to source non-existing files\n'
message += '\n'.join(non_existing)
raise RuntimeError(message)
# Relevant kwd parameters and formats
info = dict(kwargs)
info.setdefault('shell', '/bin/bash')

View File

@ -0,0 +1,7 @@
#!/usr/bin/env bash
if [[ "$1" == "intel64" ]] ; then
export FOO='intel64'
else
export FOO='default'
fi

View File

@ -119,7 +119,8 @@ def test_source_files(self):
'spack', 'test', 'data')
files = [
join_path(datadir, 'sourceme_first.sh'),
join_path(datadir, 'sourceme_second.sh')
join_path(datadir, 'sourceme_second.sh'),
join_path(datadir, 'sourceme_parameters.sh intel64')
]
env = EnvironmentModifications.from_sourcing_files(*files)
modifications = env.group_by_name()
@ -134,6 +135,11 @@ def test_source_files(self):
self.assertEqual(len(modifications['NEW_VAR']), 1)
self.assertTrue(isinstance(modifications['NEW_VAR'][0], SetEnv))
self.assertEqual(modifications['NEW_VAR'][0].value, 'new')
self.assertEqual(len(modifications['FOO']), 1)
self.assertTrue(isinstance(modifications['FOO'][0], SetEnv))
self.assertEqual(modifications['FOO'][0].value, 'intel64')
# Unset variables
self.assertEqual(len(modifications['EMPTY_PATH_LIST']), 1)
self.assertTrue(isinstance(