rubygems-update 2.4.8 → 2.5.0

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 (125) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/CODE_OF_CONDUCT.md +40 -0
  5. data/CVE-2015-3900.txt +40 -0
  6. data/History.txt +173 -2
  7. data/Manifest.txt +14 -1
  8. data/Rakefile +36 -1
  9. data/lib/rubygems.rb +32 -14
  10. data/lib/rubygems/basic_specification.rb +31 -9
  11. data/lib/rubygems/commands/dependency_command.rb +25 -15
  12. data/lib/rubygems/commands/environment_command.rb +2 -0
  13. data/lib/rubygems/commands/help_command.rb +0 -10
  14. data/lib/rubygems/commands/install_command.rb +1 -1
  15. data/lib/rubygems/commands/list_command.rb +1 -1
  16. data/lib/rubygems/commands/pristine_command.rb +11 -1
  17. data/lib/rubygems/commands/query_command.rb +1 -1
  18. data/lib/rubygems/commands/sources_command.rb +1 -1
  19. data/lib/rubygems/commands/update_command.rb +2 -2
  20. data/lib/rubygems/config_file.rb +4 -4
  21. data/lib/rubygems/core_ext/kernel_require.rb +2 -2
  22. data/lib/rubygems/dependency.rb +9 -6
  23. data/lib/rubygems/dependency_list.rb +3 -0
  24. data/lib/rubygems/ext/builder.rb +2 -0
  25. data/lib/rubygems/ext/ext_conf_builder.rb +6 -1
  26. data/lib/rubygems/indexer.rb +26 -91
  27. data/lib/rubygems/installer.rb +58 -26
  28. data/lib/rubygems/installer_test_case.rb +2 -2
  29. data/lib/rubygems/package.rb +18 -6
  30. data/lib/rubygems/package/old.rb +2 -2
  31. data/lib/rubygems/package/tar_reader/entry.rb +7 -1
  32. data/lib/rubygems/package/tar_test_case.rb +12 -3
  33. data/lib/rubygems/package/tar_writer.rb +19 -1
  34. data/lib/rubygems/platform.rb +3 -2
  35. data/lib/rubygems/rdoc.rb +1 -2
  36. data/lib/rubygems/remote_fetcher.rb +25 -6
  37. data/lib/rubygems/request/connection_pools.rb +8 -4
  38. data/lib/rubygems/request_set.rb +3 -4
  39. data/lib/rubygems/request_set/gem_dependency_api.rb +2 -2
  40. data/lib/rubygems/request_set/lockfile.rb +1 -1
  41. data/lib/rubygems/request_set/lockfile/parser.rb +54 -43
  42. data/lib/rubygems/request_set/lockfile/tokenizer.rb +16 -13
  43. data/lib/rubygems/resolver.rb +47 -242
  44. data/lib/rubygems/resolver/activation_request.rb +2 -1
  45. data/lib/rubygems/resolver/conflict.rb +0 -1
  46. data/lib/rubygems/resolver/dependency_request.rb +4 -1
  47. data/lib/rubygems/resolver/git_specification.rb +1 -2
  48. data/lib/rubygems/resolver/molinillo.rb +1 -0
  49. data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +5 -0
  50. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +266 -0
  51. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +69 -0
  52. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +3 -0
  53. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +99 -0
  54. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +63 -0
  55. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +430 -0
  56. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +43 -0
  57. data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +51 -0
  58. data/lib/rubygems/resolver/specification.rb +1 -1
  59. data/lib/rubygems/specification.rb +256 -86
  60. data/lib/rubygems/stub_specification.rb +37 -29
  61. data/lib/rubygems/test_case.rb +65 -28
  62. data/lib/rubygems/test_utilities.rb +18 -18
  63. data/lib/rubygems/text.rb +0 -2
  64. data/lib/rubygems/uninstaller.rb +1 -1
  65. data/lib/rubygems/util.rb +4 -4
  66. data/lib/rubygems/util/licenses.rb +309 -0
  67. data/lib/rubygems/util/list.rb +9 -21
  68. data/lib/rubygems/version.rb +24 -14
  69. data/test/rubygems/simple_gem.rb +1 -1
  70. data/test/rubygems/test_config.rb +10 -1
  71. data/test/rubygems/test_gem.rb +58 -11
  72. data/test/rubygems/test_gem_available_set.rb +2 -1
  73. data/test/rubygems/test_gem_commands_cleanup_command.rb +6 -5
  74. data/test/rubygems/test_gem_commands_dependency_command.rb +9 -1
  75. data/test/rubygems/test_gem_commands_install_command.rb +17 -28
  76. data/test/rubygems/test_gem_commands_mirror.rb +0 -13
  77. data/test/rubygems/test_gem_commands_outdated_command.rb +2 -3
  78. data/test/rubygems/test_gem_commands_pristine_command.rb +33 -5
  79. data/test/rubygems/test_gem_commands_query_command.rb +123 -158
  80. data/test/rubygems/test_gem_commands_server_command.rb +2 -2
  81. data/test/rubygems/test_gem_commands_specification_command.rb +4 -4
  82. data/test/rubygems/test_gem_commands_stale_command.rb +2 -0
  83. data/test/rubygems/test_gem_commands_uninstall_command.rb +5 -4
  84. data/test/rubygems/test_gem_commands_unpack_command.rb +4 -6
  85. data/test/rubygems/test_gem_commands_update_command.rb +22 -52
  86. data/test/rubygems/test_gem_commands_which_command.rb +1 -0
  87. data/test/rubygems/test_gem_config_file.rb +1 -1
  88. data/test/rubygems/test_gem_dependency.rb +7 -3
  89. data/test/rubygems/test_gem_dependency_installer.rb +5 -5
  90. data/test/rubygems/test_gem_doctor.rb +1 -1
  91. data/test/rubygems/test_gem_ext_builder.rb +2 -0
  92. data/test/rubygems/test_gem_ext_configure_builder.rb +8 -4
  93. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +25 -21
  94. data/test/rubygems/test_gem_indexer.rb +4 -4
  95. data/test/rubygems/test_gem_install_update_options.rb +2 -2
  96. data/test/rubygems/test_gem_installer.rb +32 -26
  97. data/test/rubygems/test_gem_package.rb +46 -1
  98. data/test/rubygems/test_gem_package_tar_reader_entry.rb +8 -1
  99. data/test/rubygems/test_gem_package_tar_writer.rb +10 -1
  100. data/test/rubygems/test_gem_package_task.rb +5 -2
  101. data/test/rubygems/test_gem_platform.rb +11 -0
  102. data/test/rubygems/test_gem_remote_fetcher.rb +64 -3
  103. data/test/rubygems/test_gem_request.rb +1 -1
  104. data/test/rubygems/test_gem_request_connection_pools.rb +10 -1
  105. data/test/rubygems/test_gem_request_set.rb +5 -8
  106. data/test/rubygems/test_gem_request_set_lockfile.rb +2 -4
  107. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +1 -1
  108. data/test/rubygems/test_gem_resolver.rb +12 -31
  109. data/test/rubygems/test_gem_resolver_git_specification.rb +1 -0
  110. data/test/rubygems/test_gem_resolver_installer_set.rb +7 -11
  111. data/test/rubygems/test_gem_resolver_lock_specification.rb +3 -2
  112. data/test/rubygems/test_gem_security_trust_dir.rb +2 -0
  113. data/test/rubygems/test_gem_server.rb +4 -0
  114. data/test/rubygems/test_gem_specification.rb +344 -61
  115. data/test/rubygems/test_gem_stream_ui.rb +6 -6
  116. data/test/rubygems/test_gem_stub_specification.rb +21 -6
  117. data/test/rubygems/test_gem_text.rb +2 -0
  118. data/test/rubygems/test_gem_uninstaller.rb +2 -1
  119. data/test/rubygems/test_gem_util.rb +8 -0
  120. data/test/rubygems/test_require.rb +156 -125
  121. data/util/generate_spdx_license_list.rb +21 -0
  122. data/util/update_bundled_ca_certificates.rb +2 -1
  123. metadata +42 -6
  124. metadata.gz.sig +0 -0
  125. data/lib/rubygems/util/stringio.rb +0 -34
