diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/spack/spack/package.py | 21 | ||||
-rw-r--r-- | lib/spack/spack/test/packages.py | 15 |
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' |