Merge pull request #2827 from JCount/version-improve-url-only-version-parsing

version: improve url-only version parsing
This commit is contained in:
JCount 2017-06-30 11:37:28 -04:00 committed by GitHub
commit 0a5052141d
2 changed files with 28 additions and 7 deletions

View File

@ -453,11 +453,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")
@ -465,6 +460,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")

View File

@ -428,8 +428,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)