~ubuntu-branches/ubuntu/trusty/ruby1.9/trusty

« back to all changes in this revision

Viewing changes to test/rubygems/test_gem_requirement.rb

  • Committer: Bazaar Package Importer
  • Author(s): Stephan Hermann
  • Date: 2008-01-24 11:42:29 UTC
  • mfrom: (1.1.9 upstream)
  • Revision ID: james.westby@ubuntu.com-20080124114229-jw2f87rdxlq6gp11
Tags: 1.9.0.0-2ubuntu1
* Merge from debian unstable, remaining changes:
  - Robustify check for target_os, fixing build failure on lpia.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#--
 
2
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
 
3
# All rights reserved.
 
4
# See LICENSE.txt for permissions.
 
5
#++
 
6
 
 
7
require 'test/unit'
 
8
require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities')
 
9
require 'rubygems/version'
 
10
 
 
11
class TestGemRequirement < RubyGemTestCase
 
12
 
 
13
  def setup
 
14
    super
 
15
 
 
16
    @r1_2 = Gem::Requirement.new '= 1.2'
 
17
    @r1_3 = Gem::Requirement.new '= 1.3'
 
18
  end
 
19
 
 
20
  def test_initialize
 
21
    r = Gem::Requirement.new '2'
 
22
    assert_equal '= 2', r.to_s, 'String'
 
23
 
 
24
    r = Gem::Requirement.new %w[2]
 
25
    assert_equal '= 2', r.to_s, 'Array of Strings'
 
26
 
 
27
    r = Gem::Requirement.new Gem::Version.new('2')
 
28
    assert_equal '= 2', r.to_s, 'Gem::Version'
 
29
  end
 
30
 
 
31
  def test_equals2
 
32
    assert_equal @r1_2, @r1_2.dup
 
33
    assert_equal @r1_2.dup, @r1_2
 
34
 
 
35
    assert_not_equal @r1_3, @r1_2
 
36
    assert_not_equal @r1_2, @r1_3
 
37
 
 
38
    assert_not_equal Object.new, @r1_2
 
39
    assert_not_equal @r1_2, Object.new
 
40
  end
 
41
 
 
42
  def test_hash
 
43
    assert_equal @r1_2.hash, @r1_2.dup.hash
 
44
    assert_equal @r1_2.dup.hash, @r1_2.hash
 
45
 
 
46
    assert_not_equal @r1_2.hash, @r1_3.hash
 
47
    assert_not_equal @r1_3.hash, @r1_2.hash
 
48
  end
 
49
 
 
50
  # We may get some old gems that have requirements in old formats.
 
51
  # We need to be able to handle those old requirements by normalizing
 
52
  # them to the latest format.
 
53
  def test_normalization
 
54
    require 'yaml'
 
55
    yamldep = %{--- !ruby/object:Gem::Requirement
 
56
      nums:
 
57
        - 1
 
58
        - 0
 
59
        - 4
 
60
      op: ">="
 
61
      version: ">= 1.0.4"}
 
62
    dep = YAML.load(yamldep)
 
63
    dep.normalize
 
64
    assert_equal ">= 1.0.4", dep.to_s
 
65
  end
 
66
 
 
67
  def test_parse
 
68
    assert_equal ['=', Gem::Version.new(1)], @r1_2.parse('  1')
 
69
 
 
70
    assert_equal ['=', Gem::Version.new(1)], @r1_2.parse('= 1')
 
71
    assert_equal ['>', Gem::Version.new(1)], @r1_2.parse('> 1')
 
72
 
 
73
    assert_equal ['=', Gem::Version.new(0)], @r1_2.parse('=')
 
74
    assert_equal ['>', Gem::Version.new(0)], @r1_2.parse('>')
 
75
 
 
76
    assert_equal ['=', Gem::Version.new(1)], @r1_2.parse("=\n1")
 
77
    assert_equal ['=', Gem::Version.new(0)], @r1_2.parse("=\njunk")
 
78
 
 
79
    assert_equal ['=', Gem::Version.new(2)], @r1_2.parse(Gem::Version.new('2'))
 
80
  end
 
81
 
 
82
  def test_parse_illformed
 
83
    e = assert_raise ArgumentError do
 
84
      @r1_2.parse(nil)
 
85
    end
 
86
 
 
87
    assert_equal 'Illformed requirement [nil]', e.message
 
88
 
 
89
    e = assert_raise ArgumentError do
 
90
      @r1_2.parse('')
 
91
    end
 
92
 
 
93
    assert_equal 'Illformed requirement [""]', e.message
 
94
  end
 
95
 
 
96
  def test_satisfied_by_eh_bang_equal
 
97
    r1_2 = Gem::Requirement.new '!= 1.2'
 
98
    v1_1 = Gem::Version.new '1.1'
 
99
    v1_2 = Gem::Version.new '1.2'
 
100
    v1_3 = Gem::Version.new '1.3'
 
101
 
 
102
    assert_equal true,  r1_2.satisfied_by?(nil)
 
103
    assert_equal true,  r1_2.satisfied_by?(v1_1)
 
104
    assert_equal false, r1_2.satisfied_by?(v1_2)
 
105
    assert_equal true,  r1_2.satisfied_by?(v1_3)
 
106
  end
 
107
 
 
108
  def test_satisfied_by_eh_blank
 
109
    r1_2 = Gem::Requirement.new '1.2'
 
110
    v1_1 = Gem::Version.new '1.1'
 
111
    v1_2 = Gem::Version.new '1.2'
 
112
    v1_3 = Gem::Version.new '1.3'
 
