diff options
-rw-r--r-- | lib/spack/spack/mirror.py | 4 | ||||
-rw-r--r-- | lib/spack/spack/test/mirror.py | 6 |
2 files changed, 8 insertions, 2 deletions
diff --git a/lib/spack/spack/mirror.py b/lib/spack/spack/mirror.py index 0c5e2a9cc2..f7e8e73ea9 100644 --- a/lib/spack/spack/mirror.py +++ b/lib/spack/spack/mirror.py @@ -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 diff --git a/lib/spack/spack/test/mirror.py b/lib/spack/spack/test/mirror.py index da40cfac37..9068db7193 100644 --- a/lib/spack/spack/test/mirror.py +++ b/lib/spack/spack/test/mirror.py @@ -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() |