rubygems-update 3.4.19 → 3.4.21

Sign up to get free protection for your applications and to get access to all the features.
Files changed (200) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +58 -0
  3. data/Manifest.txt +1 -0
  4. data/bundler/CHANGELOG.md +62 -2
  5. data/bundler/lib/bundler/build_metadata.rb +3 -3
  6. data/bundler/lib/bundler/cli/check.rb +1 -1
  7. data/bundler/lib/bundler/cli/gem.rb +1 -3
  8. data/bundler/lib/bundler/cli/info.rb +1 -1
  9. data/bundler/lib/bundler/cli/install.rb +2 -2
  10. data/bundler/lib/bundler/cli/lock.rb +26 -23
  11. data/bundler/lib/bundler/cli/open.rb +5 -7
  12. data/bundler/lib/bundler/cli/update.rb +1 -0
  13. data/bundler/lib/bundler/definition.rb +42 -25
  14. data/bundler/lib/bundler/env.rb +2 -2
  15. data/bundler/lib/bundler/fetcher/base.rb +2 -2
  16. data/bundler/lib/bundler/fetcher/compact_index.rb +1 -5
  17. data/bundler/lib/bundler/fetcher/dependency.rb +1 -1
  18. data/bundler/lib/bundler/fetcher.rb +31 -30
  19. data/bundler/lib/bundler/gem_version_promoter.rb +2 -2
  20. data/bundler/lib/bundler/index.rb +62 -31
  21. data/bundler/lib/bundler/injector.rb +1 -1
  22. data/bundler/lib/bundler/installer/parallel_installer.rb +0 -26
  23. data/bundler/lib/bundler/installer/standalone.rb +15 -1
  24. data/bundler/lib/bundler/lockfile_parser.rb +32 -39
  25. data/bundler/lib/bundler/man/bundle-add.1 +1 -1
  26. data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
  27. data/bundler/lib/bundler/man/bundle-cache.1 +1 -1
  28. data/bundler/lib/bundler/man/bundle-check.1 +1 -1
  29. data/bundler/lib/bundler/man/bundle-clean.1 +1 -1
  30. data/bundler/lib/bundler/man/bundle-config.1 +1 -1
  31. data/bundler/lib/bundler/man/bundle-console.1 +1 -1
  32. data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
  33. data/bundler/lib/bundler/man/bundle-exec.1 +2 -2
  34. data/bundler/lib/bundler/man/bundle-exec.1.ronn +2 -3
  35. data/bundler/lib/bundler/man/bundle-gem.1 +1 -1
  36. data/bundler/lib/bundler/man/bundle-help.1 +1 -1
  37. data/bundler/lib/bundler/man/bundle-info.1 +1 -1
  38. data/bundler/lib/bundler/man/bundle-init.1 +1 -1
  39. data/bundler/lib/bundler/man/bundle-inject.1 +1 -1
  40. data/bundler/lib/bundler/man/bundle-install.1 +1 -1
  41. data/bundler/lib/bundler/man/bundle-list.1 +1 -1
  42. data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
  43. data/bundler/lib/bundler/man/bundle-open.1 +1 -1
  44. data/bundler/lib/bundler/man/bundle-outdated.1 +1 -1
  45. data/bundler/lib/bundler/man/bundle-platform.1 +1 -1
  46. data/bundler/lib/bundler/man/bundle-plugin.1 +17 -17
  47. data/bundler/lib/bundler/man/bundle-plugin.1.ronn +5 -5
  48. data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
  49. data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
  50. data/bundler/lib/bundler/man/bundle-show.1 +1 -1
  51. data/bundler/lib/bundler/man/bundle-update.1 +1 -1
  52. data/bundler/lib/bundler/man/bundle-version.1 +1 -1
  53. data/bundler/lib/bundler/man/bundle-viz.1 +1 -1
  54. data/bundler/lib/bundler/man/bundle.1 +1 -1
  55. data/bundler/lib/bundler/man/gemfile.5 +12 -1
  56. data/bundler/lib/bundler/man/gemfile.5.ronn +5 -0
  57. data/bundler/lib/bundler/plugin.rb +1 -1
  58. data/bundler/lib/bundler/resolver/package.rb +5 -0
  59. data/bundler/lib/bundler/resolver.rb +45 -10
  60. data/bundler/lib/bundler/retry.rb +1 -1
  61. data/bundler/lib/bundler/ruby_dsl.rb +23 -2
  62. data/bundler/lib/bundler/ruby_version.rb +8 -1
  63. data/bundler/lib/bundler/self_manager.rb +2 -0
  64. data/bundler/lib/bundler/settings.rb +86 -25
  65. data/bundler/lib/bundler/shared_helpers.rb +16 -1
  66. data/bundler/lib/bundler/source/git/git_proxy.rb +27 -6
  67. data/bundler/lib/bundler/source/rubygems.rb +22 -25
  68. data/bundler/lib/bundler/spec_set.rb +2 -2
  69. data/bundler/lib/bundler/stub_specification.rb +4 -2
  70. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +6 -2
  71. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +1 -1
  72. data/bundler/lib/bundler/version.rb +1 -1
  73. data/bundler/lib/bundler/yaml_serializer.rb +6 -7
  74. data/lib/rubygems/available_set.rb +1 -1
  75. data/lib/rubygems/basic_specification.rb +3 -3
  76. data/lib/rubygems/command.rb +17 -20
  77. data/lib/rubygems/command_manager.rb +1 -1
  78. data/lib/rubygems/commands/cert_command.rb +3 -3
  79. data/lib/rubygems/commands/check_command.rb +5 -1
  80. data/lib/rubygems/commands/cleanup_command.rb +1 -1
  81. data/lib/rubygems/commands/contents_command.rb +1 -1
  82. data/lib/rubygems/commands/dependency_command.rb +3 -4
  83. data/lib/rubygems/commands/help_command.rb +2 -2
  84. data/lib/rubygems/commands/open_command.rb +1 -3
  85. data/lib/rubygems/commands/owner_command.rb +9 -11
  86. data/lib/rubygems/commands/setup_command.rb +8 -8
  87. data/lib/rubygems/commands/specification_command.rb +5 -1
  88. data/lib/rubygems/commands/stale_command.rb +1 -1
  89. data/lib/rubygems/commands/uninstall_command.rb +6 -7
  90. data/lib/rubygems/commands/unpack_command.rb +4 -6
  91. data/lib/rubygems/commands/update_command.rb +3 -3
  92. data/lib/rubygems/commands/yank_command.rb +1 -1
  93. data/lib/rubygems/config_file.rb +60 -13
  94. data/lib/rubygems/core_ext/kernel_gem.rb +2 -2
  95. data/lib/rubygems/core_ext/kernel_require.rb +1 -1
  96. data/lib/rubygems/core_ext/kernel_warn.rb +4 -5
  97. data/lib/rubygems/defaults.rb +6 -2
  98. data/lib/rubygems/dependency_installer.rb +8 -12
  99. data/lib/rubygems/deprecate.rb +4 -3
  100. data/lib/rubygems/doctor.rb +1 -1
  101. data/lib/rubygems/errors.rb +1 -1
  102. data/lib/rubygems/exceptions.rb +1 -1
  103. data/lib/rubygems/ext/builder.rb +5 -4
  104. data/lib/rubygems/ext/cargo_builder.rb +2 -2
  105. data/lib/rubygems/gem_runner.rb +5 -1
  106. data/lib/rubygems/gemcutter_utilities.rb +4 -4
  107. data/lib/rubygems/indexer.rb +1 -1
  108. data/lib/rubygems/install_update_options.rb +1 -1
  109. data/lib/rubygems/installer.rb +17 -19
  110. data/lib/rubygems/name_tuple.rb +1 -1
  111. data/lib/rubygems/package/old.rb +1 -1
  112. data/lib/rubygems/package/tar_reader/entry.rb +18 -20
  113. data/lib/rubygems/package/tar_reader.rb +0 -5
  114. data/lib/rubygems/package/tar_writer.rb +1 -1
  115. data/lib/rubygems/package.rb +18 -12
  116. data/lib/rubygems/platform.rb +6 -2
  117. data/lib/rubygems/query_utils.rb +5 -5
  118. data/lib/rubygems/remote_fetcher.rb +10 -2
  119. data/lib/rubygems/request_set/gem_dependency_api.rb +1 -1
  120. data/lib/rubygems/request_set.rb +2 -1
  121. data/lib/rubygems/requirement.rb +1 -1
  122. data/lib/rubygems/resolver/activation_request.rb +2 -4
  123. data/lib/rubygems/resolver/api_set.rb +2 -1
  124. data/lib/rubygems/resolver/api_specification.rb +1 -1
  125. data/lib/rubygems/resolver/installed_specification.rb +1 -1
  126. data/lib/rubygems/resolver/local_specification.rb +1 -1
  127. data/lib/rubygems/s3_uri_signer.rb +1 -1
  128. data/lib/rubygems/security/signer.rb +10 -2
  129. data/lib/rubygems/security/trust_dir.rb +8 -10
  130. data/lib/rubygems/security.rb +2 -2
  131. data/lib/rubygems/security_option.rb +1 -1
  132. data/lib/rubygems/source/local.rb +34 -37
  133. data/lib/rubygems/source.rb +7 -3
  134. data/lib/rubygems/source_list.rb +2 -2
  135. data/lib/rubygems/spec_fetcher.rb +29 -33
  136. data/lib/rubygems/specification.rb +43 -36
  137. data/lib/rubygems/specification_policy.rb +36 -35
  138. data/lib/rubygems/stub_specification.rb +13 -10
  139. data/lib/rubygems/uninstaller.rb +2 -2
  140. data/lib/rubygems/update_suggestion.rb +1 -1
  141. data/lib/rubygems/user_interaction.rb +2 -2
  142. data/lib/rubygems/util/licenses.rb +115 -0
  143. data/lib/rubygems/util.rb +5 -1
  144. data/lib/rubygems/validator.rb +5 -7
  145. data/lib/rubygems/version.rb +3 -2
  146. data/lib/rubygems/yaml_serializer.rb +88 -0
  147. data/lib/rubygems.rb +8 -10
  148. data/rubygems-update.gemspec +1 -1
  149. data/setup.rb +2 -0
  150. data/test/rubygems/bundler_test_gem.rb +6 -3
  151. data/test/rubygems/helper.rb +38 -32
  152. data/test/rubygems/package/tar_test_case.rb +2 -2
  153. data/test/rubygems/test_gem.rb +55 -30
  154. data/test/rubygems/test_gem_command.rb +3 -1
  155. data/test/rubygems/test_gem_commands_build_command.rb +2 -1
  156. data/test/rubygems/test_gem_commands_cert_command.rb +22 -22
  157. data/test/rubygems/test_gem_commands_cleanup_command.rb +2 -2
  158. data/test/rubygems/test_gem_commands_environment_command.rb +2 -1
  159. data/test/rubygems/test_gem_commands_exec_command.rb +5 -1
  160. data/test/rubygems/test_gem_commands_install_command.rb +3 -3
  161. data/test/rubygems/test_gem_commands_open_command.rb +5 -2
  162. data/test/rubygems/test_gem_commands_pristine_command.rb +2 -2
  163. data/test/rubygems/test_gem_commands_push_command.rb +7 -6
  164. data/test/rubygems/test_gem_commands_signin_command.rb +8 -8
  165. data/test/rubygems/test_gem_commands_stale_command.rb +1 -1
  166. data/test/rubygems/test_gem_commands_uninstall_command.rb +1 -1
  167. data/test/rubygems/test_gem_commands_unpack_command.rb +2 -2
  168. data/test/rubygems/test_gem_config_file.rb +46 -12
  169. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +28 -12
  170. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +1 -1
  171. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +16 -14
  172. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +1 -1
  173. data/test/rubygems/test_gem_ext_cargo_builder.rb +2 -2
  174. data/test/rubygems/test_gem_gemcutter_utilities.rb +8 -5
  175. data/test/rubygems/test_gem_indexer.rb +1 -1
  176. data/test/rubygems/test_gem_install_update_options.rb +3 -3
  177. data/test/rubygems/test_gem_installer.rb +15 -15
  178. data/test/rubygems/test_gem_package.rb +152 -36
  179. data/test/rubygems/test_gem_package_old.rb +1 -1
  180. data/test/rubygems/test_gem_package_tar_header.rb +10 -10
  181. data/test/rubygems/test_gem_package_tar_reader.rb +4 -4
  182. data/test/rubygems/test_gem_package_tar_reader_entry.rb +53 -1
  183. data/test/rubygems/test_gem_package_tar_writer.rb +41 -41
  184. data/test/rubygems/test_gem_rdoc.rb +2 -2
  185. data/test/rubygems/test_gem_remote_fetcher.rb +34 -34
  186. data/test/rubygems/test_gem_request.rb +5 -5
  187. data/test/rubygems/test_gem_request_connection_pools.rb +2 -1
  188. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +14 -7
  189. data/test/rubygems/test_gem_requirement.rb +1 -1
  190. data/test/rubygems/test_gem_security.rb +2 -2
  191. data/test/rubygems/test_gem_security_signer.rb +2 -2
  192. data/test/rubygems/test_gem_security_trust_dir.rb +6 -6
  193. data/test/rubygems/test_gem_spec_fetcher.rb +2 -2
  194. data/test/rubygems/test_gem_specification.rb +71 -35
  195. data/test/rubygems/test_gem_update_suggestion.rb +23 -23
  196. data/test/rubygems/test_gem_util.rb +2 -2
  197. data/test/rubygems/test_gem_version.rb +4 -2
  198. data/test/rubygems/test_require.rb +4 -6
  199. data/test/rubygems/utilities.rb +4 -3
  200. metadata +4 -3
