From 3fb5d70a729472a7d7f2a5d0d7b84248921fb583 Mon Sep 17 00:00:00 2001
From: Vlad Shablinsky <vladshablinsky@gmail.com>
Date: Mon, 11 Jul 2016 16:09:35 +0300
Subject: [PATCH] Unify Version.create usage

Substitue each Version.new and HeadVersion.new with Version.create
to unify Version and HeadVersion instantiation among core code.

Note that this does not relate to Mac::OS::Version class.
---
 Library/Homebrew/cmd/audit.rb                 |  2 +-
 Library/Homebrew/cmd/create.rb                |  2 +-
 Library/Homebrew/cmd/pull.rb                  |  2 +-
 Library/Homebrew/diagnostic.rb                |  2 +-
 Library/Homebrew/extend/ENV/shared.rb         |  2 +-
 Library/Homebrew/extend/os/mac/diagnostic.rb  |  4 +--
 Library/Homebrew/formula.rb                   |  2 +-
 Library/Homebrew/language/python.rb           |  2 +-
 .../requirements/emacs_requirement.rb         |  2 +-
 .../Homebrew/requirements/perl_requirement.rb |  2 +-
 .../requirements/python_requirement.rb        |  6 ++--
 .../Homebrew/requirements/ruby_requirement.rb |  2 +-
 .../Homebrew/requirements/x11_requirement.rb  |  6 ++--
 Library/Homebrew/software_spec.rb             |  2 +-
 Library/Homebrew/test/test_pkg_version.rb     | 32 +++++++++----------
 .../Homebrew/test/test_version_subclasses.rb  |  8 ++---
 Library/Homebrew/test/test_versions.rb        | 18 +++++------
 Library/Homebrew/test/testing_env.rb          |  2 +-
 18 files changed, 49 insertions(+), 49 deletions(-)

diff --git a/Library/Homebrew/cmd/audit.rb b/Library/Homebrew/cmd/audit.rb
index 18ebbec52e..5171ec7112 100644
--- a/Library/Homebrew/cmd/audit.rb
+++ b/Library/Homebrew/cmd/audit.rb
@@ -606,7 +606,7 @@ class FormulaAuditor
     case stable && stable.url
     when %r{download\.gnome\.org/sources}, %r{ftp\.gnome\.org/pub/GNOME/sources}i
       version = Version.parse(stable.url)
-      if version >= Version.new("1.0")
+      if version >= Version.create("1.0")
         minor_version = version.to_s.split(".", 3)[1].to_i
         if minor_version.odd?
           problem "#{stable.version} is a development release"
diff --git a/Library/Homebrew/cmd/create.rb b/Library/Homebrew/cmd/create.rb
index eb3bec46fe..ac936818a7 100644
--- a/Library/Homebrew/cmd/create.rb
+++ b/Library/Homebrew/cmd/create.rb
@@ -116,7 +116,7 @@ class FormulaCreator
     end
     update_path
     if @version
-      @version = Version.new(@version)
+      @version = Version.create(@version)
     else
       @version = Pathname.new(url).version
     end
diff --git a/Library/Homebrew/cmd/pull.rb b/Library/Homebrew/cmd/pull.rb
index 3b3c68930f..f93ad095ab 100644
--- a/Library/Homebrew/cmd/pull.rb
+++ b/Library/Homebrew/cmd/pull.rb
@@ -441,7 +441,7 @@ module Homebrew
 
     def version(spec_type)
       version_str = info["versions"][spec_type.to_s]
-      version_str && Version.new(version_str)
+      version_str && Version.create(version_str)
     end
 
     def pkg_version(spec_type = :stable)
diff --git a/Library/Homebrew/diagnostic.rb b/Library/Homebrew/diagnostic.rb
index d691ad7c08..4954cde7b7 100644
--- a/Library/Homebrew/diagnostic.rb
+++ b/Library/Homebrew/diagnostic.rb
@@ -761,7 +761,7 @@ module Homebrew
       def check_git_version
         # https://help.github.com/articles/https-cloning-errors
         return unless Utils.git_available?
