rubygems-update 2.7.6 → 2.7.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (148) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -23
  3. data/History.txt +116 -0
  4. data/Manifest.txt +3 -3
  5. data/Rakefile +12 -2
  6. data/bundler/CHANGELOG.md +130 -0
  7. data/bundler/README.md +5 -1
  8. data/bundler/bundler.gemspec +2 -1
  9. data/bundler/lib/bundler.rb +12 -8
  10. data/bundler/lib/bundler/build_metadata.rb +19 -2
  11. data/bundler/lib/bundler/cli.rb +3 -1
  12. data/bundler/lib/bundler/cli/check.rb +1 -1
  13. data/bundler/lib/bundler/cli/exec.rb +4 -4
  14. data/bundler/lib/bundler/cli/gem.rb +5 -2
  15. data/bundler/lib/bundler/cli/init.rb +5 -0
  16. data/bundler/lib/bundler/cli/install.rb +2 -2
  17. data/bundler/lib/bundler/cli/outdated.rb +1 -1
  18. data/bundler/lib/bundler/cli/update.rb +3 -3
  19. data/bundler/lib/bundler/compact_index_client/updater.rb +10 -1
  20. data/bundler/lib/bundler/current_ruby.rb +8 -1
  21. data/bundler/lib/bundler/definition.rb +33 -23
  22. data/bundler/lib/bundler/dep_proxy.rb +2 -2
  23. data/bundler/lib/bundler/dependency.rb +1 -0
  24. data/bundler/lib/bundler/deprecate.rb +2 -1
  25. data/bundler/lib/bundler/endpoint_specification.rb +1 -1
  26. data/bundler/lib/bundler/env.rb +10 -8
  27. data/bundler/lib/bundler/fetcher.rb +3 -3
  28. data/bundler/lib/bundler/fetcher/downloader.rb +10 -5
  29. data/bundler/lib/bundler/fetcher/index.rb +2 -2
  30. data/bundler/lib/bundler/friendly_errors.rb +2 -0
  31. data/bundler/lib/bundler/gem_helper.rb +1 -1
  32. data/bundler/lib/bundler/gem_version_promoter.rb +12 -0
  33. data/bundler/lib/bundler/injector.rb +5 -5
  34. data/bundler/lib/bundler/installer.rb +12 -4
  35. data/bundler/lib/bundler/installer/gem_installer.rb +9 -2
  36. data/bundler/lib/bundler/installer/parallel_installer.rb +1 -1
  37. data/bundler/lib/bundler/lazy_specification.rb +1 -1
  38. data/bundler/lib/bundler/mirror.rb +2 -2
  39. data/bundler/lib/bundler/plugin.rb +2 -2
  40. data/bundler/lib/bundler/plugin/index.rb +7 -2
  41. data/bundler/lib/bundler/process_lock.rb +1 -1
  42. data/bundler/lib/bundler/resolver.rb +10 -9
  43. data/bundler/lib/bundler/resolver/spec_group.rb +0 -5
  44. data/bundler/lib/bundler/ruby_version.rb +1 -1
  45. data/bundler/lib/bundler/rubygems_integration.rb +9 -3
  46. data/bundler/lib/bundler/runtime.rb +2 -2
  47. data/bundler/lib/bundler/shared_helpers.rb +15 -3
  48. data/bundler/lib/bundler/source/git.rb +2 -1
  49. data/bundler/lib/bundler/source/git/git_proxy.rb +6 -1
  50. data/bundler/lib/bundler/source/metadata.rb +1 -1
  51. data/bundler/lib/bundler/source/rubygems.rb +11 -2
  52. data/bundler/lib/bundler/source/rubygems/remote.rb +4 -1
  53. data/bundler/lib/bundler/spec_set.rb +4 -1
  54. data/bundler/lib/bundler/templates/Executable +1 -1
  55. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +8 -2
  56. data/bundler/lib/bundler/templates/newgem/travis.yml.tt +2 -0
  57. data/bundler/lib/bundler/ui/shell.rb +3 -1
  58. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +11 -1
  59. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +7 -2
  60. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  61. data/bundler/lib/bundler/version.rb +1 -1
  62. data/bundler/man/bundle-binstubs.ronn +3 -3
  63. data/bundler/man/bundle-check.ronn +3 -3
  64. data/bundler/man/bundle-config.ronn +13 -9
  65. data/bundler/man/bundle-doctor.ronn +33 -0
  66. data/bundler/man/bundle-exec.ronn +3 -3
  67. data/bundler/man/bundle-gem.ronn +1 -1
  68. data/bundler/man/bundle-init.ronn +15 -4
  69. data/bundler/man/bundle-inject.ronn +3 -3
  70. data/bundler/man/bundle-install.ronn +12 -3
  71. data/bundler/man/bundle-lock.ronn +1 -1
  72. data/bundler/man/bundle-outdated.ronn +1 -1
  73. data/bundler/man/bundle-package.ronn +3 -3
  74. data/bundler/man/bundle-show.ronn +3 -2
  75. data/bundler/man/bundle-update.ronn +18 -14
  76. data/bundler/man/bundle-viz.ronn +1 -1
  77. data/bundler/man/bundle.ronn +27 -27
  78. data/bundler/man/gemfile.5.ronn +24 -9
  79. data/lib/rubygems.rb +24 -11
  80. data/lib/rubygems/bundler_version_finder.rb +9 -22
  81. data/lib/rubygems/command_manager.rb +6 -4
  82. data/lib/rubygems/commands/install_command.rb +7 -0
  83. data/lib/rubygems/commands/owner_command.rb +4 -1
  84. data/lib/rubygems/commands/push_command.rb +37 -4
  85. data/lib/rubygems/commands/setup_command.rb +3 -3
  86. data/lib/rubygems/commands/uninstall_command.rb +1 -1
  87. data/lib/rubygems/commands/unpack_command.rb +1 -1
  88. data/lib/rubygems/core_ext/kernel_require.rb +2 -7
  89. data/lib/rubygems/dependency.rb +1 -0
  90. data/lib/rubygems/dependency_installer.rb +4 -2
  91. data/lib/rubygems/exceptions.rb +5 -1
  92. data/lib/rubygems/gemcutter_utilities.rb +5 -2
  93. data/lib/rubygems/indexer.rb +1 -1
  94. data/lib/rubygems/install_update_options.rb +1 -1
  95. data/lib/rubygems/installer.rb +29 -6
  96. data/lib/rubygems/package.rb +20 -2
  97. data/lib/rubygems/package/tar_header.rb +3 -1
  98. data/lib/rubygems/package/tar_writer.rb +2 -3
  99. data/lib/rubygems/remote_fetcher.rb +1 -1
  100. data/lib/rubygems/request_set.rb +28 -17
  101. data/lib/rubygems/requirement.rb +14 -3
  102. data/lib/rubygems/resolver/api_specification.rb +5 -0
  103. data/lib/rubygems/security.rb +6 -1
  104. data/lib/rubygems/server.rb +3 -3
  105. data/lib/rubygems/source.rb +1 -1
  106. data/lib/rubygems/specification.rb +7 -10
  107. data/lib/rubygems/ssl_certs/{index.rubygems.org → rubygems.org}/GlobalSignRootCA.pem +0 -0
  108. data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
  109. data/lib/rubygems/test_case.rb +22 -4
  110. data/lib/rubygems/test_utilities.rb +1 -1
  111. data/lib/rubygems/user_interaction.rb +9 -2
  112. data/lib/rubygems/util/licenses.rb +35 -4
  113. data/lib/rubygems/version.rb +7 -1
  114. data/lib/ubygems.rb +3 -0
  115. data/test/rubygems/test_bundled_ca.rb +7 -4
  116. data/test/rubygems/test_gem.rb +45 -10
  117. data/test/rubygems/test_gem_bundler_version_finder.rb +8 -7
  118. data/test/rubygems/test_gem_command_manager.rb +2 -2
  119. data/test/rubygems/test_gem_commands_build_command.rb +2 -0
  120. data/test/rubygems/test_gem_commands_install_command.rb +37 -0
  121. data/test/rubygems/test_gem_commands_push_command.rb +20 -0
  122. data/test/rubygems/test_gem_commands_setup_command.rb +6 -1
  123. data/test/rubygems/test_gem_commands_signin_command.rb +1 -1
  124. data/test/rubygems/test_gem_commands_uninstall_command.rb +1 -1
  125. data/test/rubygems/test_gem_dependency.rb +1 -1
  126. data/test/rubygems/test_gem_ext_rake_builder.rb +0 -4
  127. data/test/rubygems/test_gem_install_update_options.rb +2 -0
  128. data/test/rubygems/test_gem_installer.rb +109 -3
  129. data/test/rubygems/test_gem_package.rb +90 -5
  130. data/test/rubygems/test_gem_package_tar_header.rb +2 -1
  131. data/test/rubygems/test_gem_remote_fetcher.rb +6 -2
  132. data/test/rubygems/test_gem_request.rb +5 -2
  133. data/test/rubygems/test_gem_requirement.rb +6 -0
  134. data/test/rubygems/test_gem_resolver_api_specification.rb +24 -0
  135. data/test/rubygems/test_gem_resolver_installer_set.rb +1 -1
  136. data/test/rubygems/test_gem_security_policy.rb +3 -3
  137. data/test/rubygems/test_gem_server.rb +12 -12
  138. data/test/rubygems/test_gem_specification.rb +27 -13
  139. data/test/rubygems/test_gem_stream_ui.rb +2 -2
  140. data/test/rubygems/test_gem_text.rb +5 -0
  141. data/test/rubygems/test_gem_util.rb +4 -2
  142. data/test/rubygems/test_gem_version.rb +29 -2
  143. data/util/ci +1 -0
  144. data/util/generate_spdx_license_list.rb +15 -6
  145. data/util/update_bundled_ca_certificates.rb +1 -3
  146. metadata +12 -12
  147. data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  148. data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