@@ -54,7 +54,7 @@ class TestGemCommandsPristineCommand < Gem::TestCase
54
54
  end
55
55
 
56
56
  def test_execute_user_install
57
- FileUtils.chmod 0555, @gemhome
57
+ FileUtils.chmod 0o555, @gemhome
58
58
 
59
59
  a = util_spec "a" do |s|
60
60
  s.executables = %w[foo]
@@ -99,7 +99,7 @@ class TestGemCommandsPristineCommand < Gem::TestCase
99
99
  assert_equal "Restored #{a.full_name}", out.shift
100
100
  assert_empty out, out.inspect
101
101
  ensure
102
- FileUtils.chmod(0755, @gemhome)
102
+ FileUtils.chmod(0o755, @gemhome)
103
103
  end
104
104
 
105
105
  def test_execute_all
@@ -3,6 +3,7 @@
3
3
  require_relative "helper"
4
4
  require_relative "multifactor_auth_utilities"
5
5
  require "rubygems/commands/push_command"
6
+ require "rubygems/config_file"
6
7
 
7
8
  class TestGemCommandsPushCommand < Gem::TestCase
8
9
  def setup
@@ -107,7 +108,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
107
108
  end
108
109
 
109
110
  @response = "Successfully registered gem: freewill (1.0.0)"
110
- @fetcher.data["#{@spec.metadata['allowed_push_host']}/api/v1/gems"] = HTTPResponseFactory.create(body: @response, code: 200, msg: "OK")
111
+ @fetcher.data["#{@spec.metadata["allowed_push_host"]}/api/v1/gems"] = HTTPResponseFactory.create(body: @response, code: 200, msg: "OK")
111
112
  @fetcher.data["#{Gem.host}/api/v1/gems"] =
112
113
  ["fail", 500, "Internal Server Error"]
113
114
 
@@ -158,7 +159,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
158
159
  }
159
160
 
160
161
  File.open Gem.configuration.credentials_path, "w" do |f|
161
- f.write keys.to_yaml
162
+ f.write Gem::ConfigFile.dump_with_rubygems_yaml(keys)
162
163
  end
163
164
  Gem.configuration.load_api_keys
164
165
 
@@ -192,7 +193,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
192
193
  }
193
194
 
194
195
  File.open Gem.configuration.credentials_path, "w" do |f|
195
- f.write keys.to_yaml
196
+ f.write Gem::ConfigFile.dump_with_rubygems_yaml(keys)
196
197
  end
197
198
  Gem.configuration.load_api_keys
198
199
 
@@ -233,7 +234,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
233
234
  }
234
235
 