-        return unless Version.new(Utils.git_version) < Version.new("1.7.10")
+        return unless Version.create(Utils.git_version) < Version.create("1.7.10")
 
         git = Formula["git"]
         git_upgrade_cmd = git.any_version_installed? ? "upgrade" : "install"
diff --git a/Library/Homebrew/extend/ENV/shared.rb b/Library/Homebrew/extend/ENV/shared.rb
index 2debbae580..62aa311ec3 100644
--- a/Library/Homebrew/extend/ENV/shared.rb
+++ b/Library/Homebrew/extend/ENV/shared.rb
@@ -325,6 +325,6 @@ module SharedEnvExtension
 
   def gcc_with_cxx11_support?(cc)
     version = cc[/^gcc-(\d+(?:\.\d+)?)$/, 1]
-    version && Version.new(version) >= Version.new("4.8")
+    version && Version.create(version) >= Version.create("4.8")
   end
 end
diff --git a/Library/Homebrew/extend/os/mac/diagnostic.rb b/Library/Homebrew/extend/os/mac/diagnostic.rb
index 6f64d1f8ad..b3c9b03f62 100644
--- a/Library/Homebrew/extend/os/mac/diagnostic.rb
+++ b/Library/Homebrew/extend/os/mac/diagnostic.rb
@@ -287,8 +287,8 @@ module Homebrew
         return unless MacOS::XQuartz.version
         return if MacOS::XQuartz.provided_by_apple?
 
-        installed_version = Version.new(MacOS::XQuartz.version)
-        latest_version = Version.new(MacOS::XQuartz.latest_version)
+        installed_version = Version.create(MacOS::XQuartz.version)
+        latest_version = Version.create(MacOS::XQuartz.latest_version)
         return if installed_version >= latest_version
 
         <<-EOS.undent
diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb
index aa66bbb490..cb27e94921 100644
--- a/Library/Homebrew/formula.rb
+++ b/Library/Homebrew/formula.rb
@@ -1326,7 +1326,7 @@ class Formula
       }
     end
 
-    hsh["installed"] = hsh["installed"].sort_by { |i| Version.new(i["version"]) }
+    hsh["installed"] = hsh["installed"].sort_by { |i| Version.create(i["version"]) }
 
     hsh
   end
diff --git a/Library/Homebrew/language/python.rb b/Library/Homebrew/language/python.rb
index 646e2ac38d..3c84e5362f 100644
--- a/Library/Homebrew/language/python.rb
+++ b/Library/Homebrew/language/python.rb
@@ -5,7 +5,7 @@ module Language
     def self.major_minor_version(python)
       version = /\d\.\d/.match `#{python} --version 2>&1`
       return unless version
-      Version.new(version.to_s)
+      Version.create(version.to_s)
     end
 
     def self.homebrew_site_packages(version = "2.7")
diff --git a/Library/Homebrew/requirements/emacs_requirement.rb b/Library/Homebrew/requirements/emacs_requirement.rb
index 4f7c36a85e..591b7babb1 100644
--- a/Library/Homebrew/requirements/emacs_requirement.rb
+++ b/Library/Homebrew/requirements/emacs_requirement.rb
@@ -11,7 +11,7 @@ class EmacsRequirement < Requirement
     next false unless which "emacs"
     next true unless @version
     emacs_version = Utils.popen_read("emacs", "--batch", "--eval", "(princ emacs-version)")
-    Version.new(emacs_version) >= Version.new(@version)
+    Version.create(emacs_version) >= Version.create(@version)
   end
 
   env do
