rubygems-update 1.3.5 → 1.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

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