Skip to content
Snippets Groups Projects
Unverified Commit 395b478b authored by Massimiliano Culpo's avatar Massimiliano Culpo Committed by GitHub
Browse files

spack config update (bugfix): packages.yaml with empty attributes (#18057)

Before this PR, packages.yaml files that contained an
empty "paths" or "modules" attribute were not updated
correctly, since the update function was not reporting
them as changed after the update.

This PR fixes that issue and adds a unit test to
avoid regression.
parent a6a5708c
No related branches found
No related tags found
No related merge requests found
......@@ -128,6 +128,14 @@ def update(data):
changed = False
for cfg_object in data.values():
externals = []
# If we don't have these deprecated attributes, continue
if not any(x in cfg_object for x in ('paths', 'modules')):
continue
# If we arrive here we need to make some changes i.e.
# we need to remove and eventually convert some attributes
changed = True
paths = cfg_object.pop('paths', {})
for spec, prefix in paths.items():
externals.append({
......@@ -141,6 +149,6 @@ def update(data):
'modules': [str(module)]
})
if externals:
changed = True
cfg_object['externals'] = externals
return changed
......@@ -551,6 +551,27 @@ def test_config_update_can_handle_comments(mutable_config):
assert '# Another comment after the outdated section' in text
@pytest.mark.regression('18050')
def test_config_update_works_for_empty_paths(mutable_config):
# Create an outdated config file with empty "paths" and "modules"
scope = spack.config.default_modify_scope()
cfg_file = spack.config.config.get_config_filename(scope, 'packages')
with open(cfg_file, mode='w') as f:
f.write("""
packages:
cmake:
paths: {}
modules: {}
buildable: False
""")
# Try to update it, it should not raise errors
output = config('update', '-y', 'packages')
# This ensures that we updated the configuration
assert '[backup=' in output
def check_update(data):
"""Check that the data from the packages_yaml_v015
has been updated.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment