rubygems-update 1.3.5 → 1.3.6

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rubygems-update might be problematic. Click here for more details.

Files changed (146) hide show
  1. data.tar.gz.sig +0 -0
  2. data/.autotest +8 -1
  3. data/ChangeLog +164 -0
  4. data/History.txt +52 -1
  5. data/Manifest.txt +8 -8
  6. data/README +3 -2
  7. data/Rakefile +49 -5
  8. data/bin/gem +2 -2
  9. data/bin/update_rubygems +9 -11
  10. data/cruise_config.rb +4 -3
  11. data/hide_lib_for_update/note.txt +5 -0
  12. data/lib/rbconfig/datadir.rb +10 -14
  13. data/lib/rubygems.rb +117 -140
  14. data/lib/rubygems/builder.rb +4 -2
  15. data/lib/rubygems/command.rb +51 -48
  16. data/lib/rubygems/command_manager.rb +2 -0
  17. data/lib/rubygems/commands/dependency_command.rb +10 -5
  18. data/lib/rubygems/commands/environment_command.rb +1 -1
  19. data/lib/rubygems/commands/fetch_command.rb +6 -5
  20. data/lib/rubygems/commands/install_command.rb +1 -0
  21. data/lib/rubygems/commands/mirror_command.rb +8 -8
  22. data/lib/rubygems/commands/owner_command.rb +75 -0
  23. data/lib/rubygems/commands/pristine_command.rb +1 -1
  24. data/lib/rubygems/commands/push_command.rb +45 -0
  25. data/lib/rubygems/commands/query_command.rb +4 -1
  26. data/lib/rubygems/commands/rdoc_command.rb +24 -9
  27. data/lib/rubygems/commands/server_command.rb +6 -0
  28. data/lib/rubygems/commands/setup_command.rb +14 -4
  29. data/lib/rubygems/commands/unpack_command.rb +2 -2
  30. data/lib/rubygems/commands/update_command.rb +2 -2
  31. data/lib/rubygems/commands/which_command.rb +7 -9
  32. data/lib/rubygems/config_file.rb +100 -26
  33. data/lib/rubygems/defaults.rb +1 -1
  34. data/lib/rubygems/dependency.rb +133 -75
  35. data/lib/rubygems/dependency_installer.rb +28 -10
  36. data/lib/rubygems/dependency_list.rb +41 -12
  37. data/lib/rubygems/doc_manager.rb +7 -0
  38. data/lib/rubygems/format.rb +16 -20
  39. data/lib/rubygems/gem_openssl.rb +1 -1
  40. data/lib/rubygems/gem_path_searcher.rb +10 -12
  41. data/lib/rubygems/gemcutter_utilities.rb +49 -0
  42. data/lib/rubygems/indexer.rb +2 -2
  43. data/lib/rubygems/install_update_options.rb +1 -9
  44. data/lib/rubygems/installer.rb +35 -76
  45. data/lib/rubygems/local_remote_options.rb +1 -2
  46. data/lib/rubygems/package.rb +0 -1
  47. data/lib/rubygems/package/tar_input.rb +3 -1
  48. data/lib/rubygems/package_task.rb +16 -11
  49. data/lib/rubygems/remote_fetcher.rb +22 -8
  50. data/lib/rubygems/requirement.rb +78 -100
  51. data/lib/rubygems/server.rb +41 -10
  52. data/lib/rubygems/source_index.rb +5 -5
  53. data/lib/rubygems/spec_fetcher.rb +2 -2
  54. data/lib/rubygems/specification.rb +66 -16
  55. data/lib/rubygems/test_utilities.rb +33 -4
  56. data/lib/rubygems/uninstaller.rb +3 -3
  57. data/lib/rubygems/user_interaction.rb +45 -0
  58. data/lib/rubygems/validator.rb +6 -7
  59. data/lib/rubygems/version.rb +206 -149
  60. data/lib/rubygems/version_option.rb +16 -0
  61. data/test/fake_certlib/openssl.rb +1 -1
  62. data/test/functional.rb +0 -7
  63. data/test/gem_installer_test_case.rb +4 -4
  64. data/test/gem_package_tar_test_case.rb +1 -1
  65. data/test/gemutilities.rb +35 -31
  66. data/test/insure_session.rb +0 -8
  67. data/test/mockgemui.rb +0 -8
  68. data/test/simple_gem.rb +2 -8
  69. data/test/test_config.rb +3 -10
  70. data/test/test_gem.rb +9 -14
  71. data/test/test_gem_builder.rb +1 -7
  72. data/test/test_gem_command.rb +1 -8
  73. data/test/test_gem_command_manager.rb +1 -7
  74. data/test/test_gem_commands_build_command.rb +4 -4
  75. data/test/test_gem_commands_cert_command.rb +1 -2
  76. data/test/test_gem_commands_check_command.rb +1 -7
  77. data/test/test_gem_commands_contents_command.rb +1 -1
  78. data/test/test_gem_commands_dependency_command.rb +17 -31
  79. data/test/test_gem_commands_environment_command.rb +1 -1
  80. data/test/test_gem_commands_fetch_command.rb +14 -12
  81. data/test/test_gem_commands_generate_index_command.rb +1 -1
  82. data/test/test_gem_commands_install_command.rb +22 -20
  83. data/test/test_gem_commands_list_command.rb +1 -1
  84. data/test/test_gem_commands_lock_command.rb +1 -1
  85. data/test/test_gem_commands_mirror_command.rb +5 -5
  86. data/test/test_gem_commands_outdated_command.rb +3 -5
  87. data/test/test_gem_commands_owner_command.rb +105 -0
  88. data/test/test_gem_commands_pristine_command.rb +2 -2
  89. data/test/test_gem_commands_push_command.rb +61 -0
  90. data/test/test_gem_commands_query_command.rb +23 -56
  91. data/test/test_gem_commands_server_command.rb +1 -1
  92. data/test/test_gem_commands_sources_command.rb +1 -70
  93. data/test/test_gem_commands_specification_command.rb +3 -4
  94. data/test/test_gem_commands_stale_command.rb +1 -1
  95. data/test/test_gem_commands_uninstall_command.rb +3 -4
  96. data/test/test_gem_commands_unpack_command.rb +1 -1
  97. data/test/test_gem_commands_update_command.rb +13 -13
  98. data/test/test_gem_commands_which_command.rb +66 -0
  99. data/test/test_gem_config_file.rb +13 -7
  100. data/test/test_gem_dependency.rb +82 -134
  101. data/test/test_gem_dependency_installer.rb +55 -30
  102. data/test/test_gem_dependency_list.rb +28 -7
  103. data/test/test_gem_doc_manager.rb +1 -7
  104. data/test/test_gem_ext_configure_builder.rb +2 -2
  105. data/test/test_gem_ext_ext_conf_builder.rb +1 -1
  106. data/test/test_gem_ext_rake_builder.rb +1 -1
  107. data/test/test_gem_format.rb +14 -11
  108. data/test/test_gem_gem_path_searcher.rb +12 -1
  109. data/test/test_gem_gem_runner.rb +1 -1
  110. data/test/test_gem_gemcutter_utilities.rb +103 -0
  111. data/test/test_gem_indexer.rb +44 -51
  112. data/test/test_gem_install_update_options.rb +1 -7
  113. data/test/test_gem_installer.rb +22 -82
  114. data/test/test_gem_local_remote_options.rb +1 -1
  115. data/test/test_gem_package_tar_header.rb +1 -8
  116. data/test/test_gem_package_tar_input.rb +1 -8
  117. data/test/test_gem_package_tar_output.rb +1 -8
  118. data/test/test_gem_package_tar_reader.rb +1 -8
  119. data/test/test_gem_package_tar_reader_entry.rb +1 -8
  120. data/test/test_gem_package_tar_writer.rb +1 -8
  121. data/test/test_gem_package_task.rb +1 -25
  122. data/test/test_gem_platform.rb +4 -4
  123. data/test/test_gem_remote_fetcher.rb +31 -21
  124. data/test/test_gem_requirement.rb +210 -140
  125. data/test/test_gem_server.rb +36 -1
  126. data/test/test_gem_source_index.rb +7 -13
  127. data/test/test_gem_spec_fetcher.rb +17 -47
  128. data/test/test_gem_specification.rb +7 -20
  129. data/test/test_gem_stream_ui.rb +21 -1
  130. data/test/test_gem_uninstaller.rb +1 -2
  131. data/test/test_gem_validator.rb +2 -8
  132. data/test/test_gem_version.rb +110 -254
  133. data/test/test_gem_version_option.rb +1 -1
  134. data/test/test_kernel.rb +1 -7
  135. data/util/CL2notes +1 -1
  136. data/util/gem_prelude.rb.template +64 -41
  137. metadata +33 -71
  138. metadata.gz.sig +0 -0
  139. data/lib/rubygems/digest/digest_adapter.rb +0 -49
  140. data/lib/rubygems/digest/md5.rb +0 -23
  141. data/lib/rubygems/digest/sha1.rb +0 -22
  142. data/lib/rubygems/digest/sha2.rb +0 -22
  143. data/lib/rubygems/timer.rb +0 -28
  144. data/test/test_gem_digest.rb +0 -46
  145. data/test/test_gem_source_info_cache.rb +0 -447
  146. data/test/test_gem_source_info_cache_entry.rb +0 -78
