Skip to content

Commit bf71ba1

Browse files
committed
always include mandatory easyconfig parameters in dumped easyconfig file, regardless of whether default value is used or not
1 parent c7771c5 commit bf71ba1

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

easybuild/framework/easyconfig/format/one.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,9 @@ def dump(self, ecfg, default_values, templ_const, templ_val):
286286
# print other easyconfig parameters at the end
287287
keys_to_ignore = printed_keys + LAST_PARAMS
288288
for key in default_values:
289-
if key not in keys_to_ignore and ecfg[key] != default_values[key]:
289+
mandatory = ecfg.is_mandatory_param(key)
290+
non_default_value = ecfg[key] != default_values[key]
291+
if key not in keys_to_ignore and (mandatory or non_default_value):
290292
dump.extend(self._find_param_with_comments(key, quote_py_str(ecfg[key]), templ_const, templ_val))
291293
dump.append('')
292294

test/framework/easyconfig.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,19 @@ def test_extra_options(self):
357357
self.assertEqual(ec['mandatory_key'], 'value')
358358
self.assertTrue(ec.is_mandatory_param('mandatory_key'))
359359

360+
# check whether mandatory key is retained in dumped easyconfig file, even if it's set to the default value
361+
ec['mandatory_key'] = 'default'
362+
test_ecfile = os.path.join(self.test_prefix, 'test_dump_mandatory.eb')
363+
ec.dump(test_ecfile)
364+
365+
regex = re.compile("^mandatory_key = 'default'$", re.M)
366+
ectxt = read_file(test_ecfile)
367+
self.assertTrue(regex.search(ectxt), "Pattern '%s' found in: %s" % (regex.pattern, ectxt))
368+
369+
# parsing again should work fine (if mandatory easyconfig parameters are indeed retained)
370+
ec = EasyConfig(test_ecfile, extra_options=extra_vars)
371+
self.assertEqual(ec['mandatory_key'], 'default')
372+
360373
def test_exts_list(self):
361374
"""Test handling of list of extensions."""
362375
topdir = os.path.dirname(os.path.abspath(__file__))

0 commit comments

Comments
 (0)