bugfix: mirror path works for unknown versions (#13626)

`mirror_archive_path` was failing to account for the case where the fetched version isn't known to Spack.

- [x] don't require the fetched version to be in `Package.versions`
- [x] add regression test for mirror paths when package does not have a version
This commit is contained in:
Todd Gamblin 2019-11-07 17:13:51 -07:00
parent b44df29316
commit c36d9f297f
No known key found for this signature in database
GPG Key ID: 66B24B9050FDD0B8
2 changed files with 8 additions and 2 deletions

View File

@ -303,8 +303,8 @@ def mirror_archive_paths(fetcher, per_package_ref, spec=None):
storage path of the resource associated with the specified ``fetcher``."""
ext = None
if spec:
ext = spec.package.versions[spec.package.version].get(
'extension', None)
versions = spec.package.versions.get(spec.package.version, {})
ext = versions.get('extension', None)
# If the spec does not explicitly specify an extension (the default case),
# then try to determine it automatically. An extension can only be
# specified for the primary source of the package (e.g. the source code

View File

@ -146,6 +146,12 @@ def test_all_mirror(
repos.clear()
def test_mirror_archive_paths_no_version(mock_packages, config, mock_archive):
spec = Spec('trivial-install-test-package@nonexistingversion')
fetcher = spack.fetch_strategy.URLFetchStrategy(mock_archive.url)
spack.mirror.mirror_archive_paths(fetcher, 'per-package-ref', spec)
def test_mirror_with_url_patches(mock_packages, config, monkeypatch):
spec = Spec('patch-several-dependencies')
spec.concretize()