@@ -271,7 +271,7 @@ class Gem::Uninstaller
271
271
 
272
272
  say "Successfully uninstalled #{spec.full_name}"
273
273
 
274
- Gem::Specification.remove_spec spec
274
+ Gem::Specification.reset
275
275
  end
276
276
 
277
277
  ##
@@ -10,8 +10,8 @@ module Gem::Util
10
10
 
11
11
  def self.gunzip(data)
12
12
  require 'zlib'
13
- require 'rubygems/util/stringio'
14
- data = Gem::StringSource.new data
13
+ require 'stringio'
14
+ data = StringIO.new(data, 'r')
15
15
 
16
16
  unzipped = Zlib::GzipReader.new(data).read
17
17
  unzipped.force_encoding Encoding::BINARY if Object.const_defined? :Encoding
@@ -23,8 +23,8 @@ module Gem::Util
23
23
 
24
24
  def self.gzip(data)
25
25
  require 'zlib'
26
- require 'rubygems/util/stringio'
27
- zipped = Gem::StringSink.new
26
+ require 'stringio'
27
+ zipped = StringIO.new('','w')
28
28
  zipped.set_encoding Encoding::BINARY if Object.const_defined? :Encoding
29
29
 
30
30
  Zlib::GzipWriter.wrap zipped do |io| io.write data end