@@ -1,222 +1,292 @@
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 File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities')
8
- require 'rubygems/version'
1
+ require File.expand_path('../gemutilities', __FILE__)
2
+ require "rubygems/requirement"
9
3
 
10
4
  class TestGemRequirement < RubyGemTestCase
11
5
 
12
- def setup
13
- super
14
-
15
- @r1_2 = Gem::Requirement.new '= 1.2'
16
- @r1_3 = Gem::Requirement.new '= 1.3'
17
- end
18
-
19
- def test_initialize
20
- r = Gem::Requirement.new '2'
21
- assert_equal '= 2', r.to_s, 'String'
22
-
23
- r = Gem::Requirement.new %w[2]
24
- assert_equal '= 2', r.to_s, 'Array of Strings'
25
-
26
- r = Gem::Requirement.new Gem::Version.new('2')
27
- assert_equal '= 2', r.to_s, 'Gem::Version'
28
- end
29
-
30
6
  def test_equals2
31
- assert_equal @r1_2, @r1_2.dup
32
- assert_equal @r1_2.dup, @r1_2
7
+ r = req "= 1.2"
8
+ assert_equal r, r.dup
9
+ assert_equal r.dup, r
33
10
 
34
- refute_equal @r1_3, @r1_2
35
- refute_equal @r1_2, @r1_3
11
+ refute_requirement_equal "= 1.2", "= 1.3"
12
+ refute_requirement_equal "= 1.3", "= 1.2"
36
13
 