235
236
  File.open Gem.configuration.credentials_path, "w" do |f|
236
- f.write keys.to_yaml
237
+ f.write Gem::ConfigFile.dump_with_rubygems_yaml(keys)
237
238
  end
238
239
  Gem.configuration.load_api_keys
239
240
 
@@ -274,7 +275,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
274
275
  }
275
276
 
276
277
  File.open Gem.configuration.credentials_path, "w" do |f|
277
- f.write keys.to_yaml
278
+ f.write Gem::ConfigFile.dump_with_rubygems_yaml(keys)
278
279
  end
279
280
  Gem.configuration.load_api_keys
280
281
 
@@ -304,7 +305,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
304
305
  }
305
306
 
306
307
  File.open Gem.configuration.credentials_path, "w" do |f|
307
- f.write keys.to_yaml
308
+ f.write Gem::ConfigFile.dump_with_rubygems_yaml(keys)
308
309
  end
309
310
  Gem.configuration.load_api_keys
310
311
 
@@ -109,7 +109,7 @@ class TestGemCommandsSigninCommand < Gem::TestCase
109
109
  def test_execute_with_key_name_and_scope
110
110
  email = "you@example.com"
111
111
  password = "secret"
112
- api_key = "1234"
112
+ api_key = "1234abcd"
113
113
  fetcher = Gem::RemoteFetcher.fetcher
114
114
 
115
115
  key_name_ui = Gem::MockGemUi.new "#{email}\n#{password}\ntest-key\n\ny\n\n\n\n\n\n"
@@ -134,7 +134,7 @@ class TestGemCommandsSigninCommand < Gem::TestCase
134
134
  def test_execute_with_key_name_scope_and_mfa_level_of_ui_only
135
135
  email = "you@example.com"
136
136
  password = "secret"
137
- api_key = "1234"
137
+ api_key = "1234abcd"
138
138
  fetcher = Gem::RemoteFetcher.fetcher
139
139
  mfa_level = "ui_only"
140
140
 
@@ -161,7 +161,7 @@ class TestGemCommandsSigninCommand < Gem::TestCase
161
161
  def test_execute_with_key_name_scope_and_mfa_level_of_gem_signin
162
162
  email = "you@example.com"
163
163
  password = "secret"
164
- api_key = "1234"
164
+ api_key = "1234abcd"
165
165
  fetcher = Gem::RemoteFetcher.fetcher
166
166
  mfa_level = "ui_and_gem_signin"
167
167
 
@@ -188,7 +188,7 @@ class TestGemCommandsSigninCommand < Gem::TestCase
188
188
  def test_execute_with_warnings
189
189
  email = "you@example.com"
190
190
  password = "secret"
191
- api_key = "1234"
191
+ api_key = "1234abcd"
192
192
  fetcher = Gem::RemoteFetcher.fetcher
193
193
  mfa_level = "disabled"
194
194
  warning = "/[WARNING/] For protection of your account and gems"
@@ -204,14 +204,14 @@ class TestGemCommandsSigninCommand < Gem::TestCase
204
204
 
205
205
  email = "you@example.com"
206
206
  password = "secret"
207
- api_key = "1234"
207
+ api_key = "1234abcd"
208
208
  fetcher = Gem::RemoteFetcher.fetcher
209
209
 
210
210
  key_name_ui = Gem::MockGemUi.new "#{email}\n#{password}\ntest-key\n\ny\n\n\n\n\n\ny"
211
211
 
212
212
  # Set the expected response for the Web-API supplied
213
213
  ENV["RUBYGEMS_HOST"] = host
214
- data_key = "#{ENV['RUBYGEMS_HOST']}/api/v1/api_key"
214
+ data_key = "#{ENV["RUBYGEMS_HOST"]}/api/v1/api_key"
215
215
  fetcher.data[data_key] = HTTPResponseFactory.create(body: api_key, code: 200, msg: "OK")
216
216
 
217
217
  use_ui key_name_ui do
@@ -242,9 +242,9 @@ class TestGemCommandsSigninCommand < Gem::TestCase
242
242
 
243
243
  # Set the expected response for the Web-API supplied
244
244
  ENV["RUBYGEMS_HOST"] = host || Gem::DEFAULT_HOST
245
- data_key = "#{ENV['RUBYGEMS_HOST']}/api/v1/api_key"
245
+ data_key = "#{ENV["RUBYGEMS_HOST"]}/api/v1/api_key"
246
246
  fetcher.data[data_key] = response
