From a5a1b2969fa6a515495b11f746f43ec005ed671b Mon Sep 17 00:00:00 2001 From: ilovezfs Date: Thu, 18 Aug 2016 04:53:34 -0700 Subject: [PATCH] version: fix parsing of URLs ending with version https://github.com/lihaoyi/Ammonite/releases/download/0.7.4/0.7.4 was parsing as "0.7" not "0.7.4" since ".4" was being treated as a legitimate file extension. At minimum, let's insist that a valid file extension include at least one letter to avoid lopping off part of the correct version string. --- Library/Homebrew/test/test_versions.rb | 6 +++++- Library/Homebrew/version.rb | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/test/test_versions.rb b/Library/Homebrew/test/test_versions.rb index 5ae960e0fc..7341176090 100644 --- a/Library/Homebrew/test/test_versions.rb +++ b/Library/Homebrew/test/test_versions.rb @@ -438,8 +438,12 @@ class VersionParsingTests < Homebrew::TestCase "https://opam.ocaml.org/archives/easy-format.1.0.2+opam.tar.gz" end - def test_waf_version + def test_no_extension_version assert_version_detected "1.8.12", "https://waf.io/waf-1.8.12" + assert_version_detected "0.7.1", "https://codeload.github.com/gsamokovarov/jump/tar.gz/v0.7.1" + assert_version_detected "0.9.1234", "https://my.datomic.com/downloads/free/0.9.1234" + assert_version_detected "0.9", "https://my.datomic.com/downloads/free/0.9.1t34" + assert_version_detected "1.2.3", "https://my.datomic.com/downloads/free/1.2.3" end def test_dash_separated_version diff --git a/Library/Homebrew/version.rb b/Library/Homebrew/version.rb index 002bd5372e..0d9f45149b 100644 --- a/Library/Homebrew/version.rb +++ b/Library/Homebrew/version.rb @@ -294,6 +294,8 @@ class Version spec.basename.to_s elsif %r{((?:sourceforge\.net|sf\.net)/.*)/download$}.match(spec_s) Pathname.new(spec.dirname).stem + elsif %r{\.[^a-zA-Z]+$}.match(spec_s) + Pathname.new(spec_s).basename else spec.stem end