37
- refute_equal Object.new, @r1_2
38
- refute_equal @r1_2, Object.new
14
+ refute_equal Object.new, req("= 1.2")
15
+ refute_equal req("= 1.2"), Object.new
39
16
  end
40
17
 
41
- def test_hash
42
- assert_equal @r1_2.hash, @r1_2.dup.hash
43
- assert_equal @r1_2.dup.hash, @r1_2.hash
44
-
45
- refute_equal @r1_2.hash, @r1_3.hash
46
- refute_equal @r1_3.hash, @r1_2.hash
18
+ def test_initialize
19
+ assert_requirement_equal "= 2", "2"
20
+ assert_requirement_equal "= 2", ["2"]
21
+ assert_requirement_equal "= 2", v(2)
47
22
  end
48
23
 
49
- # We may get some old gems that have requirements in old formats.
50
- # We need to be able to handle those old requirements by normalizing
51
- # them to the latest format.
52
- def test_normalization
53
- require 'yaml'
54
- yamldep = %{--- !ruby/object:Gem::Requirement
55
- nums:
56
- - 1
57
- - 0
58
- - 4
59
- op: ">="
60
- version: ">= 1.0.4"}
61
- dep = YAML.load(yamldep)
62
- dep.normalize
63
- assert_equal ">= 1.0.4", dep.to_s
24
+ def test_class_available_as_gem_version_requirement
25
+ assert_same Gem::Requirement, Gem::Version::Requirement,
26
+ "Gem::Version::Requirement is aliased for old YAML compatibility."
64
27
  end
