From f87fadd4ee7a5f157df6813c233b9e8684a66a4b Mon Sep 17 00:00:00 2001 From: JCount Date: Mon, 26 Jun 2017 16:16:45 -0400 Subject: [PATCH 1/2] version: improve parsing of url-only, non-filename versions add support for styles prefixed with a r,v,V and an optional _ , and styles with four groups of digits, seperated by periods; combinations of the two are also supported --- Library/Homebrew/version.rb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/version.rb b/Library/Homebrew/version.rb index f99914c4dc..5e8ba7a436 100644 --- a/Library/Homebrew/version.rb +++ b/Library/Homebrew/version.rb @@ -407,8 +407,13 @@ class Version # e.g. http://mirrors.jenkins-ci.org/war/1.486/jenkins.war # e.g. https://github.com/foo/bar/releases/download/0.10.11/bar.phar - m = %r{/(\d\.\d+(\.\d+)?)}.match(spec_s) - return m.captures.first unless m.nil? + # e.g. https://github.com/clojure/clojurescript/releases/download/r1.9.293/cljs.jar + # e.g. https://github.com/fibjs/fibjs/releases/download/v0.6.1/fullsrc.zip + # e.g. https://wwwlehre.dhbw-stuttgart.de/~sschulz/WORK/E_DOWNLOAD/V_1.9/E.tgz + # e.g. https://github.com/JustArchi/ArchiSteamFarm/releases/download/2.3.2.0/ASF.zip + # e.g. https://people.gnome.org/~newren/eg/download/1.7.5.2/eg + m = %r{/([rvV]_?)?(\d\.\d+(\.\d+){,2})}.match(spec_s) + return m.captures[1] unless m.nil? # e.g. http://www.ijg.org/files/jpegsrc.v8d.tar.gz m = /\.v(\d+[a-z]?)/.match(stem) From d50312ae6bb36e8735ae7cbf05eec5498dba32e2 Mon Sep 17 00:00:00 2001 From: JCount Date: Mon, 26 Jun 2017 16:57:40 -0400 Subject: [PATCH 2/2] version_spec: add tests for char prefixed and w.x.y.z url-only styles --- Library/Homebrew/test/version_spec.rb | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/Library/Homebrew/test/version_spec.rb b/Library/Homebrew/test/version_spec.rb index 41e05019c4..5203d7c43d 100644 --- a/Library/Homebrew/test/version_spec.rb +++ b/Library/Homebrew/test/version_spec.rb @@ -438,11 +438,6 @@ describe Version do .to be_detected_from("https://example.com/dada-v2017-04-17.tar.gz") end - specify "dash version style" do - expect(Version.create("3.4")) - .to be_detected_from("http://www.antlr.org/download/antlr-3.4-complete.jar") - end - specify "jenkins version style" do expect(Version.create("1.486")) .to be_detected_from("http://mirrors.jenkins-ci.org/war/1.486/jenkins.war") @@ -450,6 +445,27 @@ describe Version do .to be_detected_from("https://github.com/hechoendrupal/DrupalConsole/releases/download/0.10.11/drupal.phar") end + specify "char prefixed, url-only version style" do + expect(Version.create("1.9.293")) + .to be_detected_from("https://github.com/clojure/clojurescript/releases/download/r1.9.293/cljs.jar") + expect(Version.create("0.6.1")) + .to be_detected_from("https://github.com/fibjs/fibjs/releases/download/v0.6.1/fullsrc.zip") + expect(Version.create("1.9")) + .to be_detected_from("https://wwwlehre.dhbw-stuttgart.de/~sschulz/WORK/E_DOWNLOAD/V_1.9/E.tgz") + end + + specify "w.x.y.z url-only version style" do + expect(Version.create("2.3.2.0")) + .to be_detected_from("https://github.com/JustArchi/ArchiSteamFarm/releases/download/2.3.2.0/ASF.zip") + expect(Version.create("1.7.5.2")) + .to be_detected_from("https://people.gnome.org/~newren/eg/download/1.7.5.2/eg") + end + + specify "dash version style" do + expect(Version.create("3.4")) + .to be_detected_from("http://www.antlr.org/download/antlr-3.4-complete.jar") + end + specify "apache version style" do expect(Version.create("1.2.0-rc2")) .to be_detected_from("http://www.apache.org/dyn/closer.cgi?path=/cassandra/1.2.0/apache-cassandra-1.2.0-rc2-bin.tar.gz")