@@ -0,0 +1,309 @@
1
+ class Gem::Licenses
2
+ NONSTANDARD = 'Nonstandard'.freeze
3
+
4
+ # Software Package Data Exchange (SPDX) standard open-source software
5
+ # license identifiers
6
+ IDENTIFIERS = %w(
7
+ AAL
8
+ ADSL
9
+ AFL-1.1
10
+ AFL-1.2
11
+ AFL-2.0
12
+ AFL-2.1
13
+ AFL-3.0
14
+ AGPL-1.0
15
+ AGPL-3.0
16
+ AMDPLPA
17
+ AML
18
+ AMPAS
19
+ ANTLR-PD
20
+ APAFML
21
+ APL-1.0
22
+ APSL-1.0
23
+ APSL-1.1
24
+ APSL-1.2
25
+ APSL-2.0
26
+ Abstyles
27
+ Adobe-2006
28
+ Adobe-Glyph
29
+ Afmparse
30
+ Aladdin
31
+ Apache-1.0
32
+ Apache-1.1
33
+ Apache-2.0
34
+ Artistic-1.0
35
+ Artistic-1.0-Perl
36
+ Artistic-1.0-cl8
37
+ Artistic-2.0
38
+ BSD-2-Clause
39
+ BSD-2-Clause-FreeBSD
40
+ BSD-2-Clause-NetBSD
41
+ BSD-3-Clause
42
+ BSD-3-Clause-Attribution
43
+ BSD-3-Clause-Clear
44
+ BSD-3-Clause-LBNL
45
+ BSD-4-Clause
46
+ BSD-4-Clause-UC
47
+ BSD-Protection
48
+ BSL-1.0
49
+ Bahyph
50
+ Barr
51
+ Beerware
52
+ BitTorrent-1.0
53
+ BitTorrent-1.1
54
+ Borceux
55
+ CATOSL-1.1
56
+ CC-BY-1.0
57
+ CC-BY-2.0
58
+ CC-BY-2.5
59
+ CC-BY-3.0
60
+ CC-BY-4.0
61
+ CC-BY-NC-1.0
62
+ CC-BY-NC-2.0
63
+ CC-BY-NC-2.5
64
+ CC-BY-NC-3.0
65
+ CC-BY-NC-4.0
66
+ CC-BY-NC-ND-1.0
67
+ CC-BY-NC-ND-2.0
68
+ CC-BY-NC-ND-2.5
69
+ CC-BY-NC-ND-3.0
70
+ CC-BY-NC-ND-4.0
71
+ CC-BY-NC-SA-1.0
72
+ CC-BY-NC-SA-2.0
73
+ CC-BY-NC-SA-2.5
74
+ CC-BY-NC-SA-3.0
75
+ CC-BY-NC-SA-4.0
76
+ CC-BY-ND-1.0
77
+ CC-BY-ND-2.0
78
+ CC-BY-ND-2.5
79
+ CC-BY-ND-3.0
80
+ CC-BY-ND-4.0
81
+ CC-BY-SA-1.0
82
+ CC-BY-SA-2.0
83
+ CC-BY-SA-2.5
84
+ CC-BY-SA-3.0
85
+ CC-BY-SA-4.0
86
+ CC0-1.0
87
+ CDDL-1.0
88
+ CDDL-1.1
89
+ CECILL-1.0
90
+ CECILL-1.1
91
+ CECILL-2.0
92
+ CECILL-B
93
+ CECILL-C
94
+ CNRI-Jython
95
+ CNRI-Python
96
+ CNRI-Python-GPL-Compatible
97
+ CPAL-1.0
98
+ CPL-1.0
99
+ CPOL-1.02
100
+ CUA-OPL-1.0
101
+ Caldera
102
+ ClArtistic
103
+ Condor-1.1
104
+ Crossword
105
+ Cube
106
+ D-FSL-1.0
107
+ DOC
108
+ DSDP
109
+ Dotseqn
110
+ ECL-1.0
111
+ ECL-2.0
112
+ EFL-1.0
113
+ EFL-2.0
114
+ EPL-1.0
115
+ EUDatagrid
116
+ EUPL-1.0
117
+ EUPL-1.1
118
+ Entessa
119
+ ErlPL-1.1
120
+ Eurosym
121
+ FSFUL
122
+ FSFULLR
123
+ FTL
124
+ Fair
125
+ Frameworx-1.0
126
+ FreeImage
127
+ GFDL-1.1
128
+ GFDL-1.2
129
+ GFDL-1.3
130
+ GL2PS
131
+ GPL-1.0
132
+ GPL-2.0
133
+ GPL-3.0
134
+ Giftware
135
+ Glide
136
+ Glulxe
137
+ HPND
138
+ HaskellReport
139
+ IBM-pibs
140
+ ICU
141
+ IJG
142
+ IPA
143
+ IPL-1.0
144
+ ISC
145
+ ImageMagick
146
+ Imlib2
147
+ Intel
148
+ Intel-ACPI
149
+ JSON
150
+ JasPer-2.0
151
+ LGPL-2.0
152
+ LGPL-2.1
153
+ LGPL-3.0
154
+ LGPLLR
155
+ LPL-1.0
156
+ LPL-1.02
157
+ LPPL-1.0
158
+ LPPL-1.1
159
+ LPPL-1.2
160
+ LPPL-1.3a
161
+ LPPL-1.3c
162
+ Latex2e
163
+ Leptonica
164
+ Libpng
165
+ MIT
166
+ MIT-CMU
167
+ MIT-advertising
168
+ MIT-enna
169
+ MIT-feh
170
+ MITNFA
171
+ MPL-1.0
172
+ MPL-1.1
173
+ MPL-2.0
174
+ MPL-2.0-no-copyleft-exception
175
+ MS-PL
176
+ MS-RL
177
+ MTLL
178
+ MakeIndex
179
+ MirOS
180
+ Motosoto
181
+ Multics
182
+ Mup
183
+ NASA-1.3
184
+ NBPL-1.0
185
+ NCSA
186
+ NGPL
187
+ NLPL
188
+ NOSL
189
+ NPL-1.0
190
+ NPL-1.1
191
+ NPOSL-3.0
192
+ NRL
193
+ NTP
194
+ Naumen
195
+ NetCDF
196
+ Newsletr
197
+ Nokia
198
+ Noweb
199
+ Nunit
200
+ OCLC-2.0
201
+ ODbL-1.0
202
+ OFL-1.0
203
+ OFL-1.1
204
+ OGTSL
205
+ OLDAP-1.1
206
+ OLDAP-1.2
207
+ OLDAP-1.3
208
+ OLDAP-1.4
209
+ OLDAP-2.0
210
+ OLDAP-2.0.1
211
+ OLDAP-2.1
212
+ OLDAP-2.2
213
+ OLDAP-2.2.1
214
+ OLDAP-2.2.2
215
+ OLDAP-2.3
216
+ OLDAP-2.4
217
+ OLDAP-2.5
218
+ OLDAP-2.6
219
+ OLDAP-2.7
220
+ OLDAP-2.8
221
+ OML
222
+ OPL-1.0
223
+ OSL-1.0
224
+ OSL-1.1
225
+ OSL-2.0
226
+ OSL-2.1
227
+ OSL-3.0
228
+ OpenSSL
229
+ PDDL-1.0
230
+ PHP-3.0
231
+ PHP-3.01
232
+ Plexus
233
+ PostgreSQL
234
+ Python-2.0
235
+ QPL-1.0
236
+ Qhull
237
+ RHeCos-1.1
238
+ RPL-1.1
239
+ RPL-1.5
240
+ RPSL-1.0
241
+ RSA-MD
242
+ RSCPL
243
+ Rdisc
244
+ Ruby
245
+ SAX-PD
246
+ SCEA
247
+ SGI-B-1.0
248
+ SGI-B-1.1
249
+ SGI-B-2.0
250
+ SISSL
251
+ SISSL-1.2
252
+ SMLNJ
253
+ SNIA
254
+ SPL-1.0
255
+ SWL
256
+ Saxpath
257
+ SimPL-2.0
258
+ Sleepycat
259
+ Spencer-86
260
+ Spencer-94
261
+ Spencer-99
262
+ SugarCRM-1.1.3
263
+ TCL
264
+ TMate
265
+ TORQUE-1.1
266
+ TOSL
267
+ UPL-1.0
268
+ Unicode-TOU
269
+ Unlicense
270
+ VOSTROM
271
+ VSL-1.0
272
+ Vim
273
+ W3C
274
+ W3C-19980720
275
+ WTFPL
276
+ Watcom-1.0
277
+ Wsuipa
278
+ X11
279
+ XFree86-1.1
280
+ XSkat
281
+ Xerox
282
+ Xnet
283
+ YPL-1.0
284
+ YPL-1.1
285
+ ZPL-1.1
286
+ ZPL-2.0
287
+ ZPL-2.1
288
+ Zed
289
+ Zend-2.0
290
+ Zimbra-1.3
291
+ Zimbra-1.4
292
+ Zlib
293
+ bzip2-1.0.5
294
+ bzip2-1.0.6
295
+ diffmark
296
+ dvipdfm
297
+ eGenix
298
+ gSOAP-1.3b
299
+ gnuplot
300
+ iMatix
301
+ libtiff
302
+ mpich2
303
+ psfrag
304
+ psutils
305
+ xinetd
306
+ xpp
307
+ zlib-acknowledgement
308
+ ).freeze
309
+ end
@@ -1,7 +1,13 @@
1
1
  module Gem