@@ -197,7 +197,7 @@ class TestGemResolverInstallerSet < Gem::TestCase
197
197
  def (set.remote_set).prefetch(_)
198
198
  raise "called"
199
199
  end
200
- assert_equal nil, set.prefetch(nil)
200
+ assert_nil set.prefetch(nil)
201
201
  end
202
202
 
203
203
  def test_prerelease_equals
@@ -450,7 +450,7 @@ class TestGemSecurityPolicy < Gem::TestCase
450
450
 
451
451
  @spec.cert_chain = [PUBLIC_CERT.to_s]
452
452
 
453
- metadata_gz = Gem.gzip @spec.to_yaml
453
+ metadata_gz = Gem::Util.gzip @spec.to_yaml
454
454
 
455
455
  package = Gem::Package.new 'nonexistent.gem'
456
456
  package.checksums[Gem::Security::DIGEST_NAME] = {}
@@ -473,7 +473,7 @@ class TestGemSecurityPolicy < Gem::TestCase
473
473
 
474
474
  @spec.cert_chain = [PUBLIC_CERT.to_s]
475
475
 
476
- metadata_gz = Gem.gzip @spec.to_yaml
476
+ metadata_gz = Gem::Util.gzip @spec.to_yaml
477
477
 
478
478
  package = Gem::Package.new 'nonexistent.gem'
