Allow adding specs to an environment without the 'specs' attribute (#37378)
This commit is contained in:
parent
7c8590ee44
commit
03d1841385
2 changed files with 24 additions and 2 deletions
|
@ -2606,8 +2606,8 @@ def add_user_spec(self, user_spec: str) -> None:
|
|||
Args:
|
||||
user_spec: user spec to be appended
|
||||
"""
|
||||
config_dict(self.pristine_yaml_content)["specs"].append(user_spec)
|
||||
config_dict(self.yaml_content)["specs"].append(user_spec)
|
||||
config_dict(self.pristine_yaml_content).setdefault("specs", []).append(user_spec)
|
||||
config_dict(self.yaml_content).setdefault("specs", []).append(user_spec)
|
||||
self.changed = True
|
||||
|
||||
def remove_user_spec(self, user_spec: str) -> None:
|
||||
|
|
|
@ -363,3 +363,25 @@ def test_error_on_nonempty_view_dir(tmpdir):
|
|||
|
||||
with pytest.raises(SpackEnvironmentViewError):
|
||||
_error_on_nonempty_view_dir("file")
|
||||
|
||||
|
||||
def test_can_add_specs_to_environment_without_specs_attribute(tmp_path, mock_packages, config):
|
||||
"""Sometimes users have template manifest files, and save one line in the YAML file by
|
||||
removing the empty 'specs: []' attribute. This test ensures that adding a spec to an
|
||||
environment without the 'specs' attribute, creates the attribute first instead of returning
|
||||
an error.
|
||||
"""
|
||||
spack_yaml = tmp_path / "spack.yaml"
|
||||
spack_yaml.write_text(
|
||||
"""
|
||||
spack:
|
||||
view: true
|
||||
concretizer:
|
||||
unify: true
|
||||
"""
|
||||
)
|
||||
env = ev.Environment(tmp_path)
|
||||
env.add("a")
|
||||
|
||||
assert len(env.user_specs) == 1
|
||||
assert env.manifest.pristine_yaml_content["spack"]["specs"] == ["a"]
|
||||
|
|
Loading…
Reference in a new issue