2
- List = Struct.new(:value, :tail)
3
-
4
2
  class List
3
+ include Enumerable
4
+ attr_accessor :value, :tail
5
+
6
+ def initialize(value = nil, tail = nil)
7
+ @value = value
8
+ @tail = tail
9
+ end
10
+
5
11
  def each
6
12
  n = self
7
13
  while n
@@ -11,25 +17,7 @@ module Gem
11
17
  end
12
18
 
13
19
  def to_a
14
- ary = []
15
- n = self
16
- while n
17
- ary.unshift n.value
18
- n = n.tail
19
- end
20
-
21
- ary
22
- end
23
-
24
- def find
25
- n = self
26
- while n
27
- v = n.value
28
- return v if yield(v)
29
- n = n.tail
30
- end
31
-
32
- nil
20
+ super.reverse
33
21
  end
34
22
 
35
23
  def prepend(value)
@@ -217,12 +217,14 @@ class Gem::Version
217
217
  # Pre-release (alpha) parts, e.g, 5.3.1.b.2 => 5.4, are ignored.
218
218
 
219
219
  def bump
220
- segments = self.segments.dup
221
- segments.pop while segments.any? { |s| String === s }
222
- segments.pop if segments.size > 1
223
-
224
- segments[-1] = segments[-1].succ
225
- self.class.new segments.join(".")
220
+ @bump ||= begin
221
+ segments = self.segments.dup
222
+ segments.pop while segments.any? { |s| String === s }
223
+ segments.pop if segments.size > 1
224
+
225
+ segments[-1] = segments[-1].succ
226
+ self.class.new segments.join(".")
227
+ end
226
228
  end
