repo: fix construction of UnknownPackageError (#16865)
Also improve the error messages
This commit is contained in:
parent
ec5959694c
commit
9d1f71e89f
@ -759,8 +759,8 @@ def _create_namespace(self):
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
parent = None
|
parent = None
|
||||||
for l in range(1, len(self._names) + 1):
|
for i in range(1, len(self._names) + 1):
|
||||||
ns = '.'.join(self._names[:l])
|
ns = '.'.join(self._names[:i])
|
||||||
|
|
||||||
if ns not in sys.modules:
|
if ns not in sys.modules:
|
||||||
module = SpackNamespace(ns)
|
module = SpackNamespace(ns)
|
||||||
@ -773,7 +773,7 @@ def _create_namespace(self):
|
|||||||
# This ensures that we can do things like:
|
# This ensures that we can do things like:
|
||||||
# import spack.pkg.builtin.mpich as mpich
|
# import spack.pkg.builtin.mpich as mpich
|
||||||
if parent:
|
if parent:
|
||||||
modname = self._names[l - 1]
|
modname = self._names[i - 1]
|
||||||
setattr(parent, modname, module)
|
setattr(parent, modname, module)
|
||||||
else:
|
else:
|
||||||
# no need to set up a module
|
# no need to set up a module
|
||||||
@ -882,9 +882,7 @@ def get(self, spec):
|
|||||||
raise UnknownPackageError(spec.name)
|
raise UnknownPackageError(spec.name)
|
||||||
|
|
||||||
if spec.namespace and spec.namespace != self.namespace:
|
if spec.namespace and spec.namespace != self.namespace:
|
||||||
raise UnknownPackageError(
|
raise UnknownPackageError(spec.name, self.namespace)
|
||||||
"Repository %s does not contain package %s"
|
|
||||||
% (self.namespace, spec.fullname))
|
|
||||||
|
|
||||||
package_class = self.get_pkg_class(spec.name)
|
package_class = self.get_pkg_class(spec.name)
|
||||||
try:
|
try:
|
||||||
@ -1271,16 +1269,22 @@ class UnknownPackageError(UnknownEntityError):
|
|||||||
|
|
||||||
def __init__(self, name, repo=None):
|
def __init__(self, name, repo=None):
|
||||||
msg = None
|
msg = None
|
||||||
if repo:
|
|
||||||
msg = "Package '%s' not found in repository '%s'" % (name, repo)
|
|
||||||
else:
|
|
||||||
msg = "Package '%s' not found." % name
|
|
||||||
|
|
||||||
# special handling for specs that may have been intended as filenames
|
|
||||||
# prompt the user to ask whether they intended to write './<name>'
|
|
||||||
long_msg = None
|
long_msg = None
|
||||||
if name.endswith(".yaml"):
|
if name:
|
||||||
long_msg = "Did you mean to specify a filename with './%s'?" % name
|
if repo:
|
||||||
|
msg = "Package '{0}' not found in repository '{1}'"
|
||||||
|
msg = msg.format(name, repo)
|
||||||
|
else:
|
||||||
|
msg = "Package '{0}' not found.".format(name)
|
||||||
|
|
||||||
|
# Special handling for specs that may have been intended as
|
||||||
|
# filenames: prompt the user to ask whether they intended to write
|
||||||
|
# './<name>'.
|
||||||
|
if name.endswith(".yaml"):
|
||||||
|
long_msg = "Did you mean to specify a filename with './{0}'?"
|
||||||
|
long_msg = long_msg.format(name)
|
||||||
|
else:
|
||||||
|
msg = "Attempting to retrieve anonymous package."
|
||||||
|
|
||||||
super(UnknownPackageError, self).__init__(msg, long_msg)
|
super(UnknownPackageError, self).__init__(msg, long_msg)
|
||||||
self.name = name
|
self.name = name
|
||||||
|
@ -51,6 +51,11 @@ def test_repo_unknown_pkg(mutable_mock_repo):
|
|||||||
mutable_mock_repo.get('builtin.mock.nonexistentpackage')
|
mutable_mock_repo.get('builtin.mock.nonexistentpackage')
|
||||||
|
|
||||||
|
|
||||||
|
def test_repo_anonymous_pkg(mutable_mock_repo):
|
||||||
|
with pytest.raises(spack.repo.UnknownPackageError):
|
||||||
|
mutable_mock_repo.get('+variant')
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.maybeslow
|
@pytest.mark.maybeslow
|
||||||
def test_repo_last_mtime():
|
def test_repo_last_mtime():
|
||||||
latest_mtime = max(os.path.getmtime(p.module.__file__)
|
latest_mtime = max(os.path.getmtime(p.module.__file__)
|
||||||
|
Loading…
Reference in New Issue
Block a user