Environment.clear: ensure clearing is passed through to manifest (#46880)
* Environment.clear: ensure clearing is passed through to manifest * test/cmd/env: make test_remove_commmand round-trip to disk * cleanup vestigial variables
This commit is contained in:
parent
8e4e3c9060
commit
f807337273
@ -1159,6 +1159,8 @@ def clear(self, re_read=False):
|
|||||||
# things that cannot be recreated from file
|
# things that cannot be recreated from file
|
||||||
self.new_specs = [] # write packages for these on write()
|
self.new_specs = [] # write packages for these on write()
|
||||||
|
|
||||||
|
self.manifest.clear()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def active(self):
|
def active(self):
|
||||||
"""True if this environment is currently active."""
|
"""True if this environment is currently active."""
|
||||||
@ -2789,6 +2791,11 @@ def remove_user_spec(self, user_spec: str) -> None:
|
|||||||
raise SpackEnvironmentError(msg) from e
|
raise SpackEnvironmentError(msg) from e
|
||||||
self.changed = True
|
self.changed = True
|
||||||
|
|
||||||
|
def clear(self) -> None:
|
||||||
|
"""Clear all user specs from the list of root specs"""
|
||||||
|
self.configuration["specs"] = []
|
||||||
|
self.changed = True
|
||||||
|
|
||||||
def override_user_spec(self, user_spec: str, idx: int) -> None:
|
def override_user_spec(self, user_spec: str, idx: int) -> None:
|
||||||
"""Overrides the user spec at index idx with the one passed as input.
|
"""Overrides the user spec at index idx with the one passed as input.
|
||||||
|
|
||||||
|
@ -574,42 +574,76 @@ def test_remove_command():
|
|||||||
|
|
||||||
with ev.read("test"):
|
with ev.read("test"):
|
||||||
add("mpileaks")
|
add("mpileaks")
|
||||||
|
|
||||||
|
with ev.read("test"):
|
||||||
assert "mpileaks" in find()
|
assert "mpileaks" in find()
|
||||||
assert "mpileaks@" not in find()
|
assert "mpileaks@" not in find()
|
||||||
assert "mpileaks@" not in find("--show-concretized")
|
assert "mpileaks@" not in find("--show-concretized")
|
||||||
|
|
||||||
with ev.read("test"):
|
with ev.read("test"):
|
||||||
remove("mpileaks")
|
remove("mpileaks")
|
||||||
|
|
||||||
|
with ev.read("test"):
|
||||||
assert "mpileaks" not in find()
|
assert "mpileaks" not in find()
|
||||||
assert "mpileaks@" not in find()
|
assert "mpileaks@" not in find()
|
||||||
assert "mpileaks@" not in find("--show-concretized")
|
assert "mpileaks@" not in find("--show-concretized")
|
||||||
|
|
||||||
with ev.read("test"):
|
with ev.read("test"):
|
||||||
add("mpileaks")
|
add("mpileaks")
|
||||||
|
|
||||||
|
with ev.read("test"):
|
||||||
assert "mpileaks" in find()
|
assert "mpileaks" in find()
|
||||||
assert "mpileaks@" not in find()
|
assert "mpileaks@" not in find()
|
||||||
assert "mpileaks@" not in find("--show-concretized")
|
assert "mpileaks@" not in find("--show-concretized")
|
||||||
|
|
||||||
with ev.read("test"):
|
with ev.read("test"):
|
||||||
concretize()
|
concretize()
|
||||||
|
|
||||||
|
with ev.read("test"):
|
||||||
assert "mpileaks" in find()
|
assert "mpileaks" in find()
|
||||||
assert "mpileaks@" not in find()
|
assert "mpileaks@" not in find()
|
||||||
assert "mpileaks@" in find("--show-concretized")
|
assert "mpileaks@" in find("--show-concretized")
|
||||||
|
|
||||||
with ev.read("test"):
|
with ev.read("test"):
|
||||||
remove("mpileaks")
|
remove("mpileaks")
|
||||||
|
|
||||||
|
with ev.read("test"):
|
||||||
assert "mpileaks" not in find()
|
assert "mpileaks" not in find()
|
||||||
# removed but still in last concretized specs
|
# removed but still in last concretized specs
|
||||||
assert "mpileaks@" in find("--show-concretized")
|
assert "mpileaks@" in find("--show-concretized")
|
||||||
|
|
||||||
with ev.read("test"):
|
with ev.read("test"):
|
||||||
concretize()
|
concretize()
|
||||||
|
|
||||||
|
with ev.read("test"):
|
||||||
assert "mpileaks" not in find()
|
assert "mpileaks" not in find()
|
||||||
assert "mpileaks@" not in find()
|
assert "mpileaks@" not in find()
|
||||||
# now the lockfile is regenerated and it's gone.
|
# now the lockfile is regenerated and it's gone.
|
||||||
assert "mpileaks@" not in find("--show-concretized")
|
assert "mpileaks@" not in find("--show-concretized")
|
||||||
|
|
||||||
|
|
||||||
|
def test_remove_command_all():
|
||||||
|
# Need separate ev.read calls for each command to ensure we test round-trip to disk
|
||||||
|
env("create", "test")
|
||||||
|
test_pkgs = ("mpileaks", "zlib")
|
||||||
|
|
||||||
|
with ev.read("test"):
|
||||||
|
for name in test_pkgs:
|
||||||
|
add(name)
|
||||||
|
|
||||||
|
with ev.read("test"):
|
||||||
|
for name in test_pkgs:
|
||||||
|
assert name in find()
|
||||||
|
assert f"{name}@" not in find()
|
||||||
|
|
||||||
|
with ev.read("test"):
|
||||||
|
remove("-a")
|
||||||
|
|
||||||
|
with ev.read("test"):
|
||||||
|
for name in test_pkgs:
|
||||||
|
assert name not in find()
|
||||||
|
|
||||||
|
|
||||||
def test_bad_remove_included_env():
|
def test_bad_remove_included_env():
|
||||||
env("create", "test")
|
env("create", "test")
|
||||||
test = ev.read("test")
|
test = ev.read("test")
|
||||||
|
Loading…
Reference in New Issue
Block a user