65
28
 
66
29
  def test_parse
67
- assert_equal ['=', Gem::Version.new(1)], @r1_2.parse(' 1')
68
-
69
- assert_equal ['=', Gem::Version.new(1)], @r1_2.parse('= 1')
70
- assert_equal ['>', Gem::Version.new(1)], @r1_2.parse('> 1')
30
+ assert_equal ['=', Gem::Version.new(1)], Gem::Requirement.parse(' 1')
31
+ assert_equal ['=', Gem::Version.new(1)], Gem::Requirement.parse('= 1')
32
+ assert_equal ['>', Gem::Version.new(1)], Gem::Requirement.parse('> 1')
33
+ assert_equal ['=', Gem::Version.new(1)], Gem::Requirement.parse("=\n1")
71
34
 
72
- assert_equal ['=', Gem::Version.new(0)], @r1_2.parse('=')
73
- assert_equal ['>', Gem::Version.new(0)], @r1_2.parse('>')
74
-
75
- assert_equal ['=', Gem::Version.new(1)], @r1_2.parse("=\n1")
76
- assert_equal ['=', Gem::Version.new(0)], @r1_2.parse("=\njunk")
77
-
78
- assert_equal ['=', Gem::Version.new(2)], @r1_2.parse(Gem::Version.new('2'))
35
+ assert_equal ['=', Gem::Version.new(2)],
36
+ Gem::Requirement.parse(Gem::Version.new('2'))
79
37
  end
80
38
 
81
- def test_parse_illformed
39
+ def test_parse_bad
82
40
  e = assert_raises ArgumentError do
83
- @r1_2.parse(nil)
41
+ Gem::Requirement.parse nil
84
42
  end
85
43
 
86
44
  assert_equal 'Illformed requirement [nil]', e.message
87
45
 
88
46
  e = assert_raises ArgumentError do
89
- @r1_2.parse('')
47
+ Gem::Requirement.parse ""
90
48
  end
91
49
 
92
50
  assert_equal 'Illformed requirement [""]', e.message
93
51
  end
94
52
 
53
+ def test_prerelease_eh
54
+ r = req '= 1'
55
+
56
+ refute r.prerelease?
57
+
58
+ r = req '= 1.a'
59
+
60
+ assert r.prerelease?
61
+
62
+ r = req '> 1.a', '< 2'
63
+
64
+ assert r.prerelease?
65
+ end
66
+
95
67
  def test_satisfied_by_eh_bang_equal
96
- r1_2 = Gem::Requirement.new '!= 1.2'
97
- v1_1 = Gem::Version.new '1.1'
98
- v1_2 = Gem::Version.new '1.2'
99
- v1_3 = Gem::Version.new '1.3'
68
+ r = req '!= 1.2'
100
69
 
101
- assert_equal true, r1_2.satisfied_by?(nil)
102
- assert_equal true, r1_2.satisfied_by?(v1_1)
103
- assert_equal false, r1_2.satisfied_by?(v1_2)
104
- assert_equal true, r1_2.satisfied_by?(v1_3)
70
+ assert_satisfied_by nil, r
71
+ assert_satisfied_by "1.1", r
72
+ refute_satisfied_by "1.2", r
73
+ assert_satisfied_by "1.3", r
105
74
  end
106
75
 
107
76
  def test_satisfied_by_eh_blank
