rubygems-update 3.2.32 → 3.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (177) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +154 -4
  3. data/CONTRIBUTING.md +40 -10
  4. data/Manifest.txt +11 -5
  5. data/POLICIES.md +22 -8
  6. data/README.md +9 -7
  7. data/UPGRADING.md +5 -81
  8. data/bin/gem +1 -6
  9. data/bundler/CHANGELOG.md +70 -0
  10. data/bundler/exe/bundle +7 -8
  11. data/bundler/lib/bundler/.document +1 -0
  12. data/bundler/lib/bundler/build_metadata.rb +2 -2
  13. data/bundler/lib/bundler/cli/doctor.rb +3 -2
  14. data/bundler/lib/bundler/cli/gem.rb +2 -1
  15. data/bundler/lib/bundler/cli/info.rb +6 -1
  16. data/bundler/lib/bundler/cli/install.rb +2 -0
  17. data/bundler/lib/bundler/cli/update.rb +2 -2
  18. data/bundler/lib/bundler/cli.rb +6 -0
  19. data/bundler/lib/bundler/compact_index_client/updater.rb +0 -5
  20. data/bundler/lib/bundler/definition.rb +29 -53
  21. data/bundler/lib/bundler/dependency.rb +5 -7
  22. data/bundler/lib/bundler/dsl.rb +18 -30
  23. data/bundler/lib/bundler/endpoint_specification.rb +0 -8
  24. data/bundler/lib/bundler/environment_preserver.rb +4 -1
  25. data/bundler/lib/bundler/fetcher/compact_index.rb +9 -4
  26. data/bundler/lib/bundler/fetcher.rb +2 -5
  27. data/bundler/lib/bundler/injector.rb +10 -1
  28. data/bundler/lib/bundler/installer/gem_installer.rb +1 -6
  29. data/bundler/lib/bundler/installer.rb +1 -4
  30. data/bundler/lib/bundler/lazy_specification.rb +17 -1
  31. data/bundler/lib/bundler/lockfile_parser.rb +10 -13
  32. data/bundler/lib/bundler/man/bundle-add.1 +10 -2
  33. data/bundler/lib/bundler/man/bundle-add.1.ronn +7 -1
  34. data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
  35. data/bundler/lib/bundler/man/bundle-cache.1 +1 -1
  36. data/bundler/lib/bundler/man/bundle-check.1 +1 -1
  37. data/bundler/lib/bundler/man/bundle-clean.1 +1 -1
  38. data/bundler/lib/bundler/man/bundle-config.1 +3 -3
  39. data/bundler/lib/bundler/man/bundle-config.1.ronn +3 -3
  40. data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
  41. data/bundler/lib/bundler/man/bundle-exec.1 +1 -1
  42. data/bundler/lib/bundler/man/bundle-gem.1 +1 -1
  43. data/bundler/lib/bundler/man/bundle-info.1 +1 -1
  44. data/bundler/lib/bundler/man/bundle-init.1 +1 -1
  45. data/bundler/lib/bundler/man/bundle-inject.1 +1 -1
  46. data/bundler/lib/bundler/man/bundle-install.1 +2 -2
  47. data/bundler/lib/bundler/man/bundle-install.1.ronn +2 -2
  48. data/bundler/lib/bundler/man/bundle-list.1 +1 -1
  49. data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
  50. data/bundler/lib/bundler/man/bundle-open.1 +1 -1
  51. data/bundler/lib/bundler/man/bundle-outdated.1 +1 -1
  52. data/bundler/lib/bundler/man/bundle-platform.1 +1 -1
  53. data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
  54. data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
  55. data/bundler/lib/bundler/man/bundle-show.1 +1 -1
  56. data/bundler/lib/bundler/man/bundle-update.1 +2 -2
  57. data/bundler/lib/bundler/man/bundle-update.1.ronn +2 -1
  58. data/bundler/lib/bundler/man/bundle-viz.1 +1 -1
  59. data/bundler/lib/bundler/man/bundle.1 +1 -1
  60. data/bundler/lib/bundler/man/gemfile.5 +28 -2
  61. data/bundler/lib/bundler/man/gemfile.5.ronn +9 -1
  62. data/bundler/lib/bundler/plugin/api/source.rb +1 -0
  63. data/bundler/lib/bundler/plugin/installer.rb +1 -1
  64. data/bundler/lib/bundler/process_lock.rb +1 -1
  65. data/bundler/lib/bundler/psyched_yaml.rb +1 -13
  66. data/bundler/lib/bundler/resolver.rb +34 -31
  67. data/bundler/lib/bundler/rubygems_ext.rb +2 -0
  68. data/bundler/lib/bundler/rubygems_gem_installer.rb +1 -1
  69. data/bundler/lib/bundler/rubygems_integration.rb +11 -48
  70. data/bundler/lib/bundler/self_manager.rb +76 -0
  71. data/bundler/lib/bundler/shared_helpers.rb +4 -12
  72. data/bundler/lib/bundler/source/git/git_proxy.rb +2 -2
  73. data/bundler/lib/bundler/source/metadata.rb +1 -1
  74. data/bundler/lib/bundler/source/rubygems.rb +16 -12
  75. data/bundler/lib/bundler/source/rubygems_aggregate.rb +1 -1
  76. data/bundler/lib/bundler/source.rb +1 -1
  77. data/bundler/lib/bundler/source_list.rb +7 -29
  78. data/bundler/lib/bundler/templates/Executable.bundler +1 -1
  79. data/bundler/lib/bundler/templates/Gemfile +0 -2
  80. data/bundler/lib/bundler/templates/gems.rb +0 -3
  81. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +10 -1
  82. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +2 -2
  83. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +1 -1
  84. data/bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
  85. data/bundler/lib/bundler/templates/newgem/test/minitest/{newgem_test.rb.tt → test_newgem.rb.tt} +1 -1
  86. data/bundler/lib/bundler/ui/shell.rb +1 -1
  87. data/bundler/lib/bundler/vendor/.document +1 -0
  88. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +6 -6
  89. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +5 -3
  90. data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +6 -2
  91. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +6 -0
  92. data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +9 -4
  93. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +19 -1
  94. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +22 -4
  95. data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
  96. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
  97. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +17 -80
  98. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +0 -1
  99. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +5 -6
  100. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +0 -1
  101. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +0 -1
  102. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
  103. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +0 -1
  104. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +1 -14
  105. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +1 -12
  106. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  107. data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +84 -0
  108. data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +22 -0
  109. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +0 -1
  110. data/bundler/lib/bundler/version.rb +1 -1
  111. data/bundler/lib/bundler.rb +9 -3
  112. data/hide_lib_for_update/note.txt +0 -4
  113. data/lib/rubygems/bundler_version_finder.rb +10 -42
  114. data/lib/rubygems/command_manager.rb +4 -2
  115. data/lib/rubygems/commands/install_command.rb +5 -2
  116. data/lib/rubygems/commands/pristine_command.rb +8 -2
  117. data/lib/rubygems/commands/server_command.rb +14 -77
  118. data/lib/rubygems/commands/setup_command.rb +21 -22
  119. data/lib/rubygems/commands/update_command.rb +9 -4
  120. data/lib/rubygems/defaults.rb +2 -20
  121. data/lib/rubygems/dependency.rb +7 -7
  122. data/lib/rubygems/deprecate.rb +53 -6
  123. data/lib/rubygems/errors.rb +0 -3
  124. data/lib/rubygems/exceptions.rb +31 -1
  125. data/lib/rubygems/ext/builder.rb +5 -3
  126. data/lib/rubygems/install_update_options.rb +11 -2
  127. data/lib/rubygems/installer.rb +14 -12
  128. data/lib/rubygems/name_tuple.rb +2 -3
  129. data/lib/rubygems/optparse/.document +1 -0
  130. data/lib/rubygems/path_support.rb +1 -6
  131. data/lib/rubygems/platform.rb +4 -0
  132. data/lib/rubygems/remote_fetcher.rb +1 -1
  133. data/lib/rubygems/requirement.rb +1 -1
  134. data/lib/rubygems/resolver/installer_set.rb +1 -1
  135. data/lib/rubygems/security/policy.rb +1 -3
  136. data/lib/rubygems/security.rb +14 -7
  137. data/lib/rubygems/source.rb +3 -1
  138. data/lib/rubygems/spec_fetcher.rb +1 -1
  139. data/lib/rubygems/specification.rb +21 -21
  140. data/lib/rubygems/stub_specification.rb +1 -1
  141. data/lib/rubygems/text.rb +21 -20
  142. data/lib/rubygems/tsort/.document +1 -0
  143. data/lib/rubygems/uninstaller.rb +4 -1
  144. data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
  145. data/lib/rubygems/version.rb +2 -0
  146. data/lib/rubygems.rb +48 -56
  147. data/rubygems-update.gemspec +1 -1
  148. data/setup.rb +1 -6
  149. data/test/rubygems/helper.rb +20 -6
  150. data/test/rubygems/test_config.rb +2 -2
  151. data/test/rubygems/test_exit.rb +11 -0
  152. data/test/rubygems/test_gem.rb +46 -76
  153. data/test/rubygems/test_gem_bundler_version_finder.rb +22 -43
  154. data/test/rubygems/test_gem_command_manager.rb +28 -2
  155. data/test/rubygems/test_gem_commands_install_command.rb +33 -0
  156. data/test/rubygems/test_gem_commands_open_command.rb +1 -1
  157. data/test/rubygems/test_gem_commands_server_command.rb +4 -46
  158. data/test/rubygems/test_gem_commands_setup_command.rb +17 -0
  159. data/test/rubygems/test_gem_commands_update_command.rb +2 -2
  160. data/test/rubygems/test_gem_dependency.rb +4 -8
  161. data/test/rubygems/test_gem_installer.rb +10 -5
  162. data/test/rubygems/test_gem_path_support.rb +2 -6
  163. data/test/rubygems/test_gem_remote_fetcher.rb +15 -0
  164. data/test/rubygems/test_gem_requirement.rb +0 -1
  165. data/test/rubygems/test_gem_security.rb +1 -1
  166. data/test/rubygems/test_gem_specification.rb +16 -25
  167. data/test/rubygems/test_gem_stream_ui.rb +1 -1
  168. data/test/rubygems/test_gem_text.rb +6 -0
  169. data/test/rubygems/test_kernel.rb +1 -13
  170. data/test/rubygems/test_project_sanity.rb +1 -1
  171. data/test/rubygems/test_require.rb +4 -58
  172. data/test/rubygems/test_rubygems.rb +23 -0
  173. metadata +14 -8
  174. data/bundler/lib/bundler/gemdeps.rb +0 -29
  175. data/lib/rubygems/server.rb +0 -882
  176. data/test/rubygems/bogussources.rb +0 -9
  177. data/test/rubygems/test_gem_server.rb +0 -608
