summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/package.py21
-rw-r--r--lib/spack/spack/test/packages.py15
2 files changed, 18 insertions, 18 deletions
diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py
index dab963740f..f0aa67fc8f 100644
--- a/lib/spack/spack/package.py
+++ b/lib/spack/spack/package.py
@@ -766,22 +766,6 @@ class PackageBase(with_metaclass(PackageMeta, PackageViewMixin, object)):
version_urls[v] = args['url']
return version_urls
- def nearest_url(self, version):
- """Finds the URL for the next lowest version with a URL.
- If there is no lower version with a URL, uses the
- package url property. If that isn't there, uses a
- *higher* URL, and if that isn't there raises an error.
- """
- version_urls = self.version_urls()
- url = getattr(self.__class__, 'url', None)
-
- for v in version_urls:
- if v > version and url:
- break
- if version_urls[v]:
- url = version_urls[v]
- return url
-
# TODO: move this out of here and into some URL extrapolation module?
def url_for_version(self, version):
"""Returns a URL from which the specified version of this package
@@ -804,9 +788,10 @@ class PackageBase(with_metaclass(PackageMeta, PackageViewMixin, object)):
if version in version_urls:
return version_urls[version]
- # If we have no idea, try to substitute the version.
+ # If we have no idea, substitute the version into the default URL.
+ default_url = getattr(self.__class__, 'url', None)
return spack.url.substitute_version(
- self.nearest_url(version), self.url_version(version))
+ default_url, self.url_version(version))
def _make_resource_stage(self, root_stage, fetcher, resource):
resource_stage_folder = self._resource_stage(resource)
diff --git a/lib/spack/spack/test/packages.py b/lib/spack/spack/test/packages.py
index 9fae9decfb..8f9838ce78 100644
--- a/lib/spack/spack/test/packages.py
+++ b/lib/spack/spack/test/packages.py
@@ -165,3 +165,18 @@ class TestPackage(object):
import spack.pkg.builtin.mock # noqa
import spack.pkg.builtin.mock as m # noqa
from spack.pkg.builtin import mock # noqa
+
+ @pytest.mark.regression('2737')
+ def test_urls_for_versions(self):
+ # Checks that a version directive without a 'url' argument
+ # specified uses the default url
+ for spec_str in ('url_override@0.9.0', 'url_override@1.0.0'):
+ s = Spec(spec_str).concretized()
+ url = s.package.url_for_version('0.9.0')
+ assert url == 'http://www.anothersite.org/uo-0.9.0.tgz'
+
+ url = s.package.url_for_version('1.0.0')
+ assert url == 'http://www.doesnotexist.org/url_override-1.0.0.tar.gz'
+
+ url = s.package.url_for_version('0.8.1')
+ assert url == 'http://www.doesnotexist.org/url_override-0.8.1.tar.gz'