108
- r1_2 = Gem::Requirement.new '1.2'
109
- v1_1 = Gem::Version.new '1.1'
110
- v1_2 = Gem::Version.new '1.2'
111
- v1_3 = Gem::Version.new '1.3'
77
+ r = req "1.2"
112
78
 
113
- assert_equal false, r1_2.satisfied_by?(nil)
114
- assert_equal false, r1_2.satisfied_by?(v1_1)
115
- assert_equal true, r1_2.satisfied_by?(v1_2)
116
- assert_equal false, r1_2.satisfied_by?(v1_3)
79
+ refute_satisfied_by nil, r
80
+ refute_satisfied_by "1.1", r
81
+ assert_satisfied_by "1.2", r
82
+ refute_satisfied_by "1.3", r
117
83
  end
118
84
 
119
85
  def test_satisfied_by_eh_equal
120
- r1_2 = @r1_2
121
- v1_1 = Gem::Version.new '1.1'
122
- v1_2 = Gem::Version.new '1.2'
123
- v1_3 = Gem::Version.new '1.3'
86
+ r = req "= 1.2"
124
87
 
125
- assert_equal false, r1_2.satisfied_by?(nil)
126
- assert_equal false, r1_2.satisfied_by?(v1_1)
127
- assert_equal true, r1_2.satisfied_by?(v1_2)
128
- assert_equal false, r1_2.satisfied_by?(v1_3)
88
+ refute_satisfied_by nil, r
89
+ refute_satisfied_by "1.1", r
90
+ assert_satisfied_by "1.2", r
91
+ refute_satisfied_by "1.3", r
129
92
  end
130
93
 
131
94
  def test_satisfied_by_eh_gt
132
- r1_2 = Gem::Requirement.new '> 1.2'
133
- v1_1 = Gem::Version.new '1.1'
134
- v1_2 = Gem::Version.new '1.2'
135
- v1_3 = Gem::Version.new '1.3'
95
+ r = req "> 1.2"
136
96
 
137
- assert_equal false, r1_2.satisfied_by?(v1_1)
138
- assert_equal false, r1_2.satisfied_by?(v1_2)
139
- assert_equal true, r1_2.satisfied_by?(v1_3)
97
+ refute_satisfied_by "1.1", r
98
+ refute_satisfied_by "1.2", r
99
+ assert_satisfied_by "1.3", r
140
100
 
141
101
  assert_raises NoMethodError do
142
- assert_equal true, r1_2.satisfied_by?(nil)
102
+ r.satisfied_by? nil
143
103
  end
144
104
  end
145
105
 
146
106
  def test_satisfied_by_eh_gte
147
- r1_2 = Gem::Requirement.new '>= 1.2'
148
- v1_1 = Gem::Version.new '1.1'
149
- v1_2 = Gem::Version.new '1.2'
150
- v1_3 = Gem::Version.new '1.3'
107
+ r = req ">= 1.2"
151
108
 
152
- assert_equal false, r1_2.satisfied_by?(v1_1)
153
- assert_equal true, r1_2.satisfied_by?(v1_2)
154
- assert_equal true, r1_2.satisfied_by?(v1_3)
109
+ refute_satisfied_by "1.1", r
110
+ assert_satisfied_by "1.2", r
111
+ assert_satisfied_by "1.3", r
155
112
 
156
113
  assert_raises NoMethodError do
157
- assert_equal true, r1_2.satisfied_by?(nil)
114
+ r.satisfied_by? nil
158
115
  end
159
116
  end
160
117
 
161
118
  def test_satisfied_by_eh_list
162
- r = Gem::Requirement.create(['> 1.1', '< 1.3'])
163
- v1_1 = Gem::Version.new '1.1'
164
- v1_2 = Gem::Version.new '1.2'
165
- v1_3 = Gem::Version.new '1.3'
119
+ r = req "> 1.1", "< 1.3"
166
120
 
167
- assert_equal false, r.satisfied_by?(v1_1)
168
- assert_equal true, r.satisfied_by?(v1_2)
169
- assert_equal false, r.satisfied_by?(v1_3)
121
+ refute_satisfied_by "1.1", r
122
+ assert_satisfied_by "1.2", r
123
+ refute_satisfied_by "1.3", r
170
124
 