diff --git a/Library/Homebrew/requirements/perl_requirement.rb b/Library/Homebrew/requirements/perl_requirement.rb
index 79d5e8e926..0aac216107 100644
--- a/Library/Homebrew/requirements/perl_requirement.rb
+++ b/Library/Homebrew/requirements/perl_requirement.rb
@@ -12,7 +12,7 @@ class PerlRequirement < Requirement
     which_all("perl").detect do |perl|
       perl_version = Utils.popen_read(perl, "--version")[/\(v(\d+\.\d+)(?:\.\d+)?\)/, 1]
       next unless perl_version
-      Version.new(perl_version.to_s) >= Version.new(@version)
+      Version.create(perl_version.to_s) >= Version.create(@version)
     end
   end
 
diff --git a/Library/Homebrew/requirements/python_requirement.rb b/Library/Homebrew/requirements/python_requirement.rb
index 4faf78dfa6..2800f52b0e 100644
--- a/Library/Homebrew/requirements/python_requirement.rb
+++ b/Library/Homebrew/requirements/python_requirement.rb
@@ -11,16 +11,16 @@ class PythonRequirement < Requirement
     version = python_short_version
     next unless version
     # Always use Python 2.7 for consistency on older versions of OSX.
-    version == Version.new("2.7")
+    version == Version.create("2.7")
   end
 
   env do
     short_version = python_short_version
 
-    if !system_python? && short_version == Version.new("2.7")
+    if !system_python? && short_version == Version.create("2.7")
       ENV.prepend_path "PATH", which_python.dirname
     # Homebrew Python should take precedence over older Pythons in the PATH
-    elsif short_version != Version.new("2.7")
+    elsif short_version != Version.create("2.7")
       ENV.prepend_path "PATH", Formula["python"].opt_bin
     end
 
diff --git a/Library/Homebrew/requirements/ruby_requirement.rb b/Library/Homebrew/requirements/ruby_requirement.rb
index 87db397773..c445bd408a 100644
--- a/Library/Homebrew/requirements/ruby_requirement.rb
+++ b/Library/Homebrew/requirements/ruby_requirement.rb
@@ -12,7 +12,7 @@ class RubyRequirement < Requirement
     which_all("ruby").detect do |ruby|
       version = /\d\.\d/.match Utils.popen_read(ruby, "--version")
       next unless version
-      Version.new(version.to_s) >= Version.new(@version)
+      Version.create(version.to_s) >= Version.create(@version)
     end
   end
 
diff --git a/Library/Homebrew/requirements/x11_requirement.rb b/Library/Homebrew/requirements/x11_requirement.rb
index ce921cffa4..d91f9d3d43 100644
--- a/Library/Homebrew/requirements/x11_requirement.rb
+++ b/Library/Homebrew/requirements/x11_requirement.rb
@@ -13,17 +13,17 @@ class X11Requirement < Requirement
   def initialize(name = "x11", tags = [])
     @name = name
     if /(\d\.)+\d/ === tags.first
-      @min_version = Version.new(tags.shift)
+      @min_version = Version.create(tags.shift)
       @min_version_string = " #{@min_version}"
     else
-      @min_version = Version.new("0.0.0")
+      @min_version = Version.create("0.0.0")
       @min_version_string = ""
     end
     super(tags)
   end
 
   satisfy :build_env => false do
-    MacOS::XQuartz.installed? && min_version <= Version.new(MacOS::XQuartz.version)
+    MacOS::XQuartz.installed? && min_version <= Version.create(MacOS::XQuartz.version)
   end
 
   def message
diff --git a/Library/Homebrew/software_spec.rb b/Library/Homebrew/software_spec.rb
index c7e91975a6..47bd1bd850 100644
--- a/Library/Homebrew/software_spec.rb
+++ b/Library/Homebrew/software_spec.rb
@@ -204,7 +204,7 @@ end
 class HeadSoftwareSpec < SoftwareSpec
   def initialize
     super
-    @resource.version = HeadVersion.new("HEAD")
+    @resource.version = Version.create("HEAD")
   end
 
   def verify_download_integrity(_fn)
