From 8ed8d6979caed81fb477387ccb8579a8646b7bc0 Mon Sep 17 00:00:00 2001 From: David Frascone Date: Tue, 3 Mar 2020 10:43:54 -0700 Subject: [PATCH 1/2] Fix for when version is nil When version is nil, (version <==> other.version) also returns nil and then the nill object doesn't have a nonzero? method. I'm not sure what package put me into this state, but, this fix repaired my environment. Also, there is probably a more ruby-esque way to do this, but, I'm not a ruby expert ;-) --- Library/Homebrew/pkg_version.rb | 5 ++++- Library/Homebrew/test/pkg_version_spec.rb | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/pkg_version.rb b/Library/Homebrew/pkg_version.rb index 43b45d60eb..b08536bfa0 100644 --- a/Library/Homebrew/pkg_version.rb +++ b/Library/Homebrew/pkg_version.rb @@ -36,7 +36,10 @@ class PkgVersion def <=>(other) return unless other.is_a?(PkgVersion) - (version <=> other.version).nonzero? || revision <=> other.revision + comp_ver = (version <=> other.version) + return if comp_ver.nil? + + comp_ver.nonzero? || revision <=> other.revision end alias eql? == diff --git a/Library/Homebrew/test/pkg_version_spec.rb b/Library/Homebrew/test/pkg_version_spec.rb index 8e456ad623..474485ffe3 100644 --- a/Library/Homebrew/test/pkg_version_spec.rb +++ b/Library/Homebrew/test/pkg_version_spec.rb @@ -54,6 +54,11 @@ describe PkgVersion do describe "#<=>" do it "returns nil if the comparison fails" do expect(described_class.new(Version.create("1.0"), 0) <=> Object.new).to be nil + expect(Object.new <=> described_class.new(Version.create("1.0"), 0)).to be nil + expect(Object.new <=> described_class.new(Version.create("1.0"), 0)).to be nil + expect(described_class.new(Version.create("1.0"), 0) <=> nil).to be nil + # This one used to fail due to dereferencing a null `self` + expect(described_class.new(nil, 0) <=> described_class.new(Version.create("1.0"), 0)).to be nil end end From 57fd98ec4f945ffab6826686e3888fb2c0b2dff4 Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Wed, 4 Mar 2020 11:28:28 +0000 Subject: [PATCH 2/2] pkg_version: tweak variable naming. --- Library/Homebrew/pkg_version.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/pkg_version.rb b/Library/Homebrew/pkg_version.rb index b08536bfa0..5b2e7522ef 100644 --- a/Library/Homebrew/pkg_version.rb +++ b/Library/Homebrew/pkg_version.rb @@ -36,10 +36,10 @@ class PkgVersion def <=>(other) return unless other.is_a?(PkgVersion) - comp_ver = (version <=> other.version) - return if comp_ver.nil? + version_comparison = (version <=> other.version) + return if version_comparison.nil? - comp_ver.nonzero? || revision <=> other.revision + version_comparison.nonzero? || revision <=> other.revision end alias eql? ==