171
125
  assert_raises NoMethodError do
172
- assert_equal true, r.satisfied_by?(nil)
126
+ r.satisfied_by? nil
173
127
  end
174
128
  end
175
129
 
176
130
  def test_satisfied_by_eh_lt
177
- r1_2 = Gem::Requirement.new '< 1.2'
178
- v1_1 = Gem::Version.new '1.1'
179
- v1_2 = Gem::Version.new '1.2'
180
- v1_3 = Gem::Version.new '1.3'
131
+ r = req "< 1.2"
181
132
 
182
- assert_equal true, r1_2.satisfied_by?(v1_1)
183
- assert_equal false, r1_2.satisfied_by?(v1_2)
184
- assert_equal false, r1_2.satisfied_by?(v1_3)
133
+ assert_satisfied_by "1.1", r
134
+ refute_satisfied_by "1.2", r
135
+ refute_satisfied_by "1.3", r
185
136
 
186
137
  assert_raises NoMethodError do
187
- assert_equal true, r1_2.satisfied_by?(nil)
138
+ r.satisfied_by? nil
188
139
  end
189
140
  end
190
141
 
191
142
  def test_satisfied_by_eh_lte
192
- r1_2 = Gem::Requirement.new '<= 1.2'
193
- v1_1 = Gem::Version.new '1.1'
194
- v1_2 = Gem::Version.new '1.2'
195
- v1_3 = Gem::Version.new '1.3'
143
+ r = req "<= 1.2"
196
144
 
197
- assert_equal true, r1_2.satisfied_by?(v1_1)
198
- assert_equal true, r1_2.satisfied_by?(v1_2)
199
- assert_equal false, r1_2.satisfied_by?(v1_3)
145
+ assert_satisfied_by "1.1", r
146
+ assert_satisfied_by "1.2", r
147
+ refute_satisfied_by "1.3", r
200
148
 
201
149
  assert_raises NoMethodError do
202
- assert_equal true, r1_2.satisfied_by?(nil)
150
+ r.satisfied_by? nil
203
151
  end
204
152
  end
205
153
 
206
154
  def test_satisfied_by_eh_tilde_gt
207
- r1_2 = Gem::Requirement.new '~> 1.2'
208
- v1_1 = Gem::Version.new '1.1'
209
- v1_2 = Gem::Version.new '1.2'
210
- v1_3 = Gem::Version.new '1.3'
155
+ r = req "~> 1.2"
211
156
 
212
- assert_equal false, r1_2.satisfied_by?(v1_1)
213
- assert_equal true, r1_2.satisfied_by?(v1_2)
214
- assert_equal true, r1_2.satisfied_by?(v1_3)
157
+ refute_satisfied_by "1.1", r
158
+ assert_satisfied_by "1.2", r
159
+ assert_satisfied_by "1.3", r
215
160
 
216
161
  assert_raises NoMethodError do
217
- assert_equal true, r1_2.satisfied_by?(nil)
162
+ r.satisfied_by? nil
218
163
  end
219
164
  end
220
165
 
