diff --git a/Library/Homebrew/resource.rb b/Library/Homebrew/resource.rb index 92497a99c4..42ea9b5106 100644 --- a/Library/Homebrew/resource.rb +++ b/Library/Homebrew/resource.rb @@ -195,8 +195,10 @@ class Resource < Downloadable return super() if val.nil? @version = case val - when String then Version.create(val) - when Version then val + when String + val.blank? ? Version::NULL : Version.new(val) + when Version + val else # TODO: This can probably go if/when typechecking is enforced in taps. raise TypeError, "version '#{val.inspect}' should be a string" diff --git a/Library/Homebrew/test/os/os_spec.rb b/Library/Homebrew/test/os/os_spec.rb index 1e671f67a5..7dae2be4ce 100644 --- a/Library/Homebrew/test/os/os_spec.rb +++ b/Library/Homebrew/test/os/os_spec.rb @@ -1,9 +1,19 @@ # frozen_string_literal: true describe OS do - describe ".kernel_version" do - it "is not empty" do - expect(described_class.kernel_version).not_to be_empty + describe "::kernel_version" do + it "is not NULL" do + expect(described_class.kernel_version).not_to be_null + end + end + + describe "::kernel_name" do + it "returns Linux on Linux", :needs_linux do + expect(described_class.kernel_name).to eq "Linux" + end + + it "returns Darwin on macOS", :needs_macos do + expect(described_class.kernel_name).to eq "Darwin" end end end diff --git a/Library/Homebrew/test/version_spec.rb b/Library/Homebrew/test/version_spec.rb index ec55cc35bf..f7001ed6b3 100644 --- a/Library/Homebrew/test/version_spec.rb +++ b/Library/Homebrew/test/version_spec.rb @@ -240,16 +240,6 @@ describe Version do expect(versions.sort_by { |v| described_class.create(v) }).to eq(versions) end - describe "#empty?" do - it "returns true if version is empty" do - expect(described_class.create("").empty?).to be(true) - end - - it "returns false if version is not empty" do - expect(described_class.create("1.2.3").empty?).to be(false) - end - end - specify "hash equality" do v1 = described_class.create("0.1.0") v2 = described_class.create("0.1.0") diff --git a/Library/Homebrew/version.rb b/Library/Homebrew/version.rb index 6b1b7d3fe6..a8f6f9fd3b 100644 --- a/Library/Homebrew/version.rb +++ b/Library/Homebrew/version.rb @@ -494,7 +494,10 @@ class Version def initialize(val, detected_from_url: false) raise TypeError, "Version value must be a string; got a #{val.class} (#{val})" unless val.respond_to?(:to_str) - @version = val.to_str + version = val.to_str + raise ArgumentError, "Version must not be empty" if version.blank? + + @version = version @detected_from_url = detected_from_url end @@ -679,11 +682,6 @@ class Version major_minor_patch.empty? ? NULL : self.class.new(major_minor_patch.join(".")) end - sig { returns(T::Boolean) } - def empty? - version&.empty? || false - end - sig { returns(Integer) } def hash version.hash