diff options
author | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-11-10 07:48:56 +0000 |
---|---|---|
committer | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-11-10 07:48:56 +0000 |
commit | fbf59bdbea63efd34ccc144e648467d2f52e7345 (patch) | |
tree | 244f0e7ae112cc7dd135e5d1ac24e6c70ba71b4a /test/rubygems/test_gem_requirement.rb | |
parent | 7a4aad75356496559460041a6c063bdb736c7236 (diff) | |
download | ruby-fbf59bdbea63efd34ccc144e648467d2f52e7345.tar.gz |
Import RubyGems trunk revision 1493.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13862 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/rubygems/test_gem_requirement.rb')
-rw-r--r-- | test/rubygems/test_gem_requirement.rb | 223 |
1 files changed, 223 insertions, 0 deletions
diff --git a/test/rubygems/test_gem_requirement.rb b/test/rubygems/test_gem_requirement.rb new file mode 100644 index 0000000000..c441bd16df --- /dev/null +++ b/test/rubygems/test_gem_requirement.rb @@ -0,0 +1,223 @@ +#-- +# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. +# All rights reserved. +# See LICENSE.txt for permissions. +#++ + +require 'test/unit' +require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require 'rubygems/version' + +class TestGemRequirement < RubyGemTestCase + + def setup + super + + @r1_2 = Gem::Requirement.new '= 1.2' + @r1_3 = Gem::Requirement.new '= 1.3' + end + + def test_initialize + r = Gem::Requirement.new '2' + assert_equal '= 2', r.to_s, 'String' + + r = Gem::Requirement.new %w[2] + assert_equal '= 2', r.to_s, 'Array of Strings' + + r = Gem::Requirement.new Gem::Version.new('2') + assert_equal '= 2', r.to_s, 'Gem::Version' + end + + def test_equals2 + assert_equal @r1_2, @r1_2.dup + assert_equal @r1_2.dup, @r1_2 + + assert_not_equal @r1_3, @r1_2 + assert_not_equal @r1_2, @r1_3 + + assert_not_equal Object.new, @r1_2 + assert_not_equal @r1_2, Object.new + end + + def test_hash + assert_equal @r1_2.hash, @r1_2.dup.hash + assert_equal @r1_2.dup.hash, @r1_2.hash + + assert_not_equal @r1_2.hash, @r1_3.hash + assert_not_equal @r1_3.hash, @r1_2.hash + end + + # We may get some old gems that have requirements in old formats. + # We need to be able to handle those old requirements by normalizing + # them to the latest format. + def test_normalization + require 'yaml' + yamldep = %{--- !ruby/object:Gem::Requirement + nums: + - 1 + - 0 + - 4 + op: ">=" + version: ">= 1.0.4"} + dep = YAML.load(yamldep) + dep.normalize + assert_equal ">= 1.0.4", dep.to_s + end + + def test_parse + assert_equal ['=', Gem::Version.new(1)], @r1_2.parse(' 1') + + assert_equal ['=', Gem::Version.new(1)], @r1_2.parse('= 1') + assert_equal ['>', Gem::Version.new(1)], @r1_2.parse('> 1') + + assert_equal ['=', Gem::Version.new(0)], @r1_2.parse('=') + assert_equal ['>', Gem::Version.new(0)], @r1_2.parse('>') + + assert_equal ['=', Gem::Version.new(1)], @r1_2.parse("=\n1") + assert_equal ['=', Gem::Version.new(0)], @r1_2.parse("=\njunk") + + assert_equal ['=', Gem::Version.new(2)], @r1_2.parse(Gem::Version.new('2')) + end + + def test_parse_illformed + e = assert_raise ArgumentError do + @r1_2.parse(nil) + end + + assert_equal 'Illformed requirement [nil]', e.message + + e = assert_raise ArgumentError do + @r1_2.parse('') + end + + assert_equal 'Illformed requirement [""]', e.message + end + + def test_satisfied_by_eh_bang_equal + r1_2 = Gem::Requirement.new '!= 1.2' + v1_1 = Gem::Version.new '1.1' + v1_2 = Gem::Version.new '1.2' + v1_3 = Gem::Version.new '1.3' + + assert_equal true, r1_2.satisfied_by?(nil) + assert_equal true, r1_2.satisfied_by?(v1_1) + assert_equal false, r1_2.satisfied_by?(v1_2) + assert_equal true, r1_2.satisfied_by?(v1_3) + end + + def test_satisfied_by_eh_blank + r1_2 = Gem::Requirement.new '1.2' + v1_1 = Gem::Version.new '1.1' + v1_2 = Gem::Version.new '1.2' + v1_3 = Gem::Version.new '1.3' + + assert_equal false, r1_2.satisfied_by?(nil) + assert_equal false, r1_2.satisfied_by?(v1_1) + assert_equal true, r1_2.satisfied_by?(v1_2) + assert_equal false, r1_2.satisfied_by?(v1_3) + end + + def test_satisfied_by_eh_equal + r1_2 = @r1_2 + v1_1 = Gem::Version.new '1.1' + v1_2 = Gem::Version.new '1.2' + v1_3 = Gem::Version.new '1.3' + + assert_equal false, r1_2.satisfied_by?(nil) + assert_equal false, r1_2.satisfied_by?(v1_1) + assert_equal true, r1_2.satisfied_by?(v1_2) + assert_equal false, r1_2.satisfied_by?(v1_3) + end + + def test_satisfied_by_eh_gt + r1_2 = Gem::Requirement.new '> 1.2' + v1_1 = Gem::Version.new '1.1' + v1_2 = Gem::Version.new '1.2' + v1_3 = Gem::Version.new '1.3' + + assert_equal false, r1_2.satisfied_by?(v1_1) + assert_equal false, r1_2.satisfied_by?(v1_2) + assert_equal true, r1_2.satisfied_by?(v1_3) + + assert_raise NoMethodError do + assert_equal true, r1_2.satisfied_by?(nil) + end + end + + def test_satisfied_by_eh_gte + r1_2 = Gem::Requirement.new '>= 1.2' + v1_1 = Gem::Version.new '1.1' + v1_2 = Gem::Version.new '1.2' + v1_3 = Gem::Version.new '1.3' + + assert_equal false, r1_2.satisfied_by?(v1_1) + assert_equal true, r1_2.satisfied_by?(v1_2) + assert_equal true, r1_2.satisfied_by?(v1_3) + + assert_raise NoMethodError do + assert_equal true, r1_2.satisfied_by?(nil) + end + end + + def test_satisfied_by_eh_list + r = Gem::Requirement.create(['> 1.1', '< 1.3']) + v1_1 = Gem::Version.new '1.1' + v1_2 = Gem::Version.new '1.2' + v1_3 = Gem::Version.new '1.3' + + assert_equal false, r.satisfied_by?(v1_1) + assert_equal true, r.satisfied_by?(v1_2) + assert_equal false, r.satisfied_by?(v1_3) + + assert_raise NoMethodError do + assert_equal true, r.satisfied_by?(nil) + end + end + + def test_satisfied_by_eh_lt + r1_2 = Gem::Requirement.new '< 1.2' + v1_1 = Gem::Version.new '1.1' + v1_2 = Gem::Version.new '1.2' + v1_3 = Gem::Version.new '1.3' + + assert_equal true, r1_2.satisfied_by?(v1_1) + assert_equal false, r1_2.satisfied_by?(v1_2) + assert_equal false, r1_2.satisfied_by?(v1_3) + + assert_raise NoMethodError do + assert_equal true, r1_2.satisfied_by?(nil) + end + end + + def test_satisfied_by_eh_lte + r1_2 = Gem::Requirement.new '<= 1.2' + v1_1 = Gem::Version.new '1.1' + v1_2 = Gem::Version.new '1.2' + v1_3 = Gem::Version.new '1.3' + + assert_equal true, r1_2.satisfied_by?(v1_1) + assert_equal true, r1_2.satisfied_by?(v1_2) + assert_equal false, r1_2.satisfied_by?(v1_3) + + assert_raise NoMethodError do + assert_equal true, r1_2.satisfied_by?(nil) + end + end + + def test_satisfied_by_eh_tilde_gt + r1_2 = Gem::Requirement.new '~> 1.2' + v1_1 = Gem::Version.new '1.1' + v1_2 = Gem::Version.new '1.2' + v1_3 = Gem::Version.new '1.3' + + assert_equal false, r1_2.satisfied_by?(v1_1) + assert_equal true, r1_2.satisfied_by?(v1_2) + assert_equal true, r1_2.satisfied_by?(v1_3) + + assert_raise NoMethodError do + assert_equal true, r1_2.satisfied_by?(nil) + end + end + +end + |