479
479
  package.checksums[Gem::Security::DIGEST_NAME] = {}
@@ -502,7 +502,7 @@ class TestGemSecurityPolicy < Gem::TestCase
502
502
 
503
503
  @spec.cert_chain = [PUBLIC_CERT.to_s]
504
504
 
505
- metadata_gz = Gem.gzip @spec.to_yaml
505
+ metadata_gz = Gem::Util.gzip @spec.to_yaml
506
506
 
507
507
  package = Gem::Package.new 'nonexistent.gem'
508
508
  package.checksums[Gem::Security::DIGEST_NAME] = {}
@@ -127,7 +127,7 @@ class TestGemServer < Gem::TestCase
127
127
  assert_match %r| \d\d:\d\d:\d\d |, @res['date']
128
128
  assert_equal 'application/x-gzip', @res['content-type']
129
129
  assert_equal [['a', Gem::Version.new(2), Gem::Platform::RUBY]],
130
- Marshal.load(Gem.gunzip(@res.body))
130
+ Marshal.load(Gem::Util.gunzip(@res.body))
131
131
  end
132
132
 
133
133
  def test_listen
@@ -177,7 +177,7 @@ class TestGemServer < Gem::TestCase
177
177
  assert_match %r| \d\d:\d\d:\d\d |, @res['date']
178
178
  assert_equal 'application/x-gzip', @res['content-type']
179
179
  assert_equal [['a', v('3.a'), Gem::Platform::RUBY]],
180
- Marshal.load(Gem.gunzip(@res.body))
180
+ Marshal.load(Gem::Util.gunzip(@res.body))
181
181
  end
182
182
 
183
183
  def test_quick_gemdirs
@@ -236,7 +236,7 @@ class TestGemServer < Gem::TestCase
236
236
  assert @res['date']
237
237
  assert_equal 'application/x-deflate', @res['content-type']
238
238
 
239
- spec = Marshal.load Gem.inflate(@res.body)
239
+ spec = Marshal.load Gem::Util.inflate(@res.body)
240
240
  assert_equal 'a', spec.name
241
241
  assert_equal Gem::Version.new(1), spec.version
242
242
  end
@@ -253,7 +253,7 @@ class TestGemServer < Gem::TestCase
253
253
  assert @res['date']
254
254
  assert_equal 'application/x-deflate', @res['content-type']
255
255
 
256
- spec = Marshal.load Gem.inflate(@res.body)
256
+ spec = Marshal.load Gem::Util.inflate(@res.body)
257
257
  assert_equal 'a', spec.name
258
258
  assert_equal Gem::Version.new(1), spec.version
259
259
  assert_equal Gem::Platform.local, spec.platform