227
229
 
228
230
  ##
@@ -230,11 +232,11 @@ class Gem::Version
230
232
  # same precision. Version "1.0" is not the same as version "1".
231
233
 
232
234
  def eql? other
233
- self.class === other and @version == other.version
235
+ self.class === other and @version == other._version
234
236
  end
235
237
 
236
238
  def hash # :nodoc:
237
- @hash ||= segments.hash
239
+ @version.hash
238
240
  end
239
241
 
240
242
  def init_with coder # :nodoc:
@@ -291,11 +293,13 @@ class Gem::Version
291
293
  # Non-prerelease versions return themselves.
292
294
 
293
295
  def release
294
- return self unless prerelease?
295
-
296
- segments = self.segments.dup
297
- segments.pop while segments.any? { |s| String === s }
298
- self.class.new segments.join('.')
296
+ @release ||= if prerelease?
297
+ segments = self.segments.dup
298
+ segments.pop while segments.any? { |s| String === s }
299
+ self.class.new segments.join('.')
300
+ else
301
+ self
302
+ end
299
303
  end
300
304
 
301
305
  def segments # :nodoc:
@@ -329,7 +333,7 @@ class Gem::Version
329
333
 
330
334
  def <=> other
331
335
  return unless Gem::Version === other
332
- return 0 if @version == other.version
336
+ return 0 if @version == other._version
333
337
 
334
338
  lhsegments = segments
335
339
  rhsegments = other.segments
@@ -353,4 +357,10 @@ class Gem::Version
353
357
 
354
358
  return 0
355
359
  end
360
+
361
+ protected
362
+
363
+ def _version
364
+ @version
365
+ end
356
366
  end