113
 
 
114
    assert_equal false, r1_2.satisfied_by?(nil)
 
115
    assert_equal false, r1_2.satisfied_by?(v1_1)
 
116
    assert_equal true,  r1_2.satisfied_by?(v1_2)
 
117
    assert_equal false, r1_2.satisfied_by?(v1_3)
 
118
  end
 
119
 
 
120
  def test_satisfied_by_eh_equal
 
121
    r1_2 = @r1_2
 
122
    v1_1 = Gem::Version.new '1.1'
 
123
    v1_2 = Gem::Version.new '1.2'
 
124
    v1_3 = Gem::Version.new '1.3'
 
125
 
 
126
    assert_equal false, r1_2.satisfied_by?(nil)
 
127
    assert_equal false, r1_2.satisfied_by?(v1_1)
 
128
    assert_equal true,  r1_2.satisfied_by?(v1_2)
 
129
    assert_equal false, r1_2.satisfied_by?(v1_3)
 
130
  end
 
131
 
 
132
  def test_satisfied_by_eh_gt
 
133
    r1_2 = Gem::Requirement.new '> 1.2'
 
134
    v1_1 = Gem::Version.new '1.1'
 
135
    v1_2 = Gem::Version.new '1.2'
 
136
    v1_3 = Gem::Version.new '1.3'
 
137
 
 
138
    assert_equal false, r1_2.satisfied_by?(v1_1)
 
139
    assert_equal false, r1_2.satisfied_by?(v1_2)
 
140
    assert_equal true,  r1_2.satisfied_by?(v1_3)
 
141
 
 
142
    assert_raise NoMethodError do
 
143
      assert_equal true,  r1_2.satisfied_by?(nil)
 
144
    end
 
145
  end
 
146
 
 
147
  def test_satisfied_by_eh_gte
 
148
    r1_2 = Gem::Requirement.new '>= 1.2'
 
149
    v1_1 = Gem::Version.new '1.1'
 
150
    v1_2 = Gem::Version.new '1.2'
 
151
    v1_3 = Gem::Version.new '1.3'
 
152
 
 
153
    assert_equal false, r1_2.satisfied_by?(v1_1)
 
154
    assert_equal true,  r1_2.satisfied_by?(v1_2)
 
155
    assert_equal true,  r1_2.satisfied_by?(v1_3)
 
156
 
 
157
    assert_raise NoMethodError do
 
158
      assert_equal true,  r1_2.satisfied_by?(nil)
 
159
    end
 
160
  end
 
161
 
 
162
  def test_satisfied_by_eh_list
 
163
    r = Gem::Requirement.create(['> 1.1', '< 1.3'])
 
164
    v1_1 = Gem::Version.new '1.1'
 
165
    v1_2 = Gem::Version.new '1.2'
 
166
    v1_3 = Gem::Version.new '1.3'
 
167
 
 
168
    assert_equal false, r.satisfied_by?(v1_1)
 
169
    assert_equal true,  r.satisfied_by?(v1_2)
 
170
    assert_equal false, r.satisfied_by?(v1_3)
 
171
 
 
172
    assert_raise NoMethodError do
 
173
      assert_equal true,  r.satisfied_by?(nil)
 
174
    end
 
175
  end
 
176
 
 
177
  def test_satisfied_by_eh_lt
 
178
    r1_2 = Gem::Requirement.new '< 1.2'
 
179
    v1_1 = Gem::Version.new '1.1'
 
180
    v1_2 = Gem::Version.new '1.2'
 
181
    v1_3 = Gem::Version.new '1.3'
 
182
 
 
183
    assert_equal true,  r1_2.satisfied_by?(v1_1)
 
184
    assert_equal false, r1_2.satisfied_by?(v1_2)
 
185
    assert_equal false, r1_2.satisfied_by?(v1_3)
 
186
 
 
187
    assert_raise NoMethodError do
 
188
      assert_equal true,  r1_2.satisfied_by?(nil)
 
189
    end
 
190
  end
 
191
 
 
192
  def test_satisfied_by_eh_lte
 
193
    r1_2 = Gem::Requirement.new '<= 1.2'
 
194
    v1_1 = Gem::Version.new '1.1'
 
195
    v1_2 = Gem::Version.new '1.2'
 
196
    v1_3 = Gem::Version.new '1.3'
 
197
 
 
198
    assert_equal true,  r1_2.satisfied_by?(v1_1)
 
199
    assert_equal true,  r1_2.satisfied_by?(v1_2)
 
200
    assert_equal false, r1_2.satisfied_by?(v1_3)
 
201
 
 
202
    assert_raise NoMethodError do
 
203
      assert_equal true,  r1_2.satisfied_by?(nil)
 
204
    end
 
205
  end
 
206
 
 
207
  def test_satisfied_by_eh_tilde_gt
 
208
    r1_2 = Gem::Requirement.new '~> 1.2'
 
209
    v1_1 = Gem::Version.new '1.1'
 
210
    v1_2 = Gem::Version.new '1.2'
 
211
    v1_3 = Gem::Version.new '1.3'
 
212
 
 
213
    assert_equal false, r1_2.satisfied_by?(v1_1)
 
214
    assert_equal true,  r1_2.satisfied_by?(v1_2)
 
215
    assert_equal true,  r1_2.satisfied_by?(v1_3)
 
216
 
 
217
    assert_raise NoMethodError do
 
218
      assert_equal true,  r1_2.satisfied_by?(nil)
 
219
    end
 
220
  end
 
221
 
 
222
end
 
223