diff --git a/lib/spack/spack/environment.py b/lib/spack/spack/environment.py index 1423acbddb3110b5a42e61698cf888c874f69596..ef9112a6846f7e7e76f489ba02f7f9dc0d0a8f05 100644 --- a/lib/spack/spack/environment.py +++ b/lib/spack/spack/environment.py @@ -1787,7 +1787,7 @@ def update_yaml(manifest, backup_file): shutil.copy(manifest, backup_file) with open(manifest, 'w') as f: - _write_yaml(data, f) + syaml.dump_config(data, f) return True diff --git a/lib/spack/spack/test/cmd/env.py b/lib/spack/spack/test/cmd/env.py index 955693ca0f7a89deabe759cb90335a4bf16e52bc..26f0a10681ab5d5dfdc1335f1be2236cab407de1 100644 --- a/lib/spack/spack/test/cmd/env.py +++ b/lib/spack/spack/test/cmd/env.py @@ -2112,3 +2112,23 @@ def test_old_format_cant_be_updated_implicitly(packages_yaml_v015): env('activate', str(manifest.dirname)) with pytest.raises(spack.main.SpackCommandError): add('hdf5') + + +@pytest.mark.regression('18147') +def test_can_update_attributes_with_override(tmpdir): + spack_yaml = """ +spack: + mirrors:: + test: /foo/bar + packages: + cmake: + paths: + cmake@3.18.1: /usr + specs: + - hdf5 +""" + abspath = tmpdir.join('spack.yaml') + abspath.write(spack_yaml) + + # Check that an update does not raise + env('update', '-y', str(abspath.dirname))