@@ -9,53 +9,11 @@ class TestGemCommandsServerCommand < Gem::TestCase
9
9
  @cmd = Gem::Commands::ServerCommand.new
10
10
  end
11
11
 
12
- def test_handle_options
13
- @cmd.send :handle_options, %w[-p 8808 --no-daemon]
14
-
15
- assert_equal false, @cmd.options[:daemon]
16
- assert_equal [], @cmd.options[:gemdir]
17
- assert_equal 8808, @cmd.options[:port]
18
-
19
- @cmd.send :handle_options, %w[-p 9999 -d /nonexistent --daemon]
20
-
21
- assert_equal true, @cmd.options[:daemon]
22
- assert_equal [File.expand_path('/nonexistent')], @cmd.options[:gemdir]
23
- assert_equal 9999, @cmd.options[:port]
24
- end
25
-
26
- def test_handle_options_gemdir
27
- @cmd.send :handle_options, %w[--dir a --dir b]
28
-
29
- assert_equal [File.expand_path('a'), File.expand_path('b')],
30
- @cmd.options[:gemdir]
31
- end
32
-
33
- def test_handle_options_port
34
- @cmd.send :handle_options, %w[-p 0]
35
- assert_equal 0, @cmd.options[:port]
36
-
37
- @cmd.send :handle_options, %w[-p 65535]
38
- assert_equal 65535, @cmd.options[:port]
39
-
40
- begin
41
- @cmd.send :handle_options, %w[-p discard]
42
- assert_equal 9, @cmd.options[:port]
43
- rescue Gem::OptionParser::InvalidArgument
44
- # for container environment on GitHub Actions
45
- end
46
-
47
- e = assert_raise Gem::OptionParser::InvalidArgument do
48
- @cmd.send :handle_options, %w[-p nonexistent]
49
- end
50
-
51
- assert_equal 'invalid argument: -p nonexistent: no such named service',
52
- e.message
53
-
54
- e = assert_raise Gem::OptionParser::InvalidArgument do
55
- @cmd.send :handle_options, %w[-p 65536]
12
+ def test_execute
13
+ use_ui @ui do
14
+ @cmd.execute
56
15
  end