247
- profile = "#{ENV['RUBYGEMS_HOST']}/api/v1/profile/me.yaml"
247
+ profile = "#{ENV["RUBYGEMS_HOST"]}/api/v1/profile/me.yaml"
248
248
  fetcher.data[profile] = profile_response
249
249
  Gem::RemoteFetcher.fetcher = fetcher
250
250
 
@@ -29,7 +29,7 @@ class TestGemCommandsStaleCommand < Gem::TestCase
29
29
 
30
30
  filename = File.join(foo_bar.full_gem_path, file)
31
31
  FileUtils.mkdir_p File.dirname filename
32
- FileUtils.touch(filename, :mtime => Time.now - 86400)
32
+ FileUtils.touch(filename, :mtime => Time.now - 86_400)
33
33
  end
34
34
 
35
35
  use_ui @stub_ui do
@@ -158,7 +158,7 @@ class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
158
158
  @cmd.execute
159
159
 
160
160
  assert_equal false, File.exist?(formatted_executable)
161
- rescue
161
+ rescue StandardError
162
162
  Gem::Installer.exec_format = nil
163
163
  end
164
164
 
@@ -156,7 +156,7 @@ class TestGemCommandsUnpackCommand < Gem::TestCase
156
156
 
157
157
  util_make_gems
158
158
 
159
- FileUtils.chmod 0555, @gemhome
159
+ FileUtils.chmod 0o555, @gemhome
160
160
 
161
161
  @cmd.options[:args] = %w[b]
162
162
 
@@ -168,7 +168,7 @@ class TestGemCommandsUnpackCommand < Gem::TestCase
168
168
 
169
169
  assert File.exist?(File.join(@tempdir, "b-2")), "b should be unpacked"
170
170
  ensure
171
- FileUtils.chmod 0755, @gemhome
171
+ FileUtils.chmod 0o755, @gemhome
172
172
  end
173
173
 
174
174
  def test_execute_with_target_option
@@ -185,7 +185,7 @@ class TestGemConfigFile < Gem::TestCase
185
185
 
186
186
  temp_cred = File.join Gem.user_home, ".gem", "credentials"
187
187
  FileUtils.mkdir_p File.dirname(temp_cred)
188
- File.open temp_cred, "w", 0600 do |fp|
188
+ File.open temp_cred, "w", 0o600 do |fp|
189
189
  fp.puts ":rubygems_api_key: 701229f217cdf23b1344c7b4b54ca97"
190
190
  end
191
191
 
@@ -200,7 +200,7 @@ class TestGemConfigFile < Gem::TestCase
200
200
 
201
201
  @cfg.rubygems_api_key = "x"
202
202
 
203
- File.chmod 0644, @cfg.credentials_path
203
+ File.chmod 0o644, @cfg.credentials_path
204
204
 
205
205
  use_ui @ui do
206
206
  assert_raise Gem::MockGemUi::TermError do
@@ -323,15 +323,20 @@ if you believe they were disclosed to a third party.
323
323
  def test_load_api_keys
324
324
  temp_cred = File.join Gem.user_home, ".gem", "credentials"
325
325
  FileUtils.mkdir_p File.dirname(temp_cred)
326
- File.open temp_cred, "w", 0600 do |fp|
327
- fp.puts ":rubygems_api_key: 701229f217cdf23b1344c7b4b54ca97"
328
- fp.puts ":other: a5fdbb6ba150cbb83aad2bb2fede64c"
326
+ File.open temp_cred, "w", 0o600 do |fp|
327
+ fp.puts ":rubygems_api_key: rubygems_b9ce70c306b3a2e248679fbbbd66722d408d3c8c4f00566c"
328
+ fp.puts ":other: rubygems_9636a120106ea8b81fbc792188251738665711d2ece160c5"
329
+ fp.puts "http://localhost:3000: rubygems_be293ad9dd71550a012b17d848893b41960b811ce9312b47"
329
330
  end
330
331
 
331
332
  util_config_file
332
333
 
333
- assert_equal({ :rubygems => "701229f217cdf23b1344c7b4b54ca97",
334
- :other => "a5fdbb6ba150cbb83aad2bb2fede64c" }, @cfg.api_keys)
334
+ assert_equal(
335
+ { :rubygems => "rubygems_b9ce70c306b3a2e248679fbbbd66722d408d3c8c4f00566c",
336
+ :other => "rubygems_9636a120106ea8b81fbc792188251738665711d2ece160c5",
337
+ "http://localhost:3000" => "rubygems_be293ad9dd71550a012b17d848893b41960b811ce9312b47" },
338
+ @cfg.api_keys
339
+ )
335
340
  end
336
341
 
337
342
  def test_load_api_keys_bad_permission
@@ -339,7 +344,7 @@ if you believe they were disclosed to a third party.
339
344
 
340
345
  @cfg.rubygems_api_key = "x"
341
346
 
342
- File.chmod 0644, @cfg.credentials_path
347
+ File.chmod 0o644, @cfg.credentials_path
343
348
 
344
349
  assert_raise Gem::MockGemUi::TermError do
345
350
  @cfg.load_api_keys
@@ -372,7 +377,7 @@ if you believe they were disclosed to a third party.
372
377
  unless win_platform?
373
378
  stat = File.stat @cfg.credentials_path
374
379
 
