Fix for being able to 'spack load' packages that have been renamed. (#14348)
* Fix for being able to 'spack load' packages that have been renamed. * tests: add test for 'spack load' of a installed, but renamed/deleted package
This commit is contained in:
parent
3753424a87
commit
654914d53e
@ -342,7 +342,11 @@ def get_module(module_type, spec, get_full_path, required=True):
|
|||||||
The module name or path. May return ``None`` if the module is not
|
The module name or path. May return ``None`` if the module is not
|
||||||
available.
|
available.
|
||||||
"""
|
"""
|
||||||
if spec.package.installed_upstream:
|
try:
|
||||||
|
upstream = spec.package.installed_upstream
|
||||||
|
except spack.repo.UnknownPackageError:
|
||||||
|
upstream, record = spack.store.db.query_by_spec_hash(spec.dag_hash())
|
||||||
|
if upstream:
|
||||||
module = (spack.modules.common.upstream_module_index
|
module = (spack.modules.common.upstream_module_index
|
||||||
.upstream_module(spec, module_type))
|
.upstream_module(spec, module_type))
|
||||||
if not module:
|
if not module:
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
import spack.spec
|
import spack.spec
|
||||||
import spack.modules.tcl
|
import spack.modules.tcl
|
||||||
from spack.modules.common import UpstreamModuleIndex
|
from spack.modules.common import UpstreamModuleIndex
|
||||||
|
from spack.spec import Spec
|
||||||
|
|
||||||
import spack.error
|
import spack.error
|
||||||
|
|
||||||
@ -183,3 +184,33 @@ def test_get_module_upstream():
|
|||||||
assert m1_path == '/path/to/a'
|
assert m1_path == '/path/to/a'
|
||||||
finally:
|
finally:
|
||||||
spack.modules.common.upstream_module_index = old_index
|
spack.modules.common.upstream_module_index = old_index
|
||||||
|
|
||||||
|
|
||||||
|
def test_load_installed_package_not_in_repo(install_mockery, mock_fetch,
|
||||||
|
monkeypatch):
|
||||||
|
# Get a basic concrete spec for the trivial install package.
|
||||||
|
spec = Spec('trivial-install-test-package')
|
||||||
|
spec.concretize()
|
||||||
|
assert spec.concrete
|
||||||
|
|
||||||
|
# Get the package
|
||||||
|
pkg = spec.package
|
||||||
|
|
||||||
|
def find_nothing(*args):
|
||||||
|
raise spack.repo.UnknownPackageError(
|
||||||
|
'Repo package access is disabled for test')
|
||||||
|
|
||||||
|
try:
|
||||||
|
pkg.do_install()
|
||||||
|
|
||||||
|
spec._package = None
|
||||||
|
monkeypatch.setattr(spack.repo, 'get', find_nothing)
|
||||||
|
with pytest.raises(spack.repo.UnknownPackageError):
|
||||||
|
spec.package
|
||||||
|
|
||||||
|
module_path = spack.modules.common.get_module('tcl', spec, True)
|
||||||
|
assert module_path
|
||||||
|
pkg.do_uninstall()
|
||||||
|
except Exception:
|
||||||
|
pkg.remove_prefix()
|
||||||
|
raise
|
||||||
|
Loading…
Reference in New Issue
Block a user