57
16
 
58
- assert_equal 'invalid argument: -p 65536: not a port number',
59
- e.message
17
+ assert_match %r{Install the rubygems-server}i, @ui.error
60
18
  end
61
19
  end
@@ -156,6 +156,21 @@ class TestGemCommandsSetupCommand < Gem::TestCase
156
156
  assert_match %r{\A#!\s*#{bin_env}#{ruby_exec}}, File.read(gem_bin_path)
157
157
  end
158
158
 
159
+ def test_destdir_flag_does_not_try_to_write_to_the_default_gem_home
160
+ FileUtils.chmod "-w", File.join(@gemhome, "plugins")
161
+
162
+ destdir = File.join(@tempdir, 'foo')
163
+
164
+ @cmd.options[:destdir] = destdir
165
+ @cmd.execute
166
+
167
+ spec = Gem::Specification.load("bundler/bundler.gemspec")
168
+
169
+ spec.executables.each do |e|
170
+ assert_path_exist File.join destdir, @gemhome.gsub(/^[a-zA-Z]:/, ''), 'gems', spec.full_name, spec.bindir, e
171
+ end
172
+ end
173
+
159
174
  def test_files_in
160
175
  assert_equal %w[rubygems.rb rubygems/requirement.rb rubygems/ssl_certs/rubygems.org/foo.pem],
161
176
  @cmd.files_in('lib').sort
@@ -245,6 +260,8 @@ class TestGemCommandsSetupCommand < Gem::TestCase
245
260
  def test_install_default_bundler_gem_with_destdir_flag
246
261
  @cmd.extend FileUtils
247
262
 
263
+ FileUtils.chmod "-w", @gemhome
264
+
248
265
  destdir = File.join(@tempdir, 'foo')
249
266
  bin_dir = File.join(destdir, 'bin')
250
267
 
@@ -579,7 +579,7 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
579
579
 
580
580
  expected = {
581
581
  :args => [],
582
- :document => %w[rdoc ri],
582
+ :document => %w[ri],
583
583
  :force => false,
584
584
  :system => true,
585
585
  }
@@ -598,7 +598,7 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
598
598
 
599
599
  expected = {
600
600
  :args => [],
601
- :document => %w[rdoc ri],
601
+ :document => %w[ri],
602
602
  :force => false,
603
603
  :system => "1.3.7",
604
604
  }
@@ -358,16 +358,12 @@ class TestGemDependency < Gem::TestCase
358
358
 
359
359
  assert_equal [b, b_1], dep.to_specs
360
360
 
361
- Gem::BundlerVersionFinder.stub(:bundler_version_with_reason, ["3.5", "reason"]) do
362
- e = assert_raise Gem::MissingSpecVersionError do
363
- dep.to_specs
364
- end
365
-
366
- assert_match "Could not find 'bundler' (3.5) required by reason.\nTo update to the latest version installed on your system, run `bundle update --bundler`.\nTo install the missing version, run `gem install bundler:3.5`\n", e.message
361
+ Gem::BundlerVersionFinder.stub(:bundler_version, Gem::Version.new("1")) do
362
+ assert_equal [b_1, b], dep.to_specs
367
363
  end
368
364
 
369
- Gem::BundlerVersionFinder.stub(:bundler_version_with_reason, ["2.0.0.pre.1", "reason"]) do
370
- assert_equal [b], dep.to_specs
365
+ Gem::BundlerVersionFinder.stub(:bundler_version, Gem::Version.new("2.0.0.pre.1")) do
366
+ assert_equal [b, b_1], dep.to_specs
371
367
  end
372
368
  end
373
369
 
@@ -948,7 +948,6 @@ gem 'other', version
948
948
 
949
949
  Gem.pre_install do
950
950
  assert_path_not_exist cache_file, 'cache file must not exist yet'
951
- assert_path_not_exist spec_file, 'spec file must not exist yet'
952
951
  true
953
952
  end
954
953
 
@@ -956,13 +955,11 @@ gem 'other', version
956
955
  assert_path_exist gemdir, 'gem install dir must exist'
957
956
  assert_path_exist rakefile, 'gem executable must exist'
958
957
  assert_path_not_exist stub_exe, 'gem executable must not exist'
959
- assert_path_not_exist spec_file, 'spec file must not exist yet'
960
958
  true
961
959
  end
962
960
 
963
961
  Gem.post_install do
964
962
  assert_path_exist cache_file, 'cache file must exist'
965
- assert_path_exist spec_file, 'spec file must exist'
966
963
  end
967
964
 
968
965
  @newspec = nil
@@ -1237,7 +1234,11 @@ gem 'other', version
1237
1234
  end
1238
1235
 
1239
1236
  def test_install_post_build_false
1240
- installer = setup_base_installer
1237
+ @spec = util_spec 'a'
1238
+
1239
+ util_build_gem @spec
1240
+
1241
+ installer = util_installer @spec, @gemhome
1241
1242
 
1242
1243
  Gem.post_build do
1243
1244
  false
@@ -1279,7 +1280,11 @@ gem 'other', version
1279
1280
  end
1280
1281
 
1281
1282
  def test_install_pre_install_false
1282
- installer = setup_base_installer
1283
+ @spec = util_spec 'a'
1284
+
1285
+ util_build_gem @spec
1286
+
1287
+ installer = util_installer @spec, @gemhome
1283
1288
 
1284
1289
  Gem.pre_install do
1285
1290
  false
@@ -16,7 +16,7 @@ class TestGemPathSupport < Gem::TestCase
16
16
 
17
17
  assert_equal ENV["GEM_HOME"], ps.home
18
18
 
19
- expected = util_path
19
+ expected = ENV["GEM_PATH"].split(File::PATH_SEPARATOR)
20
20
  assert_equal expected, ps.path, "defaults to GEM_PATH"
21
21
  end
22
22
 
@@ -25,7 +25,7 @@ class TestGemPathSupport < Gem::TestCase
25
25
 
26
26
  assert_equal File.join(@tempdir, "foo"), ps.home
27
27
 
28
- expected = util_path + [File.join(@tempdir, 'foo')]
28
+ expected = ENV["GEM_PATH"].split(File::PATH_SEPARATOR) + [File.join(@tempdir, 'foo')]
29
29
  assert_equal expected, ps.path
30
30
  end
31
31
 
@@ -102,10 +102,6 @@ class TestGemPathSupport < Gem::TestCase
102
102
  end
103
103
  end
104
104
 
105
- def util_path
106
- ENV["GEM_PATH"].split(File::PATH_SEPARATOR)
107
- end
108
-
109
105
  def test_initialize_spec
110
106
  ENV["GEM_SPEC_CACHE"] = nil
111
107
 
@@ -173,6 +173,21 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
173
173
  assert_equal 'hello', File.read(path)
174
174
  end
175
175
 
176
+ def test_cache_update_path_with_utf8_internal_encoding
177
+ with_internal_encoding('UTF-8') do
178
+ uri = URI 'http://example/file'
179
+ path = File.join @tempdir, 'file'
180
+ data = String.new("\xC8").force_encoding(Encoding::BINARY)
181
+
182
+ fetcher = util_fuck_with_fetcher data
183
+
184
+ written_data = fetcher.cache_update_path uri, path
185
+
186
+ assert_equal data, written_data
187
+ assert_equal data, File.binread(path)
188
+ end
189
+ end
190
+
176
191
  def test_cache_update_path_no_update
177
192
  uri = URI 'http://example/file'
178
193
  path = File.join @tempdir, 'file'
@@ -253,7 +253,6 @@ class TestGemRequirement < Gem::TestCase
253
253
  assert_satisfied_by "1.0.0.0", "= 1.0"
254
254
  assert_satisfied_by "10.3.2", "!= 9.3.4"
255
255
  assert_satisfied_by "10.3.2", "> 9.3.2"
256
- assert_satisfied_by "10.3.2", "> 9.3.2"
257
256
  assert_satisfied_by " 9.3.2", ">= 9.3.2"
258
257
  assert_satisfied_by "9.3.2 ", ">= 9.3.2"
259
258
  assert_satisfied_by "", "= 0"
@@ -196,7 +196,7 @@ class TestGemSecurity < Gem::TestCase
196
196
 
197
197
  def test_class_sign
198
198
  issuer = PUBLIC_CERT.subject
199
- signee = OpenSSL::X509::Name.parse "/CN=signee/DC=example"
199
+ signee = OpenSSL::X509::Name.new([["CN", "signee"], ["DC", "example"]])
200
200
 
201
201
  key = PRIVATE_KEY
202
202
  cert = OpenSSL::X509::Certificate.new
@@ -147,6 +147,7 @@ end
147
147
  end
148
148
 
149
149
  def test_find_in_unresolved_tree_is_not_exponentiental
150
+ pend "currently slower in CI on TruffleRuby" if RUBY_ENGINE == 'truffleruby'
150
151
  num_of_pkg = 7
151
152
  num_of_version_per_pkg = 3
152
153
  packages = (0..num_of_pkg).map do |pkgi|
@@ -873,24 +874,21 @@ dependencies: []
873
874
  end
874
875
 
875
876
  def test_self_load_utf8_with_ascii_encoding
876
- int_enc = Encoding.default_internal
877
- silence_warnings { Encoding.default_internal = 'US-ASCII' }
878
-
879
- spec2 = @a2.dup
880
- bin = "\u5678".dup
881
- spec2.authors = [bin]
882
- full_path = spec2.spec_file
883
- write_file full_path do |io|
884
- io.write spec2.to_ruby_for_cache.force_encoding('BINARY').sub("\\u{5678}", bin.force_encoding('BINARY'))
885
- end
877
+ with_internal_encoding('US-ASCII') do
878
+ spec2 = @a2.dup
879
+ bin = "\u5678".dup
880
+ spec2.authors = [bin]
881
+ full_path = spec2.spec_file
882
+ write_file full_path do |io|
883
+ io.write spec2.to_ruby_for_cache.force_encoding('BINARY').sub("\\u{5678}", bin.force_encoding('BINARY'))
884
+ end
886
885
 
887
- spec = Gem::Specification.load full_path
886
+ spec = Gem::Specification.load full_path
888
887
 
889
- spec2.files.clear
888
+ spec2.files.clear
890
889
 
891
- assert_equal spec2, spec
892
- ensure
893
- silence_warnings { Encoding.default_internal = int_enc }
890
+ assert_equal spec2, spec
891
+ end
894
892
  end
895
893
 
896
894
  def test_self_load_legacy_ruby
@@ -944,7 +942,7 @@ dependencies: []
944
942
  end
945
943
 
946
944
  def test_self_outdated_and_latest_remotes
947
- specs = spec_fetcher do |fetcher|
945
+ spec_fetcher do |fetcher|
948
946
  fetcher.download 'a', 4
949
947
  fetcher.download 'b', 3
950
948
 
@@ -953,8 +951,8 @@ dependencies: []
953
951
  end
954
952
 
955
953
  expected = [
956
- [specs['a-3.a'], v(4)],
957
- [specs['b-2'], v(3)],
954
+ [Gem::Specification.stubs.find {|s| s.full_name == 'a-3.a' }, v(4)],
955
+ [Gem::Specification.stubs.find {|s| s.full_name == 'b-2' }, v(3)],
958
956
  ]
959
957
 
960
958
  assert_equal expected, Gem::Specification.outdated_and_latest_version.to_a
@@ -3745,11 +3743,4 @@ end
3745
3743
  end
3746
3744
  end
3747
3745
  end
3748
-
3749
- def silence_warnings
3750
- old_verbose, $VERBOSE = $VERBOSE, false
3751
- yield
3752
- ensure
3753
- $VERBOSE = old_verbose
3754
- end
3755
3746
  end
@@ -5,7 +5,7 @@ require 'timeout'
5
5
 
6
6
  class TestGemStreamUI < Gem::TestCase
7
7
  # increase timeout with MJIT for --jit-wait testing
8
- mjit_enabled = defined?(RubyVM::JIT) ? RubyVM::JIT.enabled? : defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled?
8
+ mjit_enabled = defined?(RubyVM::MJIT) ? RubyVM::MJIT.enabled? : defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled?
9
9
  SHORT_TIMEOUT = (RUBY_ENGINE == "ruby" && !mjit_enabled) ? 0.1 : 1.0
10
10
 
11
11
  module IsTty
@@ -83,6 +83,12 @@ Without the wrapping, the text might not look good in the RSS feed.
83
83
  assert_equal 7, levenshtein_distance("zentest", "xxxxxxx")
84
84
  end
85
85
 
86
+ def test_levenshtein_distance_all
87
+ assert_equal 6, levenshtein_distance("algorithm", "altruistic")
88
+ assert_equal 3, levenshtein_distance("saturday", "sunday")
89
+ assert_equal 3, levenshtein_distance("kitten", "sitting")
90
+ end
91
+
86
92
  def test_truncate_text
87
93
  assert_equal "abc", truncate_text("abc", "desc")
88
94
  assert_equal "Truncating desc to 2 characters:\nab", truncate_text("abc", "desc", 2)
@@ -117,20 +117,8 @@ class TestKernel < Gem::TestCase
117
117
  assert $:.any? {|p| %r{bundler-1/lib} =~ p }
118
118
  end
119
119
 
120
- def test_gem_bundler_missing_bundler_version
121
- Gem::BundlerVersionFinder.stub(:bundler_version_with_reason, ["55", "reason"]) do
122
- quick_gem 'bundler', '1'
123
- quick_gem 'bundler', '2.a'
124
-
125
- e = assert_raise Gem::MissingSpecVersionError do
126
- gem('bundler')
127
- end
128
- assert_match "Could not find 'bundler' (55) required by reason.", e.message
129
- end
130
- end
131
-
132
120
  def test_gem_bundler_inferred_bundler_version
133
- Gem::BundlerVersionFinder.stub(:bundler_version_with_reason, ["1", "reason"]) do
121
+ Gem::BundlerVersionFinder.stub(:bundler_version, Gem::Version.new("1")) do
134
122
  quick_gem 'bundler', '1'
135
123
  quick_gem 'bundler', '2.a'
136
124
 
@@ -13,7 +13,7 @@ class TestProjectSanity < Gem::TestCase
13
13
  end
14
14
 
15
15
  def test_require_rubygems_package
16
- err, status = Open3.capture2e(*ruby_with_rubygems_in_load_path, "--disable-gems", "-e", "'require \"rubygems/package\"'")
16
+ err, status = Open3.capture2e(*ruby_with_rubygems_in_load_path, "--disable-gems", "-e", "require \"rubygems/package\"")
17
17
 
18
18
  assert status.success?, err
19
19
  end
@@ -24,16 +24,6 @@ class TestGemRequire < Gem::TestCase
24
24
  end
25
25
  end
26
26
 
27
- def setup
28
- super
29
-
30
- @old_loaded_features = $LOADED_FEATURES.dup
31
- assert_raise LoadError do
32
- require 'test_gem_require_a'
33
- end
34
- $LOADED_FEATURES.replace @old_loaded_features
35
- end
36
-
37
27
  def assert_require(path)
38
28
  assert require(path), "'#{path}' was already required"
39
29
  end
@@ -88,8 +78,6 @@ class TestGemRequire < Gem::TestCase
88
78
  FileUtils.mkdir_p File.dirname c_rb
89
79
  File.open(c_rb, 'w') {|f| f.write "class Object; HELLO = 'world' end" }
90
80
 
91
- lp = $LOAD_PATH.dup
92
-
93
81
  # Pretend to provide a commandline argument that overrides a file in gem b
94
82
  $LOAD_PATH.unshift dash_i_arg
95
83
 
@@ -98,7 +86,6 @@ class TestGemRequire < Gem::TestCase
98
86
  assert_equal "world", ::Object::HELLO
99
87
  assert_equal %w[a-1 b-1], loaded_spec_names
100
88
  ensure
101
- $LOAD_PATH.replace lp
102
89
  Object.send :remove_const, :HELLO if Object.const_defined? :HELLO
103
90
  end
104
91
 
@@ -132,8 +119,6 @@ class TestGemRequire < Gem::TestCase
132
119
 
133
120
  assert_require 'test_gem_require_a'
134
121
 
135
- lp = $LOAD_PATH.dup
136
-
137
122
  # Pretend to provide a commandline argument that overrides a file in gem b
138
123
  $LOAD_PATH.unshift dash_i_arg
139
124
 
@@ -142,7 +127,6 @@ class TestGemRequire < Gem::TestCase
142
127
  assert_equal "world", ::Object::HELLO
143
128
  assert_equal %w[a-1 b-1], loaded_spec_names
144
129
  ensure
145
- $LOAD_PATH.replace lp
146
130
  Object.send :remove_const, :HELLO if Object.const_defined? :HELLO
147
131
  end
148
132
 
@@ -153,16 +137,10 @@ class TestGemRequire < Gem::TestCase
153
137
  dash_i_ext_arg = util_install_extension_file('a')
154
138
  dash_i_lib_arg = util_install_ruby_file('a')
155
139
 
156
- lp = $LOAD_PATH.dup
157
-
158
- begin
159
- $LOAD_PATH.unshift dash_i_lib_arg
160
- $LOAD_PATH.unshift dash_i_ext_arg
161
- assert_require 'a'
162
- assert_match(/a\.rb$/, $LOADED_FEATURES.last)
163
- ensure
164
- $LOAD_PATH.replace lp
165
- end
140
+ $LOAD_PATH.unshift dash_i_lib_arg
141
+ $LOAD_PATH.unshift dash_i_ext_arg
142
+ assert_require 'a'
143
+ assert_match(/a\.rb$/, $LOADED_FEATURES.last)
166
144
  end
167
145
 
168
146
  def test_concurrent_require
@@ -618,31 +596,6 @@ class TestGemRequire < Gem::TestCase
618
596
  assert_empty unresolved_names
619
597
  end
620
598
 
621
- def test_require_bundler_missing_bundler_version
622
- Gem::BundlerVersionFinder.stub(:bundler_version_with_reason, ["55", "reason"]) do
623
- b1 = util_spec('bundler', '1.999999999', nil, "lib/bundler/setup.rb")
624
- b2a = util_spec('bundler', '2.a', nil, "lib/bundler/setup.rb")
625
- install_specs b1, b2a
626
-
627
- e = assert_raise Gem::MissingSpecVersionError do
628
- gem('bundler')
629
- end
630
- assert_match "Could not find 'bundler' (55) required by reason.", e.message
631
- end
632
- end
633
-
634
- def test_require_bundler_with_bundler_version
635
- Gem::BundlerVersionFinder.stub(:bundler_version_with_reason, ["1", "reason"]) do
636
- b1 = util_spec('bundler', '1.999999999', nil, "lib/bundler/setup.rb")
637
- b2 = util_spec('bundler', '2', nil, "lib/bundler/setup.rb")
638
- install_specs b1, b2
639
-
640
- $:.clear
641
- assert_require 'bundler/setup'
642
- assert_equal %w[bundler-1.999999999], loaded_spec_names
643
- end
644
- end
645
-
646
599
  # uplevel is 2.5+ only
647
600
  if RUBY_VERSION >= "2.5"
648
601
  ["", "Kernel."].each do |prefix|
@@ -722,13 +675,6 @@ class TestGemRequire < Gem::TestCase
722
675
  !ENV["GEM_COMMAND"].nil?
723
676
  end
724
677
 
725
- def silence_warnings
726
- old_verbose, $VERBOSE = $VERBOSE, false
727
- yield
728
- ensure
729
- $VERBOSE = old_verbose
730
- end
731
-
732
678
  def util_install_extension_file(name)
733
679
  spec = quick_gem name
734
680
  util_build_gem spec
@@ -22,6 +22,29 @@ class GemTest < Gem::TestCase
22
22
  "the problem and ask for help."
23
23
  end
24
24
 
25
+ def test_operating_system_customizing_default_dir
26
+ pend "does not apply to truffleruby" if RUBY_ENGINE == 'truffleruby'
27
+ pend "loads a custom defaults/jruby file that gets in the middle" if RUBY_ENGINE == 'jruby'
28
+
29
+ # On a non existing default dir, there should be no gems
30
+
31
+ path = util_install_operating_system_rb <<-RUBY
32
+ module Gem
33
+ def self.default_dir
34
+ File.expand_path("foo")
35
+ end
36
+ end
37
+ RUBY
38
+
39
+ output = Gem::Util.popen(
40
+ *ruby_with_rubygems_and_fake_operating_system_in_load_path(path),
41
+ '-e',
42
+ "require \"rubygems\"; puts Gem::Specification.stubs.map(&:full_name)",
43
+ {:err => [:child, :out]}
44
+ ).strip
45
+ assert_empty output
46
+ end
47
+
25
48
  private
26
49
 
27
50
  def util_install_operating_system_rb(content)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubygems-update
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.32
4
+ version: 3.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jim Weirich
@@ -16,7 +16,7 @@ authors:
16
16
  autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
- date: 2021-11-23 00:00:00.000000000 Z
19
+ date: 2021-12-24 00:00:00.000000000 Z
20
20
  dependencies: []
21
21
  description: |-
22
22
  A package (also known as a library) contains a set of functionality
@@ -74,6 +74,7 @@ files:
74
74
  - bundler/exe/bundle
75
75
  - bundler/exe/bundler
76
76
  - bundler/lib/bundler.rb
77
+ - bundler/lib/bundler/.document
77
78
  - bundler/lib/bundler/build_metadata.rb
78
79
  - bundler/lib/bundler/capistrano.rb
79
80
  - bundler/lib/bundler/cli.rb
@@ -134,7 +135,6 @@ files:
134
135
  - bundler/lib/bundler/gem_helpers.rb
135
136
  - bundler/lib/bundler/gem_tasks.rb
136
137
  - bundler/lib/bundler/gem_version_promoter.rb
137
- - bundler/lib/bundler/gemdeps.rb
138
138
  - bundler/lib/bundler/graph.rb
139
139
  - bundler/lib/bundler/index.rb
140
140
  - bundler/lib/bundler/injector.rb
@@ -222,6 +222,7 @@ files:
222
222
  - bundler/lib/bundler/rubygems_gem_installer.rb
223
223
  - bundler/lib/bundler/rubygems_integration.rb
224
224
  - bundler/lib/bundler/runtime.rb
225
+ - bundler/lib/bundler/self_manager.rb
225
226
  - bundler/lib/bundler/settings.rb
226
227
  - bundler/lib/bundler/settings/validator.rb
227
228
  - bundler/lib/bundler/setup.rb
@@ -268,11 +269,12 @@ files:
268
269
  - bundler/lib/bundler/templates/newgem/newgem.gemspec.tt
269
270
  - bundler/lib/bundler/templates/newgem/rspec.tt
270
271
  - bundler/lib/bundler/templates/newgem/rubocop.yml.tt
272
+ - bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt
271
273
  - bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt
272
274
  - bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt
273
275
  - bundler/lib/bundler/templates/newgem/standard.yml.tt
274
- - bundler/lib/bundler/templates/newgem/test/minitest/newgem_test.rb.tt
275
276
  - bundler/lib/bundler/templates/newgem/test/minitest/test_helper.rb.tt
277
+ - bundler/lib/bundler/templates/newgem/test/minitest/test_newgem.rb.tt
276
278
  - bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt
277
279
  - bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt
278
280
  - bundler/lib/bundler/templates/newgem/travis.yml.tt
@@ -281,6 +283,7 @@ files:
281
283
  - bundler/lib/bundler/ui/shell.rb
282
284
  - bundler/lib/bundler/ui/silent.rb
283
285
  - bundler/lib/bundler/uri_credentials_filter.rb
286
+ - bundler/lib/bundler/vendor/.document
284
287
  - bundler/lib/bundler/vendor/connection_pool/LICENSE
285
288
  - bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb
286
289
  - bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb
@@ -363,6 +366,8 @@ files:
363
366
  - bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb
364
367
  - bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb
365
368
  - bundler/lib/bundler/vendor/uri/lib/uri/version.rb
369
+ - bundler/lib/bundler/vendor/uri/lib/uri/ws.rb
370
+ - bundler/lib/bundler/vendor/uri/lib/uri/wss.rb
366
371
  - bundler/lib/bundler/vendored_fileutils.rb
367
372
  - bundler/lib/bundler/vendored_molinillo.rb
368
373
  - bundler/lib/bundler/vendored_persistent.rb
@@ -451,6 +456,7 @@ files:
451
456
  - lib/rubygems/name_tuple.rb
452
457
  - lib/rubygems/openssl.rb
453
458
  - lib/rubygems/optparse.rb
459
+ - lib/rubygems/optparse/.document
454
460
  - lib/rubygems/optparse/COPYING
455
461
  - lib/rubygems/optparse/lib/optionparser.rb
456
462
  - lib/rubygems/optparse/lib/optparse.rb
@@ -546,7 +552,6 @@ files:
546
552
  - lib/rubygems/security/signer.rb
547
553
  - lib/rubygems/security/trust_dir.rb
548
554
  - lib/rubygems/security_option.rb
549
- - lib/rubygems/server.rb
550
555
  - lib/rubygems/source.rb
551
556
  - lib/rubygems/source/git.rb
552
557
  - lib/rubygems/source/installed.rb
@@ -564,9 +569,11 @@ files:
564
569
  - lib/rubygems/stub_specification.rb
565
570
  - lib/rubygems/text.rb
566
571
  - lib/rubygems/tsort.rb
572
+ - lib/rubygems/tsort/.document
567
573
  - lib/rubygems/tsort/LICENSE.txt
568
574
  - lib/rubygems/tsort/lib/tsort.rb
569
575
  - lib/rubygems/uninstaller.rb
576
+ - lib/rubygems/unknown_command_spell_checker.rb
570
577
  - lib/rubygems/uri.rb
571
578
  - lib/rubygems/uri_formatter.rb
572
579
  - lib/rubygems/user_interaction.rb
@@ -582,7 +589,6 @@ files:
582
589
  - test/rubygems/alternate_cert_32.pem
583
590
  - test/rubygems/alternate_key.pem
584
591
  - test/rubygems/bad_rake.rb
585
- - test/rubygems/bogussources.rb
586
592
  - test/rubygems/ca_cert.pem
587
593
  - test/rubygems/child_cert.pem
588
594
  - test/rubygems/child_cert_32.pem
@@ -639,6 +645,7 @@ files:
639
645
  - test/rubygems/test_bundled_ca.rb
640
646
  - test/rubygems/test_config.rb
641
647
  - test/rubygems/test_deprecate.rb
648
+ - test/rubygems/test_exit.rb
642
649
  - test/rubygems/test_gem.rb
643
650
  - test/rubygems/test_gem_available_set.rb
644
651
  - test/rubygems/test_gem_bundler_version_finder.rb
@@ -741,7 +748,6 @@ files:
741
748
  - test/rubygems/test_gem_security_policy.rb
742
749
  - test/rubygems/test_gem_security_signer.rb
743
750
  - test/rubygems/test_gem_security_trust_dir.rb
744
- - test/rubygems/test_gem_server.rb
745
751
  - test/rubygems/test_gem_silent_ui.rb
746
752
  - test/rubygems/test_gem_source.rb
747
753
  - test/rubygems/test_gem_source_fetch_problem.rb
@@ -798,7 +804,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
798
804
  - !ruby/object:Gem::Version
799
805
  version: '0'
800
806
  requirements: []
801
- rubygems_version: 3.2.32
807
+ rubygems_version: 3.3.2
802
808
  signing_key:
803
809
  specification_version: 4
804
810
  summary: RubyGems is a package management framework for Ruby.