375
- assert_equal 0600, stat.mode & 0600
380
+ assert_equal 0o600, stat.mode & 0o600
376
381
  end
377
382
  end
378
383
 
@@ -381,7 +386,7 @@ if you believe they were disclosed to a third party.
381
386
 
382
387
  @cfg.rubygems_api_key = "x"
383
388
 
384
- File.chmod 0644, @cfg.credentials_path
389
+ File.chmod 0o644, @cfg.credentials_path
385
390
 
386
391
  assert_raise Gem::MockGemUi::TermError do
387
392
  @cfg.rubygems_api_key = "y"
@@ -395,7 +400,7 @@ if you believe they were disclosed to a third party.
395
400
 
396
401
  stat = File.stat @cfg.credentials_path
397
402
 
398
- assert_equal 0644, stat.mode & 0644
403
+ assert_equal 0o644, stat.mode & 0o644
399
404
  end
400
405
 
401
406
  def test_write
@@ -471,7 +476,8 @@ if you believe they were disclosed to a third party.
471
476
  end
472
477
 
473
478
  begin
474
- verbose, $VERBOSE = $VERBOSE, nil
479
+ verbose = $VERBOSE
480
+ $VERBOSE = nil
475
481
 
476
482
  util_config_file
477
483
  ensure
@@ -514,4 +520,32 @@ if you believe they were disclosed to a third party.
514
520
  util_config_file
515
521
  assert_equal(true, @cfg.disable_default_gem_server)
516
522
  end
523
+
524
+ def test_load_with_rubygems_config_hash
525
+ yaml = <<~YAML
526
+ ---
527
+ :foo: bar
528
+ bar: 100
529
+ buzz: true
530
+ alpha: :bravo
531
+ charlie: ""
532
+ delta:
533
+ YAML
534
+ actual = Gem::ConfigFile.load_with_rubygems_config_hash(yaml)
535
+
536
+ assert_equal "bar", actual[:foo]
537
+ assert_equal 100, actual["bar"]
538
+ assert_equal true, actual["buzz"]
539
+ assert_equal :bravo, actual["alpha"]
540
+ assert_equal nil, actual["charlie"]
541
+ assert_equal nil, actual["delta"]
542
+ end
543
+
544
+ def test_dump_with_rubygems_yaml
545
+ symbol_key_hash = { :foo => "bar" }
546
+
547
+ actual = Gem::ConfigFile.dump_with_rubygems_yaml(symbol_key_hash)
548
+
549
+ assert_equal("---\n:foo: \"bar\"\n", actual)
550
+ end
517
551
  end
