aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew
diff options
context:
space:
mode:
authorilovezfs2016-08-18 04:53:34 -0700
committerilovezfs2016-08-18 06:51:02 -0700
commita5a1b2969fa6a515495b11f746f43ec005ed671b (patch)
treea9ffd9cac33c784ea5089a2abcaa3d16170e8e0c /Library/Homebrew
parentb39eba6c5f0f6f1b19e663df52bc72b9d8518886 (diff)
downloadbrew-a5a1b2969fa6a515495b11f746f43ec005ed671b.tar.bz2
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.
Diffstat (limited to 'Library/Homebrew')
-rw-r--r--Library/Homebrew/test/test_versions.rb6
-rw-r--r--Library/Homebrew/version.rb2
2 files changed, 7 insertions, 1 deletions
diff --git a/Library/Homebrew/test/test_versions.rb b/Library/Homebrew/test/test_versions.rb
index 5ae960e0f..734117609 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 002bd5372..0d9f45149 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