diff --git a/Library/Homebrew/test/test_pkg_version.rb b/Library/Homebrew/test/test_pkg_version.rb
index ac0a9f24cb..ff7896f8be 100644
--- a/Library/Homebrew/test/test_pkg_version.rb
+++ b/Library/Homebrew/test/test_pkg_version.rb
@@ -7,12 +7,12 @@ class PkgVersionTests < Homebrew::TestCase
   end
 
   def test_parse
-    assert_equal PkgVersion.new(Version.new("1.0"), 1), PkgVersion.parse("1.0_1")
-    assert_equal PkgVersion.new(Version.new("1.0"), 1), PkgVersion.parse("1.0_1")
-    assert_equal PkgVersion.new(Version.new("1.0"), 0), PkgVersion.parse("1.0")
-    assert_equal PkgVersion.new(Version.new("1.0"), 0), PkgVersion.parse("1.0_0")
-    assert_equal PkgVersion.new(Version.new("2.1.4"), 0), PkgVersion.parse("2.1.4_0")
-    assert_equal PkgVersion.new(Version.new("1.0.1e"), 1), PkgVersion.parse("1.0.1e_1")
+    assert_equal PkgVersion.new(Version.create("1.0"), 1), PkgVersion.parse("1.0_1")
+    assert_equal PkgVersion.new(Version.create("1.0"), 1), PkgVersion.parse("1.0_1")
+    assert_equal PkgVersion.new(Version.create("1.0"), 0), PkgVersion.parse("1.0")
+    assert_equal PkgVersion.new(Version.create("1.0"), 0), PkgVersion.parse("1.0_0")
+    assert_equal PkgVersion.new(Version.create("2.1.4"), 0), PkgVersion.parse("2.1.4_0")
+    assert_equal PkgVersion.new(Version.create("1.0.1e"), 1), PkgVersion.parse("1.0.1e_1")
   end
 
   def test_comparison
@@ -24,26 +24,26 @@ class PkgVersionTests < Homebrew::TestCase
     assert_operator v("HEAD"), :>, v("1.0")
     assert_operator v("1.0"), :<, v("HEAD")
 
-    v = PkgVersion.new(Version.new("1.0"), 0)
+    v = PkgVersion.new(Version.create("1.0"), 0)
     assert_nil v <=> Object.new
     assert_raises(ArgumentError) { v > Object.new }
-    assert_raises(ArgumentError) { v > Version.new("1.0") }
+    assert_raises(ArgumentError) { v > Version.create("1.0") }
   end
 
   def test_to_s
-    assert_equal "1.0", PkgVersion.new(Version.new("1.0"), 0).to_s
-    assert_equal "1.0_1", PkgVersion.new(Version.new("1.0"), 1).to_s
-    assert_equal "1.0", PkgVersion.new(Version.new("1.0"), 0).to_s
-    assert_equal "1.0", PkgVersion.new(Version.new("1.0"), 0).to_s
+    assert_equal "1.0", PkgVersion.new(Version.create("1.0"), 0).to_s
+    assert_equal "1.0_1", PkgVersion.new(Version.create("1.0"), 1).to_s
+    assert_equal "1.0", PkgVersion.new(Version.create("1.0"), 0).to_s
+    assert_equal "1.0", PkgVersion.new(Version.create("1.0"), 0).to_s
     assert_equal "HEAD_1", PkgVersion.new(Version.create("HEAD"), 1).to_s
     assert_equal "HEAD-ffffff_1", PkgVersion.new(Version.create("HEAD-ffffff"), 1).to_s
   end
 
   def test_hash
-    p1 = PkgVersion.new(Version.new("1.0"), 1)
-    p2 = PkgVersion.new(Version.new("1.0"), 1)
-    p3 = PkgVersion.new(Version.new("1.1"), 1)
-    p4 = PkgVersion.new(Version.new("1.0"), 0)
+    p1 = PkgVersion.new(Version.create("1.0"), 1)
+    p2 = PkgVersion.new(Version.create("1.0"), 1)
+    p3 = PkgVersion.new(Version.create("1.1"), 1)
+    p4 = PkgVersion.new(Version.create("1.0"), 0)
     assert_equal p1.hash, p2.hash
     refute_equal p1.hash, p3.hash
     refute_equal p1.hash, p4.hash