@@ -269,7 +269,7 @@ class TestGemServer < Gem::TestCase
269
269
  assert @res['date']
270
270
  assert_equal 'application/x-deflate', @res['content-type']
271
271
 
272
- spec = Marshal.load Gem.inflate(@res.body)
272
+ spec = Marshal.load Gem::Util.inflate(@res.body)
273
273
  assert_equal 'a', spec.name
274
274
  assert_equal v('3.a'), spec.version
275
275
  end
@@ -286,7 +286,7 @@ class TestGemServer < Gem::TestCase
286
286
  assert @res['date']
287
287
  assert_equal 'application/x-deflate', @res['content-type']
288
288
 
289
- spec = Marshal.load Gem.inflate(@res.body)
289
+ spec = Marshal.load Gem::Util.inflate(@res.body)
290
290
  assert_equal 'a-b', spec.name
291
291
  assert_equal v('3.a'), spec.version
292
292
  end
@@ -303,7 +303,7 @@ class TestGemServer < Gem::TestCase
303
303
  assert @res['date']
304
304
  assert_equal 'application/x-deflate', @res['content-type']
305
305
 
306
- spec = Marshal.load Gem.inflate(@res.body)
306
+ spec = Marshal.load Gem::Util.inflate(@res.body)
307
307
  assert_equal 'a-b-1', spec.name
308
308
  assert_equal v('3.a'), spec.version
309
309
  end
@@ -405,7 +405,7 @@ class TestGemServer < Gem::TestCase
405
405
  #
406
406
  #
407
407
  # <a href="." title=".">[www]</a>
408
- regex_match = /xsshomepagegem 1<\/b>[\n\s]+(<span title="rdoc not installed">\[rdoc\]<\/span>|<a href="\/doc_root\/xsshomepagegem-1\/">\[rdoc\]<\/a>)[\n\s]+<a href="\." title="\.">\[www\]<\/a>/
408
+ regex_match = /xsshomepagegem 1<\/b>\s+(<span title="rdoc not installed">\[rdoc\]<\/span>|<a href="\/doc_root\/xsshomepagegem-1\/">\[rdoc\]<\/a>)\s+<a href="\." title="\.">\[www\]<\/a>/
409
409
  assert_match regex_match, @res.body
410
410
  end
411
411
 
@@ -460,7 +460,7 @@ class TestGemServer < Gem::TestCase
460
460
  #
461
461
  #
462
462
  # <a href="." title=".">[www]</a>
463
- regex_match = /invalidhomepagegem 1<\/b>[\n\s]+(<span title="rdoc not installed">\[rdoc\]<\/span>|<a href="\/doc_root\/invalidhomepagegem-1\/">\[rdoc\]<\/a>)[\n\s]+<a href="\." title="\.">\[www\]<\/a>/
463
+ regex_match = /invalidhomepagegem 1<\/b>\s+(<span title="rdoc not installed">\[rdoc\]<\/span>|<a href="\/doc_root\/invalidhomepagegem-1\/">\[rdoc\]<\/a>)\s+<a href="\." title="\.">\[www\]<\/a>/
464
464
  assert_match regex_match, @res.body
465
465
  end
466
466
 
@@ -487,7 +487,7 @@ class TestGemServer < Gem::TestCase
487
487
  assert_equal 200, @res.status
488
488
  assert_match 'validhomepagegemhttp 1', @res.body
489
489
 
490
- regex_match = /validhomepagegemhttp 1<\/b>[\n\s]+(<span title="rdoc not installed">\[rdoc\]<\/span>|<a href="\/doc_root\/validhomepagegemhttp-1\/">\[rdoc\]<\/a>)[\n\s]+<a href="http:\/\/rubygems\.org" title="http:\/\/rubygems\.org">\[www\]<\/a>/
490
+ regex_match = /validhomepagegemhttp 1<\/b>\s+(<span title="rdoc not installed">\[rdoc\]<\/span>|<a href="\/doc_root\/validhomepagegemhttp-1\/">\[rdoc\]<\/a>)\s+<a href="http:\/\/rubygems\.org" title="http:\/\/rubygems\.org">\[www\]<\/a>/
491
491
  assert_match regex_match, @res.body
492
492
  end
493
493
 
@@ -514,7 +514,7 @@ class TestGemServer < Gem::TestCase
514
514
  assert_equal 200, @res.status
515
515
  assert_match 'validhomepagegemhttps 1', @res.body
516
516
 