221
- end
166
+ def test_satisfied_by_eh_good
167
+ assert_satisfied_by "0.2.33", "= 0.2.33"
168
+ assert_satisfied_by "0.2.34", "> 0.2.33"
169
+ assert_satisfied_by "1.0", "= 1.0"
170
+ assert_satisfied_by "1.0", "1.0"
171
+ assert_satisfied_by "1.8.2", "> 1.8.0"
172
+ assert_satisfied_by "1.112", "> 1.111"
173
+ assert_satisfied_by "0.2", "> 0.0.0"
174
+ assert_satisfied_by "0.0.0.0.0.2", "> 0.0.0"
175
+ assert_satisfied_by "0.0.1.0", "> 0.0.0.1"
176
+ assert_satisfied_by "10.3.2", "> 9.3.2"
177
+ assert_satisfied_by "1.0.0.0", "= 1.0"
178
+ assert_satisfied_by "10.3.2", "!= 9.3.4"
179
+ assert_satisfied_by "10.3.2", "> 9.3.2"
180
+ assert_satisfied_by "10.3.2", "> 9.3.2"
181
+ assert_satisfied_by " 9.3.2", ">= 9.3.2"
182
+ assert_satisfied_by "9.3.2 ", ">= 9.3.2"
183
+ assert_satisfied_by "", "= 0"
184
+ assert_satisfied_by "", "< 0.1"
185
+ assert_satisfied_by " ", "< 0.1 "
186
+ assert_satisfied_by "", " < 0.1"
187
+ assert_satisfied_by " ", "> 0.a "
188
+ assert_satisfied_by "", " > 0.a"
189
+ assert_satisfied_by "3.1", "< 3.2.rc1"
190
+ assert_satisfied_by "3.2.0", "> 3.2.0.rc1"
191
+ assert_satisfied_by "3.2.0.rc2", "> 3.2.0.rc1"
192
+ assert_satisfied_by "3.0.rc2", "< 3.0"
193
+ assert_satisfied_by "3.0.rc2", "< 3.0.0"
194
+ assert_satisfied_by "3.0.rc2", "< 3.0.1"
195
+ end
222
196
 
197
+ def test_illformed_requirements
198
+ [ ">>> 1.3.5", "> blah" ].each do |rq|
199
+ assert_raises ArgumentError, "req [#{rq}] should fail" do
200
+ Gem::Requirement.new rq
201
+ end
202
+ end
203
+ end
204
+
205
+ def test_satisfied_by_eh_boxed
206
+ refute_satisfied_by "1.3", "~> 1.4"
207
+ assert_satisfied_by "1.4", "~> 1.4"
208
+ assert_satisfied_by "1.5", "~> 1.4"
209
+ refute_satisfied_by "2.0", "~> 1.4"
210
+
211
+ refute_satisfied_by "1.3", "~> 1.4.4"
212
+ refute_satisfied_by "1.4", "~> 1.4.4"
213
+ assert_satisfied_by "1.4.4", "~> 1.4.4"
214
+ assert_satisfied_by "1.4.5", "~> 1.4.4"
215
+ refute_satisfied_by "1.5", "~> 1.4.4"
216
+ refute_satisfied_by "2.0", "~> 1.4.4"
217
+
218
+ refute_satisfied_by "1.1.pre", "~> 1.0.0"
219
+ assert_satisfied_by "1.1.pre", "~> 1.1"
220
+ refute_satisfied_by "2.0.a", "~> 1.0"
221
+ assert_satisfied_by "2.0.a", "~> 2.0"
222
+ end
223
+
224
+ def test_satisfied_by_eh_multiple
225
+ req = [">= 1.4", "<= 1.6", "!= 1.5"]
226
+
227
+ refute_satisfied_by "1.3", req
228
+ assert_satisfied_by "1.4", req
229
+ refute_satisfied_by "1.5", req
230
+ assert_satisfied_by "1.6", req
231
+ refute_satisfied_by "1.7", req
232
+ refute_satisfied_by "2.0", req
233
+ end
234
+
235
+ def test_satisfied_by_boxed
236
+ refute_satisfied_by "1.3", "~> 1.4"
237
+ assert_satisfied_by "1.4", "~> 1.4"
238
+ assert_satisfied_by "1.5", "~> 1.4"
239
+ refute_satisfied_by "2.0", "~> 1.4"
240
+
241
+ refute_satisfied_by "1.3", "~> 1.4.4"
242
+ refute_satisfied_by "1.4", "~> 1.4.4"
243
+ assert_satisfied_by "1.4.4", "~> 1.4.4"
244
+ assert_satisfied_by "1.4.5", "~> 1.4.4"
245
+ refute_satisfied_by "1.5", "~> 1.4.4"
246
+ refute_satisfied_by "2.0", "~> 1.4.4"
247
+ end
248
+
249
+ def test_bad
250
+ refute_satisfied_by "", "> 0.1"
251
+ refute_satisfied_by "1.2.3", "!= 1.2.3"
252
+ refute_satisfied_by "1.2.003.0.0", "!= 1.02.3"
253
+ refute_satisfied_by "4.5.6", "< 1.2.3"
254
+ refute_satisfied_by "1.0", "> 1.1"
255
+ refute_satisfied_by "", "= 0.1"
256
+ refute_satisfied_by "1.1.1", "> 1.1.1"
257
+ refute_satisfied_by "1.2", "= 1.1"
258
+ refute_satisfied_by "1.40", "= 1.1"
259
+ refute_satisfied_by "1.3", "= 1.40"
260
+ refute_satisfied_by "9.3.3", "<= 9.3.2"
261
+ refute_satisfied_by "9.3.1", ">= 9.3.2"
262
+ refute_satisfied_by "9.3.03", "<= 9.3.2"
263
+ refute_satisfied_by "1.0.0.1", "= 1.0"
264
+ end
265
+
266
+ # Assert that two requirements are equal. Handles Gem::Requirements,
267
+ # strings, arrays, numbers, and versions.
268
+
269
+ def assert_requirement_equal expected, actual
270
+ assert_equal req(expected), req(actual)
271
+ end
272
+
273
+ # Assert that +version+ satisfies +requirement+.
274
+
275
+ def assert_satisfied_by version, requirement
276
+ assert req(requirement).satisfied_by?(v(version)),
277
+ "#{requirement} is satisfied by #{version}"
278
+ end
279
+
280
+ # Refute the assumption that two requirements are equal.
281
+
282
+ def refute_requirement_equal unexpected, actual
283
+ refute_equal req(unexpected), req(actual)
284
+ end
285
+
286
+ # Refute the assumption that +version+ satisfies +requirement+.
287
+
288
+ def refute_satisfied_by version, requirement
289
+ refute req(requirement).satisfied_by?(v(version)),
290
+ "#{requirement} is not satisfied by #{version}"
291
+ end
292
+ end
@@ -1,4 +1,4 @@
1
- require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities')
1
+ require File.expand_path('../gemutilities', __FILE__)
2
2
  require 'rubygems/server'
