diff --git a/Library/Homebrew/test/test_versions.rb b/Library/Homebrew/test/test_versions.rb index 927cd2bac6..c4fbb86f39 100644 --- a/Library/Homebrew/test/test_versions.rb +++ b/Library/Homebrew/test/test_versions.rb @@ -1,6 +1,19 @@ require 'testing_env' require 'version' +class VersionTests < Test::Unit::TestCase + def test_accepts_objects_responding_to_to_str + value = stub(:to_str => '0.1') + assert_equal '0.1', Version.new(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) } + end +end + class VersionComparisonTests < Test::Unit::TestCase include VersionAssertions diff --git a/Library/Homebrew/version.rb b/Library/Homebrew/version.rb index 6c91bec4a4..4c268639d2 100644 --- a/Library/Homebrew/version.rb +++ b/Library/Homebrew/version.rb @@ -163,7 +163,12 @@ class Version end def initialize(val, detected=false) - @version = val.to_s + if val.respond_to?(:to_str) + @version = val.to_str + else + raise TypeError, "Version value must be a string" + end + @detected_from_url = detected end