517
- regex_match = /validhomepagegemhttps 1<\/b>[\n\s]+(<span title="rdoc not installed">\[rdoc\]<\/span>|<a href="\/doc_root\/validhomepagegemhttps-1\/">\[rdoc\]<\/a>)[\n\s]+<a href="https:\/\/rubygems\.org" title="https:\/\/rubygems\.org">\[www\]<\/a>/
517
+ regex_match = /validhomepagegemhttps 1<\/b>\s+(<span title="rdoc not installed">\[rdoc\]<\/span>|<a href="\/doc_root\/validhomepagegemhttps-1\/">\[rdoc\]<\/a>)\s+<a href="https:\/\/rubygems\.org" title="https:\/\/rubygems\.org">\[www\]<\/a>/
518
518
  assert_match regex_match, @res.body
519
519
  end
520
520
 
@@ -571,7 +571,7 @@ class TestGemServer < Gem::TestCase
571
571
  assert_equal [['a', Gem::Version.new(1), Gem::Platform::RUBY],
572
572
  ['a', Gem::Version.new(2), Gem::Platform::RUBY],
573
573
  ['a', v('3.a'), Gem::Platform::RUBY]],
574
- Marshal.load(Gem.gunzip(@res.body))
574
+ Marshal.load(Gem::Util.gunzip(@res.body))
575
575
  end
576
576
 
577
577
  def test_uri_encode
@@ -1133,9 +1133,9 @@ dependencies: []
1133
1133
  def test_handles_private_null_type
1134
1134
  path = File.join DATA_PATH, "null-type.gemspec.rz"
1135
1135
 
1136
- data = Marshal.load Gem.inflate(Gem.read_binary(path))
1136
+ data = Marshal.load Gem::Util.inflate(Gem.read_binary(path))
1137
1137
 
1138
- assert_equal nil, data.rubyforge_project
1138
+ assert_nil data.rubyforge_project
1139
1139
  end
1140
1140
 
1141
1141
  def test_emits_zulu_timestamps_properly
@@ -1156,7 +1156,7 @@ dependencies: []
1156
1156
  assert_equal "blah", spec.name
1157
1157
  assert_equal "1.3.5", spec.version.to_s
1158
1158
  assert_equal Gem::Platform::RUBY, spec.platform
1159
- assert_equal nil, spec.summary
1159
+ assert_nil spec.summary
1160
1160
  assert_equal [], spec.files
1161
1161
 
1162
1162
  assert_equal [], spec.test_files
@@ -1333,31 +1333,31 @@ dependencies: []
1333
1333
  @a2.bindir = nil
1334
1334
  @a2.executable = 'app'
1335
1335
 
1336
- assert_equal nil, @a2.bindir
1336
+ assert_nil @a2.bindir
1337
1337
  assert_equal %w[app lib/code.rb].sort, @a2.files
1338
1338
  end
1339
1339
 
1340
1340
  def test_extensions_equals_nil
1341
1341
  @a2.instance_variable_set(:@extensions, nil)
1342
- assert_equal nil, @a2.instance_variable_get(:@extensions)
1342
+ assert_nil @a2.instance_variable_get(:@extensions)
1343
1343
  assert_equal %w[lib/code.rb], @a2.files
1344
1344
  end
1345
1345
 
1346
1346
  def test_test_files_equals_nil
1347
1347
  @a2.instance_variable_set(:@test_files, nil)
1348
- assert_equal nil, @a2.instance_variable_get(:@test_files)
1348
+ assert_nil @a2.instance_variable_get(:@test_files)
1349
1349
  assert_equal %w[lib/code.rb], @a2.files
1350
1350
  end
1351
1351
 
1352
1352
  def test_executables_equals_nil
1353
1353
  @a2.instance_variable_set(:@executables, nil)
1354
- assert_equal nil, @a2.instance_variable_get(:@executables)
1354
+ assert_nil @a2.instance_variable_get(:@executables)
1355
1355
  assert_equal %w[lib/code.rb], @a2.files
1356
1356
  end
1357
1357
 
1358
1358
  def test_extra_rdoc_files_equals_nil
1359
1359
  @a2.instance_variable_set(:@extra_rdoc_files, nil)
1360
- assert_equal nil, @a2.instance_variable_get(:@extra_rdoc_files)
1360
+ assert_nil @a2.instance_variable_get(:@extra_rdoc_files)
1361
1361
  assert_equal %w[lib/code.rb], @a2.files
1362
1362
  end
1363
1363
 
@@ -2210,7 +2210,7 @@ dependencies: []
2210
2210
  end
2211
2211
 
2212
2212
  def test_allowed_push_host
2213
- assert_equal nil, @a1.metadata['allowed_push_host']
2213
+ assert_nil @a1.metadata['allowed_push_host']
2214
2214
  assert_equal 'https://privategemserver.com', @a3.metadata['allowed_push_host']
2215
2215
  end