diff --git a/Library/Homebrew/test/test_version_subclasses.rb b/Library/Homebrew/test/test_version_subclasses.rb
index b2f226efae..5b38268b5a 100644
--- a/Library/Homebrew/test/test_version_subclasses.rb
+++ b/Library/Homebrew/test/test_version_subclasses.rb
@@ -34,10 +34,10 @@ class MacOSVersionTests < Homebrew::TestCase
   end
 
   def test_compare_with_version
-    assert_operator @v, :>, Version.new("10.6")
-    assert_operator @v, :==, Version.new("10.7")
-    assert_operator @v, :===, Version.new("10.7")
-    assert_operator @v, :<, Version.new("10.8")
+    assert_operator @v, :>, Version.create("10.6")
+    assert_operator @v, :==, Version.create("10.7")
+    assert_operator @v, :===, Version.create("10.7")
+    assert_operator @v, :<, Version.create("10.8")
   end
 
   def test_from_symbol
diff --git a/Library/Homebrew/test/test_versions.rb b/Library/Homebrew/test/test_versions.rb
index bdcc16f6ff..a7cb1dc2b2 100644
--- a/Library/Homebrew/test/test_versions.rb
+++ b/Library/Homebrew/test/test_versions.rb
@@ -4,17 +4,17 @@ require "version"
 class VersionTests < Homebrew::TestCase
   def test_accepts_objects_responding_to_to_str
     value = stub(:to_str => "0.1")
-    assert_equal "0.1", Version.new(value).to_s
+    assert_equal "0.1", Version.create(value).to_s
   end
 
   def test_raises_for_non_string_objects
-    assert_raises(TypeError) { Version.new(1.1) }
-    assert_raises(TypeError) { Version.new(1) }
-    assert_raises(TypeError) { Version.new(:symbol) }
+    assert_raises(TypeError) { Version.create(1.1) }
+    assert_raises(TypeError) { Version.create(1) }
+    assert_raises(TypeError) { Version.create(:symbol) }
   end
 
   def test_detected_from_url?
-    refute Version.new("1.0").detected_from_url?
+    refute Version.create("1.0").detected_from_url?
     assert Version::FromURL.new("1.0").detected_from_url?
   end
 end
@@ -462,20 +462,20 @@ class HeadVersionTests < Homebrew::TestCase
   end
 
   def test_commit_assigned
-    v = HeadVersion.new("HEAD-abcdef")
+    v = Version.create("HEAD-abcdef")
     assert_equal "abcdef", v.commit
     assert_equal "HEAD-abcdef", v.to_str
   end
 
   def test_no_commit
-    v = HeadVersion.new("HEAD")
+    v = Version.create("HEAD")
     assert_nil v.commit
     assert_equal "HEAD", v.to_str
   end
 
   def test_update_commit
-    v1 = HeadVersion.new("HEAD-abcdef")
-    v2 = HeadVersion.new("HEAD")
+    v1 = Version.create("HEAD-abcdef")
+    v2 = Version.create("HEAD")
 
     v1.update_commit("ffffff")
     assert_equal "ffffff", v1.commit
diff --git a/Library/Homebrew/test/testing_env.rb b/Library/Homebrew/test/testing_env.rb
index 35aa00b230..887cb2dbb7 100644
--- a/Library/Homebrew/test/testing_env.rb
+++ b/Library/Homebrew/test/testing_env.rb
@@ -27,7 +27,7 @@ module Homebrew
     end
 
     def assert_version_equal(expected, actual)
-      assert_equal Version.new(expected), actual
+      assert_equal Version.create(expected), actual
     end
 
     def assert_version_detected(expected, url, specs={})
-- 
GitLab