3
3
  require 'stringio'
4
4
 
@@ -78,6 +78,26 @@ class TestGemServer < RubyGemTestCase
78
78
  Marshal.load(Gem.gunzip(@res.body))
79
79
  end
80
80
 
81
+ def test_listen
82
+ util_listen
83
+
84
+ out, err = capture_io do
85
+ @server.listen
86
+ end
87
+
88
+ assert_equal 1, @server.server.listeners.length
89
+ end
90
+
91
+ def test_listen_addresses
92
+ util_listen
93
+
94
+ out, err = capture_io do
95
+ @server.listen %w[a b]
96
+ end
97
+
98
+ assert_equal 2, @server.server.listeners.length
99
+ end
100
+
81
101
  def test_quick_a_1_gemspec_rz
82
102
  data = StringIO.new "GET /quick/a-1.gemspec.rz HTTP/1.0\r\n\r\n"
83
103
  @req.parse data
@@ -306,5 +326,20 @@ class TestGemServer < RubyGemTestCase
306
326
  assert_equal si, YAML.load(Gem.inflate(@res.body))
307
327
  end
308
328
 
329
+ def util_listen
330
+ webrick = Object.new
331
+ webrick.instance_variable_set :@listeners, []
332
+ def webrick.listeners() @listeners end
333
+ def webrick.listen(host, port)
334
+ socket = Object.new
335
+ socket.instance_variable_set :@host, host
336
+ socket.instance_variable_set :@port, port
337
+ def socket.addr() [nil, @port, @host] end
338
+ @listeners << socket
339
+ end
340
+
341
+ @server.instance_variable_set :@server, webrick
342
+ end
343
+
309
344
  end
310
345