@@ -13,9 +13,9 @@ dependencies = [
13
13
 
14
14
  [[package]]
15
15
  name = "bindgen"
16
- version = "0.60.1"
16
+ version = "0.66.1"
17
17
  source = "registry+https://github.com/rust-lang/crates.io-index"
18
- checksum = "062dddbc1ba4aca46de6338e2bf87771414c335f7b2f2036e8f3e9befebf88e6"
18
+ checksum = "f2b84e06fc203107bfbad243f4aba2af864eb7db3b1cf46ea0a023b0b433d2a7"
19
19
  dependencies = [
20
20
  "bitflags",
21
21
  "cexpr",
@@ -28,13 +28,14 @@ dependencies = [
28
28
  "regex",
29
29
  "rustc-hash",
30
30
  "shlex",
31
+ "syn",
31
32
  ]
32
33
 
33
34
  [[package]]
34
35
  name = "bitflags"
35
- version = "1.3.2"
36
+ version = "2.3.3"
36
37
  source = "registry+https://github.com/rust-lang/crates.io-index"
37
- checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
38
+ checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42"
38
39
 
39
40
  [[package]]
40
41
  name = "cexpr"
@@ -133,40 +134,44 @@ checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
133
134
 
134
135
  [[package]]
135
136
  name = "proc-macro2"
136
- version = "1.0.47"
137
+ version = "1.0.66"
137
138
  source = "registry+https://github.com/rust-lang/crates.io-index"
138
- checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725"
139
+ checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9"
139
140
  dependencies = [
140
141
  "unicode-ident",
141
142
  ]
142
143
 
143
144
  [[package]]
144
145
  name = "quote"
145
- version = "1.0.21"
146
+ version = "1.0.32"
146
147
  source = "registry+https://github.com/rust-lang/crates.io-index"
147
- checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
148
+ checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965"
148
149
  dependencies = [
149
150
  "proc-macro2",
150
151
  ]
151
152
 
152
153
  [[package]]
153
154
  name = "rb-sys"
154
- version = "0.9.54"
155
+ version = "0.9.81"
155
156
  source = "registry+https://github.com/rust-lang/crates.io-index"
156
- checksum = "b3277448b8eee18de8bedb18883ae02dcd60d47922ddfc6ab408def77da0a9b4"
157
+ checksum = "a57240b308b155b09dce81e32829966a99f52d1088b45957e4283e526c5317a1"
157
158
  dependencies = [
158
159
  "rb-sys-build",
159
160
  ]
160
161
 
161
162
  [[package]]
162
163
  name = "rb-sys-build"
163
- version = "0.9.54"
164
+ version = "0.9.81"
164
165
  source = "registry+https://github.com/rust-lang/crates.io-index"
165
- checksum = "c9baae802c93180af02cccb21819589d109070f8e28e14e7070a9ffdeca9b464"
166
+ checksum = "f24ce877a4c5d07f06f6aa6fec3ac95e4b357b9f73b0f5445d8cbb7266d410e8"
166
167
  dependencies = [
167
168
  "bindgen",
169
+ "lazy_static",
170
+ "proc-macro2",
171
+ "quote",
168
172
  "regex",
169
173
  "shell-words",
174
+ "syn",
170
175
  ]
171
176
 
172
177
  [[package]]
@@ -204,6 +209,17 @@ version = "1.1.0"
204
209
  source = "registry+https://github.com/rust-lang/crates.io-index"
205
210
  checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3"
206
211
 
212
+ [[package]]
213
+ name = "syn"
214
+ version = "2.0.28"
215
+ source = "registry+https://github.com/rust-lang/crates.io-index"
216
+ checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567"
217
+ dependencies = [
218
+ "proc-macro2",
219
+ "quote",
220
+ "unicode-ident",
221
+ ]
222
+
207
223
  [[package]]
208
224
  name = "unicode-ident"
209
225
  version = "1.0.5"
@@ -7,4 +7,4 @@ edition = "2021"
7
7
  crate-type = ["cdylib"]
8
8
 
9
9
  [dependencies]
10
- rb-sys = "0.9.54"
10
+ rb-sys = "0.9.81"
@@ -13,9 +13,9 @@ dependencies = [
13
13
 
14
14
  [[package]]
15
15
  name = "bindgen"
16
- version = "0.60.1"
16
+ version = "0.66.1"
17
17
  source = "registry+https://github.com/rust-lang/crates.io-index"
18
- checksum = "062dddbc1ba4aca46de6338e2bf87771414c335f7b2f2036e8f3e9befebf88e6"
18
+ checksum = "f2b84e06fc203107bfbad243f4aba2af864eb7db3b1cf46ea0a023b0b433d2a7"
19
19
  dependencies = [
20
20
  "bitflags",
21
21
  "cexpr",
@@ -28,13 +28,14 @@ dependencies = [
28
28
  "regex",
29
29
  "rustc-hash",
30
30
  "shlex",
31
+ "syn",
31
32
  ]
32
33
 
33
34
  [[package]]
34
35
  name = "bitflags"
35
- version = "1.3.2"
36
+ version = "2.3.3"
36
37
  source = "registry+https://github.com/rust-lang/crates.io-index"
37
- checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
38
+ checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42"
38
39
 
39
40
  [[package]]
40
41
  name = "cexpr"
@@ -126,39 +127,40 @@ checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
126
127
 
127
128
  [[package]]
128
129
  name = "proc-macro2"
129
- version = "1.0.47"
130
+ version = "1.0.66"
130
131
  source = "registry+https://github.com/rust-lang/crates.io-index"
131
- checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725"
132
+ checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9"
132
133
  dependencies = [
133
134
  "unicode-ident",
134
135
  ]
135
136
 
136
137
  [[package]]
137
138
  name = "quote"
138
- version = "1.0.23"
139
+ version = "1.0.32"
139
140
  source = "registry+https://github.com/rust-lang/crates.io-index"
140
- checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b"
141
+ checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965"
141
142
  dependencies = [
142
143
  "proc-macro2",
143
144
  ]
144
145
 
145
146
  [[package]]
146
147
  name = "rb-sys"
147
- version = "0.9.65"
148
+ version = "0.9.81"
148
149
  source = "registry+https://github.com/rust-lang/crates.io-index"
149
- checksum = "e8fe617bad8e88fd7e5d6f432e35f09e5f94144dfb8e8ee4adde82fb920dc59b"
150
+ checksum = "a57240b308b155b09dce81e32829966a99f52d1088b45957e4283e526c5317a1"
150
151
  dependencies = [
151
152
  "rb-sys-build",
152
153
  ]
153
154
 
154
155
  [[package]]
155
156
  name = "rb-sys-build"
156
- version = "0.9.65"
157
+ version = "0.9.81"
157
158
  source = "registry+https://github.com/rust-lang/crates.io-index"
158
- checksum = "007e63597f91c711cbb299e60fecbdb6f5ad4a066d6a20c81943893f1584c895"
159
+ checksum = "f24ce877a4c5d07f06f6aa6fec3ac95e4b357b9f73b0f5445d8cbb7266d410e8"
159
160
  dependencies = [
160
161
  "bindgen",
161
162
  "lazy_static",
163
+ "proc-macro2",
162
164
  "quote",
163
165
  "regex",
164
166
  "shell-words",
@@ -209,9 +211,9 @@ checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3"
209
211
 
210
212
  [[package]]
211
213
  name = "syn"
212
- version = "1.0.107"
214
+ version = "2.0.28"
213
215
  source = "registry+https://github.com/rust-lang/crates.io-index"
214
- checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5"
216
+ checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567"
215
217
  dependencies = [
216
218
  "proc-macro2",
217
219
  "quote",
@@ -7,4 +7,4 @@ edition = "2021"
7
7
  crate-type = ["cdylib"]
8
8
 
9
9
  [dependencies]
10
- rb-sys = "0.9.65"
10
+ rb-sys = "0.9.81"
@@ -36,7 +36,7 @@ class TestGemExtCargoBuilder < Gem::TestCase
36
36
  end
37
37
 
38
38
  output = output.join "\n"
39
- bundle = File.join(@dest_path, "rust_ruby_example.#{RbConfig::CONFIG['DLEXT']}")
39
+ bundle = File.join(@dest_path, "rust_ruby_example.#{RbConfig::CONFIG["DLEXT"]}")
40
40
 
41
41
  assert_match(/Finished/, output)
42
42
  assert_match(/release/, output)
@@ -62,7 +62,7 @@ class TestGemExtCargoBuilder < Gem::TestCase
62
62
  end
63
63
 
64
64
  output = output.join "\n"
65
- bundle = File.join(@dest_path, "rust_ruby_example.#{RbConfig::CONFIG['DLEXT']}")
65
+ bundle = File.join(@dest_path, "rust_ruby_example.#{RbConfig::CONFIG["DLEXT"]}")
66
66
 
67
67
  assert_ffi_handle bundle, "hello_from_rubygems"
68
68
  assert_ffi_handle bundle, "hello_from_rubygems_version"
@@ -5,6 +5,7 @@ require_relative "multifactor_auth_utilities"
5
5
  require "rubygems"
6
6
  require "rubygems/command"
7
7
  require "rubygems/gemcutter_utilities"
8
+ require "rubygems/config_file"
8
9
 
9
10
  class TestGemGemcutterUtilities < Gem::TestCase
10
11
  def setup
@@ -41,7 +42,7 @@ class TestGemGemcutterUtilities < Gem::TestCase
41
42
  }
42
43
 
43
44
  File.open Gem.configuration.credentials_path, "w" do |f|
44
- f.write keys.to_yaml
45
+ f.write Gem::ConfigFile.dump_with_rubygems_yaml(keys)
45
46
  end
46
47
 
47
48
  ENV["RUBYGEMS_HOST"] = "http://rubygems.engineyard.com"
@@ -55,7 +56,7 @@ class TestGemGemcutterUtilities < Gem::TestCase
55
56
  keys = { :rubygems_api_key => "KEY" }
56
57
 
57
58
  File.open Gem.configuration.credentials_path, "w" do |f|
58
- f.write keys.to_yaml
59
+ f.write Gem::ConfigFile.dump_with_rubygems_yaml(keys)
59
60
  end
60
61
 
61
62
  Gem.configuration.load_api_keys
@@ -67,7 +68,7 @@ class TestGemGemcutterUtilities < Gem::TestCase
67
68
  keys = { :rubygems_api_key => "KEY", :other => "OTHER" }
68
69
 
69
70
  File.open Gem.configuration.credentials_path, "w" do |f|
70
- f.write keys.to_yaml
71
+ f.write Gem::ConfigFile.dump_with_rubygems_yaml(keys)
71
72
  end
72
73
 
73
74
  Gem.configuration.load_api_keys
@@ -163,8 +164,10 @@ class TestGemGemcutterUtilities < Gem::TestCase
163
164
  def test_sign_in_with_other_credentials_doesnt_overwrite_other_keys
164
165
  other_api_key = "f46dbb18bb6a9c97cdc61b5b85c186a17403cdcbf"
165
166
 
167
+ config = Hash[:other_api_key, other_api_key]
168
+
166
169
  File.open Gem.configuration.credentials_path, "w" do |f|
167
- f.write Hash[:other_api_key, other_api_key].to_yaml
170
+ f.write Gem::ConfigFile.dump_with_rubygems_yaml(config)
168
171
  end
169
172
  util_sign_in
170
173
 
@@ -317,7 +320,7 @@ class TestGemGemcutterUtilities < Gem::TestCase
317
320
  def test_verify_api_key
318
321
  keys = { :other => "a5fdbb6ba150cbb83aad2bb2fede64cf040453903" }
319
322
  File.open Gem.configuration.credentials_path, "w" do |f|
320
- f.write keys.to_yaml
323
+ f.write Gem::ConfigFile.dump_with_rubygems_yaml(keys)
321
324
  end
322
325
  Gem.configuration.load_api_keys
323
326
 
@@ -10,7 +10,7 @@ class TestGemIndexer < Gem::TestCase
10
10
  util_make_gems
11
11
 
12
12
  @d2_0 = util_spec "d", "2.0" do |s|
13
- s.date = Gem::Specification::TODAY - 86400 * 3
13
+ s.date = Gem::Specification::TODAY - 86_400 * 3
14
14
  end
15
15
  util_build_gem @d2_0
16
16
 
@@ -146,8 +146,8 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
146
146
 
147
147
  refute @cmd.options[:user_install]
148
148
 
149
- FileUtils.chmod 0755, @userhome
150
- FileUtils.chmod 0000, @gemhome
149
+ FileUtils.chmod 0o755, @userhome
150
+ FileUtils.chmod 0o000, @gemhome
151
151
 
152
152
  Gem.use_paths @gemhome, @userhome
153
153
 
@@ -156,7 +156,7 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
156
156
  end
157
157
  end
158
158
  ensure
159
- FileUtils.chmod 0755, @gemhome
159
+ FileUtils.chmod 0o755, @gemhome
160
160
  end
161
161
 
162
162
  def test_vendor