2216
2216
 
@@ -2431,16 +2431,16 @@ Gem::Specification.new do |s|
2431
2431
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
2432
2432
  s.add_runtime_dependency(%q<rake>.freeze, [\"> 0.4\"])
2433
2433
  s.add_runtime_dependency(%q<jabber4r>.freeze, [\"> 0.0.0\"])
2434
- s.add_runtime_dependency(%q<pqa>.freeze, [\"<= 0.6\", \"> 0.4\"])
2434
+ s.add_runtime_dependency(%q<pqa>.freeze, [\"> 0.4\", \"<= 0.6\"])
2435
2435
  else
2436
2436
  s.add_dependency(%q<rake>.freeze, [\"> 0.4\"])
2437
2437
  s.add_dependency(%q<jabber4r>.freeze, [\"> 0.0.0\"])
2438
- s.add_dependency(%q<pqa>.freeze, [\"<= 0.6\", \"> 0.4\"])
2438
+ s.add_dependency(%q<pqa>.freeze, [\"> 0.4\", \"<= 0.6\"])
2439
2439
  end
2440
2440
  else
2441
2441
  s.add_dependency(%q<rake>.freeze, [\"> 0.4\"])
2442
2442
  s.add_dependency(%q<jabber4r>.freeze, [\"> 0.0.0\"])
2443
- s.add_dependency(%q<pqa>.freeze, [\"<= 0.6\", \"> 0.4\"])
2443
+ s.add_dependency(%q<pqa>.freeze, [\"> 0.4\", \"<= 0.6\"])
2444
2444
  end
2445
2445
  end
2446
2446
  SPEC
@@ -2973,6 +2973,20 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
2973
2973
  warning
2974
2974
  end
2975
2975
 
2976
+ def test_validate_license_with_invalid_exception
2977
+ util_setup_validate
2978
+
2979
+ use_ui @ui do
2980
+ @a1.licenses = ['GPL-2.0+ WITH Autocofn-exception-2.0']
2981
+ @a1.validate
2982
+ end
2983
+
2984
+ assert_match <<-warning, @ui.error
2985
+ WARNING: license value 'GPL-2.0+ WITH Autocofn-exception-2.0' is invalid. Use a license identifier from
2986
+ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
2987
+ warning
2988
+ end
2989
+
2976
2990
  def test_validate_license_gives_suggestions
2977
2991
  util_setup_validate
2978
2992
 
@@ -3553,7 +3567,7 @@ end
3553
3567
 
3554
3568
  assert_equal a, Gem::Specification.find_inactive_by_path('foo')
3555
3569
  a.activate
3556
- assert_equal nil, Gem::Specification.find_inactive_by_path('foo')
3570
+ assert_nil Gem::Specification.find_inactive_by_path('foo')
3557
3571
  end
3558
3572
 
3559
3573
  def test_load_default_gem
@@ -55,7 +55,7 @@ class TestGemStreamUI < Gem::TestCase
55
55
 
56
56
  Timeout.timeout(0.1) do
57
57
  answer = @sui.ask("what is your favorite color?")
58
- assert_equal nil, answer
58
+ assert_nil answer
59
59
  end
60
60
  end
61
61
 
@@ -79,7 +79,7 @@ class TestGemStreamUI < Gem::TestCase
79
79
 
80
80
  Timeout.timeout(0.1) do
81
81
  answer = @sui.ask_for_password("what is the airspeed velocity of an unladen swallow?")
82
- assert_equal nil, answer
82
+ assert_nil answer
83
83
  end
84
84
  end
85
85
 
@@ -85,4 +85,9 @@ Without the wrapping, the text might not look good in the RSS feed.
85
85
  s = "ab" * 500_001
86
86
  assert_equal "Truncating desc to 1,000,000 characters:\n#{s[0, 1_000_000]}", truncate_text(s, "desc", 1_000_000)
87
87
  end
88
+
89
+ def test_clean_text
90
+ assert_equal ".]2;nyan.", clean_text("\e]2;nyan\a")
91
+ end
92
+
88
93
  end
@@ -42,8 +42,10 @@ class TestGemUtil < Gem::TestCase
42
42
 
43
43
  assert_equal File.join(@tempdir, 'd'), paths[0]
44
44
  assert_equal @tempdir, paths[1]
45
- # File.expand_path with macOS returns `/private` prefix.
46
- if RUBY_PLATFORM !~ /darwin/
45
+ if File.respond_to?(:realpath)
46
+ assert_equal File.realpath(Dir.tmpdir), paths[2]
47
+ assert_equal File.realpath("..", Dir.tmpdir), paths[3]
48
+ elsif RUBY_PLATFORM !~ /darwin/
47
49
  assert_equal Dir.tmpdir, paths[2]
48
50
  assert_equal '/', paths[3]
49
51
  end
@@ -46,6 +46,11 @@ class TestGemVersion < Gem::TestCase
46
46
  def test_class_correct
47
47
  assert_equal true, Gem::Version.correct?("5.1")
48
48
  assert_equal false, Gem::Version.correct?("an incorrect version")
49
+
50
+ expected = "nil versions are discouraged and will be deprecated in Rubygems 4\n"
51
+ assert_output nil, expected do
52
+ Gem::Version.correct?(nil)
53
+ end
49
54
  end
50
55
 
51
56
  def test_class_new_subclass
@@ -157,11 +162,25 @@ class TestGemVersion < Gem::TestCase
157
162
 
158
163
  def test_approximate_recommendation
159
164
  assert_approximate_equal "~> 1.0", "1"
165
+ assert_approximate_satisfies_itself "1"
166
+
160
167
  assert_approximate_equal "~> 1.0", "1.0"
168
+ assert_approximate_satisfies_itself "1.0"
169
+
161
170
  assert_approximate_equal "~> 1.2", "1.2"
171
+ assert_approximate_satisfies_itself "1.2"
172
+
162
173
  assert_approximate_equal "~> 1.2", "1.2.0"
174
+ assert_approximate_satisfies_itself "1.2.0"
175
+
163
176
  assert_approximate_equal "~> 1.2", "1.2.3"
164
- assert_approximate_equal "~> 1.2", "1.2.3.a.4"
177
+ assert_approximate_satisfies_itself "1.2.3"
178
+
179
+ assert_approximate_equal "~> 1.2.a", "1.2.3.a.4"
180
+ assert_approximate_satisfies_itself "1.2.3.a.4"
181
+
182
+ assert_approximate_equal "~> 1.9.a", "1.9.0.dev"
183
+ assert_approximate_satisfies_itself "1.9.0.dev"
165
184
  end
166
185
 
167
186
  def test_to_s
@@ -197,12 +216,20 @@ class TestGemVersion < Gem::TestCase
197
216
  assert v(version).prerelease?, "#{version} is a prerelease"
198
217
  end
199
218
 
200
- # Assert that +expected+ is the "approximate" recommendation for +version".
219
+ # Assert that +expected+ is the "approximate" recommendation for +version+.
201
220
 
202
221
  def assert_approximate_equal expected, version
203
222
  assert_equal expected, v(version).approximate_recommendation
204
223
  end
205
224
 
225
+ # Assert that the "approximate" recommendation for +version+ satifies +version+.
226
+
227
+ def assert_approximate_satisfies_itself version
228
+ gem_version = v(version)
229
+
230
+ assert Gem::Requirement.new(gem_version.approximate_recommendation).satisfied_by?(gem_version)
231
+ end
232
+
206
233
  # Assert that bumping the +unbumped+ version yields the +expected+.
207
234
 
208
235
  def assert_bumped_version_equal expected, unbumped
data/util/ci CHANGED
@@ -49,6 +49,7 @@ when %w(before_script)
49
49
  if TOOL.rubygems?
50
50
  run('gem', %W(uninstall executable-hooks gem-wrappers -x --force -i #{`gem env home`.strip}@global))
51
51
  run('gem', %W(install rake -v #{'~> 10.5'} --no-document))
52
+ run('gem', %W(install bundler -v #{'1.16.6'} --no-document))
52
53
  run('gem', %W(install hoe -v #{'3.15.0'} --no-document))
53
54
  run('gem', %w(install hoe-travis --no-document))
54
55
  run('gem', %W(install minitest -v #{'~> 4.7'} --no-document))
@@ -3,10 +3,14 @@ require 'json'
3
3
  require 'net/http'
4
4
  require 'uri'
5
5
 
6
- json = Net::HTTP.get(URI('https://spdx.org/licenses/licenses.json'))
7
- licenses = JSON.parse(json)['licenses'].map do |licenseObject|
6
+ licenses_json = Net::HTTP.get(URI('https://spdx.org/licenses/licenses.json'))
7
+ licenses = JSON.parse(licenses_json)['licenses'].map do |licenseObject|
8
8
  licenseObject['licenseId']
9
9
  end
10
+ exceptions_json = Net::HTTP.get(URI('https://spdx.org/licenses/exceptions.json'))
11
+ exceptions = JSON.parse(exceptions_json)['exceptions'].map do |exceptionObject|
12
+ exceptionObject['licenseExceptionId']
13
+ end
10
14
 
11
15
  open 'lib/rubygems/util/licenses.rb', 'w' do |io|
12
16
  io.write <<-RUBY
@@ -20,16 +24,21 @@ class Gem::Licenses
20
24
 
21
25
  # Software Package Data Exchange (SPDX) standard open-source software
22
26
  # license identifiers
23
- IDENTIFIERS = %w(
27
+ LICENSE_IDENTIFIERS = %w(
24
28
  #{licenses.sort.join "\n "}
25
29
  ).freeze
26
30
 
31
+ # exception identifiers
32
+ EXCEPTION_IDENTIFIERS = %w(
33
+ #{exceptions.sort.join "\n "}
34
+ ).freeze
35
+
27
36
  REGEXP = %r{
28
37
  \\A
29
38
  (
30
- \#{Regexp.union(IDENTIFIERS)}
39
+ \#{Regexp.union(LICENSE_IDENTIFIERS)}
31
40
  \\+?
32
- (\\s WITH \\s .+)?
41
+ (\\s WITH \\s \#{Regexp.union(EXCEPTION_IDENTIFIERS)})?
33
42
  | \#{NONSTANDARD}
34
43
  )
35
44
  \\Z
@@ -40,7 +49,7 @@ class Gem::Licenses
40
49
  end
41
50
 
42
51
  def self.suggestions(license)
43
- by_distance = IDENTIFIERS.group_by do |identifier|
52
+ by_distance = LICENSE_IDENTIFIERS.group_by do |identifier|
44
53
  levenshtein_distance(identifier, license)
45
54
  end
46
55
  lowest = by_distance.keys.min
@@ -5,14 +5,12 @@ require 'fileutils'
5
5
 
6
6
  URIS = [
7
7
  URI('https://rubygems.org'),
8
+ URI('https://www.rubygems.org'),
8
9
  URI('https://index.rubygems.org'),
9
10
  URI('https://staging.rubygems.org'),
10
- URI('https://fastly.rubygems.org'),
11
- URI('https://rubygems.global.ssl.fastly.net'),
12
11
  ]
13
12
 
14
13
  HOSTNAMES_TO_MAP = [
15
- 'rubygems.global.ssl.fastly.net',
16
14
  'rubygems.org',
17
15
  'index.rubygems.org'
18
16
  ]
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubygems-update
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.6
4
+ version: 2.7.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jim Weirich
8
8
  - Chad Fowler
9
9
  - Eric Hodel
10
- autorequire:
10
+ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2018-02-16 00:00:00.000000000 Z
13
+ date: 2020-12-09 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: builder
@@ -102,14 +102,14 @@ dependencies:
102
102
  requirements:
103
103
  - - "~>"
104
104
  - !ruby/object:Gem::Version
105
- version: '3.16'
105
+ version: '3.15'
106
106
  type: :development
107
107
  prerelease: false
108
108
  version_requirements: !ruby/object:Gem::Requirement
109
109
  requirements:
110
110
  - - "~>"
111
111
  - !ruby/object:Gem::Version
112
- version: '3.16'
112
+ version: '3.15'
113
113
  description: ''
114
114
  email:
115
115
  - rubygems-developers@rubyforge.org
@@ -386,6 +386,7 @@ files:
386
386
  - bundler/man/bundle-check.ronn
387
387
  - bundler/man/bundle-clean.ronn
388
388
  - bundler/man/bundle-config.ronn
389
+ - bundler/man/bundle-doctor.ronn
389
390
  - bundler/man/bundle-exec.ronn
390
391
  - bundler/man/bundle-gem.ronn
391
392
  - bundler/man/bundle-info.ronn
@@ -571,9 +572,8 @@ files:
571
572
  - lib/rubygems/spec_fetcher.rb
572
573
  - lib/rubygems/specification.rb
573
574
  - lib/rubygems/ssl_certs/.document
574
- - lib/rubygems/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem
575
- - lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem
576
- - lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem
575
+ - lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA.pem
576
+ - lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem
577
577
  - lib/rubygems/stub_specification.rb
578
578
  - lib/rubygems/syck_hack.rb
579
579
  - lib/rubygems/test_case.rb
@@ -785,7 +785,7 @@ licenses:
785
785
  - Ruby
786
786
  - MIT
787
787
  metadata: {}
788
- post_install_message:
788
+ post_install_message:
789
789
  rdoc_options:
790
790
  - "--main"
791
791
  - README.md
@@ -803,9 +803,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
803
803
  - !ruby/object:Gem::Version
804
804
  version: '0'
805
805
  requirements: []
806
- rubyforge_project:
807
- rubygems_version: 2.7.4
808
- signing_key:
806
+ rubyforge_project:
807
+ rubygems_version: 2.7.6.2
808
+ signing_key:
809
809
  specification_version: 4
810
810
  summary: ''
811
811
  test_files: []