aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/test/test_versions.rb13
-rw-r--r--Library/Homebrew/version.rb7
2 files changed, 19 insertions, 1 deletions
diff --git a/Library/Homebrew/test/test_versions.rb b/Library/Homebrew/test/test_versions.rb
index 927cd2bac..c4fbb86f3 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 6c91bec4a..4c268639d 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