rubygems-update 3.3.18 → 3.3.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (388) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +65 -0
  3. data/Manifest.txt +11 -0
  4. data/bin/gem +2 -2
  5. data/bin/update_rubygems +4 -4
  6. data/bundler/CHANGELOG.md +100 -0
  7. data/bundler/UPGRADING.md +11 -4
  8. data/bundler/bundler.gemspec +6 -8
  9. data/bundler/lib/bundler/build_metadata.rb +2 -2
  10. data/bundler/lib/bundler/cli/common.rb +1 -0
  11. data/bundler/lib/bundler/cli/install.rb +5 -2
  12. data/bundler/lib/bundler/cli/outdated.rb +12 -3
  13. data/bundler/lib/bundler/cli/platform.rb +1 -1
  14. data/bundler/lib/bundler/cli.rb +7 -4
  15. data/bundler/lib/bundler/current_ruby.rb +14 -5
  16. data/bundler/lib/bundler/definition.rb +102 -31
  17. data/bundler/lib/bundler/dependency.rb +18 -85
  18. data/bundler/lib/bundler/dsl.rb +2 -2
  19. data/bundler/lib/bundler/endpoint_specification.rb +2 -13
  20. data/bundler/lib/bundler/feature_flag.rb +0 -1
  21. data/bundler/lib/bundler/fetcher.rb +6 -6
  22. data/bundler/lib/bundler/gem_helpers.rb +7 -1
  23. data/bundler/lib/bundler/gem_version_promoter.rb +8 -18
  24. data/bundler/lib/bundler/index.rb +10 -12
  25. data/bundler/lib/bundler/injector.rb +2 -1
  26. data/bundler/lib/bundler/inline.rb +1 -1
  27. data/bundler/lib/bundler/installer/standalone.rb +1 -1
  28. data/bundler/lib/bundler/installer.rb +14 -12
  29. data/bundler/lib/bundler/lazy_specification.rb +30 -23
  30. data/bundler/lib/bundler/lockfile_generator.rb +1 -1
  31. data/bundler/lib/bundler/man/bundle-add.1 +6 -2
  32. data/bundler/lib/bundler/man/bundle-add.1.ronn +4 -1
  33. data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
  34. data/bundler/lib/bundler/man/bundle-cache.1 +7 -1
  35. data/bundler/lib/bundler/man/bundle-cache.1.ronn +7 -0
  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 +25 -6
  39. data/bundler/lib/bundler/man/bundle-config.1.ronn +16 -6
  40. data/bundler/lib/bundler/man/bundle-console.1 +53 -0
  41. data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
  42. data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
  43. data/bundler/lib/bundler/man/bundle-exec.1 +2 -2
  44. data/bundler/lib/bundler/man/bundle-exec.1.ronn +1 -1
  45. data/bundler/lib/bundler/man/bundle-gem.1 +1 -1
  46. data/bundler/lib/bundler/man/bundle-help.1 +13 -0
  47. data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
  48. data/bundler/lib/bundler/man/bundle-info.1 +1 -1
  49. data/bundler/lib/bundler/man/bundle-init.1 +1 -1
  50. data/bundler/lib/bundler/man/bundle-inject.1 +5 -2
  51. data/bundler/lib/bundler/man/bundle-inject.1.ronn +3 -1
  52. data/bundler/lib/bundler/man/bundle-install.1 +5 -1
  53. data/bundler/lib/bundler/man/bundle-install.1.ronn +6 -0
  54. data/bundler/lib/bundler/man/bundle-list.1 +1 -1
  55. data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
  56. data/bundler/lib/bundler/man/bundle-open.1 +1 -1
  57. data/bundler/lib/bundler/man/bundle-outdated.1 +1 -1
  58. data/bundler/lib/bundler/man/bundle-platform.1 +16 -6
  59. data/bundler/lib/bundler/man/bundle-platform.1.ronn +14 -7
  60. data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
  61. data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
  62. data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
  63. data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
  64. data/bundler/lib/bundler/man/bundle-show.1 +1 -1
  65. data/bundler/lib/bundler/man/bundle-update.1 +1 -1
  66. data/bundler/lib/bundler/man/bundle-version.1 +35 -0
  67. data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
  68. data/bundler/lib/bundler/man/bundle-viz.1 +4 -1
  69. data/bundler/lib/bundler/man/bundle-viz.1.ronn +2 -0
  70. data/bundler/lib/bundler/man/bundle.1 +15 -10
  71. data/bundler/lib/bundler/man/bundle.1.ronn +12 -7
  72. data/bundler/lib/bundler/man/gemfile.5 +23 -47
  73. data/bundler/lib/bundler/man/gemfile.5.ronn +32 -43
  74. data/bundler/lib/bundler/man/index.txt +4 -0
  75. data/bundler/lib/bundler/match_metadata.rb +13 -0
  76. data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
  77. data/bundler/lib/bundler/plugin.rb +2 -0
  78. data/bundler/lib/bundler/remote_specification.rb +6 -11
  79. data/bundler/lib/bundler/resolver/base.rb +50 -0
  80. data/bundler/lib/bundler/resolver/spec_group.rb +11 -8
  81. data/bundler/lib/bundler/resolver.rb +95 -90
  82. data/bundler/lib/bundler/ruby_dsl.rb +1 -1
  83. data/bundler/lib/bundler/ruby_version.rb +5 -5
  84. data/bundler/lib/bundler/rubygems_ext.rb +52 -1
  85. data/bundler/lib/bundler/rubygems_gem_installer.rb +19 -12
  86. data/bundler/lib/bundler/settings.rb +1 -1
  87. data/bundler/lib/bundler/source/metadata.rb +1 -1
  88. data/bundler/lib/bundler/source_list.rb +4 -0
  89. data/bundler/lib/bundler/spec_set.rb +48 -33
  90. data/bundler/lib/bundler/version.rb +1 -1
  91. data/bundler/lib/bundler.rb +3 -3
  92. data/lib/rubygems/available_set.rb +3 -3
  93. data/lib/rubygems/basic_specification.rb +4 -4
  94. data/lib/rubygems/command.rb +25 -25
  95. data/lib/rubygems/command_manager.rb +9 -9
  96. data/lib/rubygems/commands/build_command.rb +8 -8
  97. data/lib/rubygems/commands/cert_command.rb +33 -33
  98. data/lib/rubygems/commands/check_command.rb +20 -20
  99. data/lib/rubygems/commands/cleanup_command.rb +17 -17
  100. data/lib/rubygems/commands/contents_command.rb +13 -13
  101. data/lib/rubygems/commands/dependency_command.rb +16 -16
  102. data/lib/rubygems/commands/environment_command.rb +5 -5
  103. data/lib/rubygems/commands/fetch_command.rb +8 -8
  104. data/lib/rubygems/commands/generate_index_command.rb +17 -17
  105. data/lib/rubygems/commands/help_command.rb +3 -3
  106. data/lib/rubygems/commands/info_command.rb +3 -3
  107. data/lib/rubygems/commands/install_command.rb +20 -20
  108. data/lib/rubygems/commands/list_command.rb +3 -3
  109. data/lib/rubygems/commands/lock_command.rb +4 -4
  110. data/lib/rubygems/commands/mirror_command.rb +3 -3
  111. data/lib/rubygems/commands/open_command.rb +9 -9
  112. data/lib/rubygems/commands/outdated_command.rb +5 -5
  113. data/lib/rubygems/commands/owner_command.rb +11 -11
  114. data/lib/rubygems/commands/pristine_command.rb +36 -36
  115. data/lib/rubygems/commands/push_command.rb +8 -8
  116. data/lib/rubygems/commands/query_command.rb +8 -8
  117. data/lib/rubygems/commands/rdoc_command.rb +17 -17
  118. data/lib/rubygems/commands/search_command.rb +3 -3
  119. data/lib/rubygems/commands/server_command.rb +3 -3
  120. data/lib/rubygems/commands/setup_command.rb +96 -106
  121. data/lib/rubygems/commands/signin_command.rb +9 -9
  122. data/lib/rubygems/commands/signout_command.rb +7 -7
  123. data/lib/rubygems/commands/sources_command.rb +21 -21
  124. data/lib/rubygems/commands/specification_command.rb +13 -13
  125. data/lib/rubygems/commands/stale_command.rb +2 -2
  126. data/lib/rubygems/commands/uninstall_command.rb +40 -40
  127. data/lib/rubygems/commands/unpack_command.rb +12 -12
  128. data/lib/rubygems/commands/update_command.rb +40 -56
  129. data/lib/rubygems/commands/which_command.rb +7 -7
  130. data/lib/rubygems/commands/yank_command.rb +11 -11
  131. data/lib/rubygems/config_file.rb +21 -21
  132. data/lib/rubygems/core_ext/kernel_gem.rb +1 -1
  133. data/lib/rubygems/core_ext/kernel_require.rb +1 -1
  134. data/lib/rubygems/core_ext/kernel_warn.rb +1 -1
  135. data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
  136. data/lib/rubygems/defaults.rb +16 -16
  137. data/lib/rubygems/dependency.rb +9 -9
  138. data/lib/rubygems/dependency_installer.rb +13 -13
  139. data/lib/rubygems/dependency_list.rb +6 -6
  140. data/lib/rubygems/doctor.rb +18 -18
  141. data/lib/rubygems/errors.rb +2 -2
  142. data/lib/rubygems/exceptions.rb +5 -5
  143. data/lib/rubygems/ext/build_error.rb +1 -1
  144. data/lib/rubygems/ext/builder.rb +16 -16
  145. data/lib/rubygems/ext/cargo_builder.rb +7 -7
  146. data/lib/rubygems/ext/cmake_builder.rb +2 -2
  147. data/lib/rubygems/ext/configure_builder.rb +1 -1
  148. data/lib/rubygems/ext/ext_conf_builder.rb +8 -8
  149. data/lib/rubygems/ext/rake_builder.rb +3 -3
  150. data/lib/rubygems/ext.rb +7 -7
  151. data/lib/rubygems/gem_runner.rb +5 -5
  152. data/lib/rubygems/gemcutter_utilities.rb +31 -28
  153. data/lib/rubygems/indexer.rb +27 -27
  154. data/lib/rubygems/install_default_message.rb +2 -2
  155. data/lib/rubygems/install_message.rb +2 -2
  156. data/lib/rubygems/install_update_options.rb +55 -55
  157. data/lib/rubygems/installer.rb +32 -40
  158. data/lib/rubygems/installer_uninstaller_utils.rb +2 -2
  159. data/lib/rubygems/local_remote_options.rb +18 -20
  160. data/lib/rubygems/mock_gem_ui.rb +2 -2
  161. data/lib/rubygems/name_tuple.rb +4 -4
  162. data/lib/rubygems/optparse.rb +1 -1
  163. data/lib/rubygems/package/file_source.rb +2 -2
  164. data/lib/rubygems/package/old.rb +8 -8
  165. data/lib/rubygems/package/tar_header.rb +50 -50
  166. data/lib/rubygems/package/tar_reader/entry.rb +2 -2
  167. data/lib/rubygems/package/tar_reader.rb +1 -1
  168. data/lib/rubygems/package/tar_writer.rb +7 -7
  169. data/lib/rubygems/package.rb +54 -43
  170. data/lib/rubygems/package_task.rb +4 -4
  171. data/lib/rubygems/platform.rb +66 -55
  172. data/lib/rubygems/psych_tree.rb +1 -1
  173. data/lib/rubygems/query_utils.rb +35 -35
  174. data/lib/rubygems/rdoc.rb +2 -2
  175. data/lib/rubygems/remote_fetcher.rb +22 -22
  176. data/lib/rubygems/request/connection_pools.rb +4 -4
  177. data/lib/rubygems/request/http_pool.rb +1 -1
  178. data/lib/rubygems/request.rb +22 -22
  179. data/lib/rubygems/request_set/gem_dependency_api.rb +18 -18
  180. data/lib/rubygems/request_set/lockfile/parser.rb +26 -26
  181. data/lib/rubygems/request_set/lockfile/tokenizer.rb +4 -4
  182. data/lib/rubygems/request_set/lockfile.rb +5 -5
  183. data/lib/rubygems/request_set.rb +17 -17
  184. data/lib/rubygems/requirement.rb +6 -6
  185. data/lib/rubygems/resolver/activation_request.rb +3 -3
  186. data/lib/rubygems/resolver/api_set.rb +4 -4
  187. data/lib/rubygems/resolver/api_specification.rb +6 -6
  188. data/lib/rubygems/resolver/best_set.rb +5 -5
  189. data/lib/rubygems/resolver/conflict.rb +10 -10
  190. data/lib/rubygems/resolver/dependency_request.rb +2 -2
  191. data/lib/rubygems/resolver/git_set.rb +2 -2
  192. data/lib/rubygems/resolver/git_specification.rb +6 -6
  193. data/lib/rubygems/resolver/index_set.rb +3 -3
  194. data/lib/rubygems/resolver/index_specification.rb +6 -5
  195. data/lib/rubygems/resolver/installed_specification.rb +4 -4
  196. data/lib/rubygems/resolver/installer_set.rb +11 -16
  197. data/lib/rubygems/resolver/local_specification.rb +2 -2
  198. data/lib/rubygems/resolver/lock_set.rb +4 -4
  199. data/lib/rubygems/resolver/lock_specification.rb +4 -4
  200. data/lib/rubygems/resolver/molinillo.rb +1 -1
  201. data/lib/rubygems/resolver/specification.rb +1 -1
  202. data/lib/rubygems/resolver/vendor_set.rb +1 -1
  203. data/lib/rubygems/resolver/vendor_specification.rb +3 -3
  204. data/lib/rubygems/resolver.rb +39 -39
  205. data/lib/rubygems/s3_uri_signer.rb +6 -6
  206. data/lib/rubygems/safe_yaml.rb +2 -2
  207. data/lib/rubygems/security/policies.rb +11 -11
  208. data/lib/rubygems/security/policy.rb +18 -18
  209. data/lib/rubygems/security/signer.rb +5 -5
  210. data/lib/rubygems/security/trust_dir.rb +3 -3
  211. data/lib/rubygems/security.rb +28 -28
  212. data/lib/rubygems/security_option.rb +5 -5
  213. data/lib/rubygems/source/git.rb +21 -21
  214. data/lib/rubygems/source/installed.rb +1 -1
  215. data/lib/rubygems/source/local.rb +2 -2
  216. data/lib/rubygems/source/specific_file.rb +1 -1
  217. data/lib/rubygems/source.rb +16 -16
  218. data/lib/rubygems/spec_fetcher.rb +9 -9
  219. data/lib/rubygems/specification.rb +63 -62
  220. data/lib/rubygems/specification_policy.rb +15 -15
  221. data/lib/rubygems/stub_specification.rb +5 -5
  222. data/lib/rubygems/tsort.rb +1 -1
  223. data/lib/rubygems/uninstaller.rb +18 -18
  224. data/lib/rubygems/uri.rb +4 -4
  225. data/lib/rubygems/uri_formatter.rb +1 -1
  226. data/lib/rubygems/user_interaction.rb +33 -19
  227. data/lib/rubygems/util/licenses.rb +3 -3
  228. data/lib/rubygems/util.rb +10 -10
  229. data/lib/rubygems/validator.rb +5 -5
  230. data/lib/rubygems/version.rb +15 -9
  231. data/lib/rubygems/version_option.rb +3 -3
  232. data/lib/rubygems.rb +62 -61
  233. data/rubygems-update.gemspec +2 -2
  234. data/setup.rb +9 -9
  235. data/test/rubygems/helper.rb +132 -134
  236. data/test/rubygems/installer_test_case.rb +13 -13
  237. data/test/rubygems/package/tar_test_case.rb +2 -2
  238. data/test/rubygems/plugin/exception/rubygems_plugin.rb +1 -1
  239. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
  240. data/test/rubygems/rubygems_plugin.rb +2 -2
  241. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +4 -4
  242. data/test/rubygems/test_bundled_ca.rb +10 -10
  243. data/test/rubygems/test_config.rb +3 -3
  244. data/test/rubygems/test_deprecate.rb +3 -3
  245. data/test/rubygems/test_exit.rb +2 -2
  246. data/test/rubygems/test_gem.rb +342 -342
  247. data/test/rubygems/test_gem_available_set.rb +21 -21
  248. data/test/rubygems/test_gem_bundler_version_finder.rb +1 -1
  249. data/test/rubygems/test_gem_command.rb +44 -44
  250. data/test/rubygems/test_gem_command_manager.rb +29 -29
  251. data/test/rubygems/test_gem_commands_build_command.rb +63 -63
  252. data/test/rubygems/test_gem_commands_cert_command.rb +97 -99
  253. data/test/rubygems/test_gem_commands_check_command.rb +4 -4
  254. data/test/rubygems/test_gem_commands_cleanup_command.rb +40 -40
  255. data/test/rubygems/test_gem_commands_contents_command.rb +27 -27
  256. data/test/rubygems/test_gem_commands_dependency_command.rb +36 -36
  257. data/test/rubygems/test_gem_commands_environment_command.rb +16 -16
  258. data/test/rubygems/test_gem_commands_fetch_command.rb +37 -37
  259. data/test/rubygems/test_gem_commands_generate_index_command.rb +7 -7
  260. data/test/rubygems/test_gem_commands_help_command.rb +13 -13
  261. data/test/rubygems/test_gem_commands_info_command.rb +28 -2
  262. data/test/rubygems/test_gem_commands_install_command.rb +131 -131
  263. data/test/rubygems/test_gem_commands_list_command.rb +4 -4
  264. data/test/rubygems/test_gem_commands_lock_command.rb +10 -10
  265. data/test/rubygems/test_gem_commands_mirror.rb +2 -2
  266. data/test/rubygems/test_gem_commands_open_command.rb +4 -4
  267. data/test/rubygems/test_gem_commands_outdated_command.rb +9 -9
  268. data/test/rubygems/test_gem_commands_owner_command.rb +41 -41
  269. data/test/rubygems/test_gem_commands_pristine_command.rb +92 -92
  270. data/test/rubygems/test_gem_commands_push_command.rb +54 -54
  271. data/test/rubygems/test_gem_commands_query_command.rb +73 -73
  272. data/test/rubygems/test_gem_commands_search_command.rb +2 -2
  273. data/test/rubygems/test_gem_commands_server_command.rb +2 -2
  274. data/test/rubygems/test_gem_commands_setup_command.rb +119 -85
  275. data/test/rubygems/test_gem_commands_signin_command.rb +45 -31
  276. data/test/rubygems/test_gem_commands_signout_command.rb +3 -3
  277. data/test/rubygems/test_gem_commands_sources_command.rb +28 -29
  278. data/test/rubygems/test_gem_commands_specification_command.rb +32 -32
  279. data/test/rubygems/test_gem_commands_stale_command.rb +4 -4
  280. data/test/rubygems/test_gem_commands_uninstall_command.rb +75 -75
  281. data/test/rubygems/test_gem_commands_unpack_command.rb +31 -31
  282. data/test/rubygems/test_gem_commands_update_command.rb +89 -89
  283. data/test/rubygems/test_gem_commands_which_command.rb +6 -6
  284. data/test/rubygems/test_gem_commands_yank_command.rb +40 -40
  285. data/test/rubygems/test_gem_config_file.rb +93 -81
  286. data/test/rubygems/test_gem_dependency.rb +73 -73
  287. data/test/rubygems/test_gem_dependency_installer.rb +165 -165
  288. data/test/rubygems/test_gem_dependency_list.rb +47 -47
  289. data/test/rubygems/test_gem_dependency_resolution_error.rb +4 -4
  290. data/test/rubygems/test_gem_doctor.rb +26 -26
  291. data/test/rubygems/test_gem_ext_builder.rb +59 -59
  292. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.lock +6 -6
  293. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.toml +1 -1
  294. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/build.rb +8 -8
  295. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +1 -1
  296. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +6 -6
  297. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +1 -1
  298. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/build.rb +8 -8
  299. data/test/rubygems/test_gem_ext_cargo_builder.rb +26 -26
  300. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +3 -3
  301. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +23 -23
  302. data/test/rubygems/test_gem_ext_cmake_builder.rb +15 -15
  303. data/test/rubygems/test_gem_ext_configure_builder.rb +13 -13
  304. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +51 -52
  305. data/test/rubygems/test_gem_ext_rake_builder.rb +15 -15
  306. data/test/rubygems/test_gem_gem_runner.rb +7 -7
  307. data/test/rubygems/test_gem_gemcutter_utilities.rb +66 -66
  308. data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -4
  309. data/test/rubygems/test_gem_indexer.rb +48 -48
  310. data/test/rubygems/test_gem_install_update_options.rb +16 -16
  311. data/test/rubygems/test_gem_installer.rb +303 -300
  312. data/test/rubygems/test_gem_local_remote_options.rb +10 -10
  313. data/test/rubygems/test_gem_name_tuple.rb +4 -4
  314. data/test/rubygems/test_gem_package.rb +228 -206
  315. data/test/rubygems/test_gem_package_old.rb +13 -13
  316. data/test/rubygems/test_gem_package_tar_header.rb +42 -42
  317. data/test/rubygems/test_gem_package_tar_reader.rb +8 -8
  318. data/test/rubygems/test_gem_package_tar_reader_entry.rb +10 -10
  319. data/test/rubygems/test_gem_package_tar_writer.rb +76 -76
  320. data/test/rubygems/test_gem_package_task.rb +18 -18
  321. data/test/rubygems/test_gem_path_support.rb +14 -14
  322. data/test/rubygems/test_gem_platform.rb +298 -227
  323. data/test/rubygems/test_gem_rdoc.rb +14 -14
  324. data/test/rubygems/test_gem_remote_fetcher.rb +149 -149
  325. data/test/rubygems/test_gem_request.rb +55 -55
  326. data/test/rubygems/test_gem_request_connection_pools.rb +29 -29
  327. data/test/rubygems/test_gem_request_set.rb +99 -99
  328. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +204 -206
  329. data/test/rubygems/test_gem_request_set_lockfile.rb +86 -86
  330. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +56 -56
  331. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +62 -62
  332. data/test/rubygems/test_gem_requirement.rb +47 -41
  333. data/test/rubygems/test_gem_resolver.rb +133 -99
  334. data/test/rubygems/test_gem_resolver_activation_request.rb +6 -6
  335. data/test/rubygems/test_gem_resolver_api_set.rb +33 -33
  336. data/test/rubygems/test_gem_resolver_api_specification.rb +47 -47
  337. data/test/rubygems/test_gem_resolver_best_set.rb +22 -22
  338. data/test/rubygems/test_gem_resolver_composed_set.rb +1 -1
  339. data/test/rubygems/test_gem_resolver_conflict.rb +12 -12
  340. data/test/rubygems/test_gem_resolver_dependency_request.rb +15 -15
  341. data/test/rubygems/test_gem_resolver_git_set.rb +21 -21
  342. data/test/rubygems/test_gem_resolver_git_specification.rb +21 -21
  343. data/test/rubygems/test_gem_resolver_index_set.rb +12 -12
  344. data/test/rubygems/test_gem_resolver_index_specification.rb +16 -16
  345. data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -5
  346. data/test/rubygems/test_gem_resolver_installer_set.rb +78 -34
  347. data/test/rubygems/test_gem_resolver_local_specification.rb +7 -7
  348. data/test/rubygems/test_gem_resolver_lock_set.rb +12 -12
  349. data/test/rubygems/test_gem_resolver_lock_specification.rb +17 -17
  350. data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -1
  351. data/test/rubygems/test_gem_resolver_specification.rb +8 -8
  352. data/test/rubygems/test_gem_resolver_vendor_set.rb +6 -6
  353. data/test/rubygems/test_gem_resolver_vendor_specification.rb +10 -10
  354. data/test/rubygems/test_gem_security.rb +67 -67
  355. data/test/rubygems/test_gem_security_policy.rb +62 -62
  356. data/test/rubygems/test_gem_security_signer.rb +28 -28
  357. data/test/rubygems/test_gem_security_trust_dir.rb +4 -4
  358. data/test/rubygems/test_gem_silent_ui.rb +38 -32
  359. data/test/rubygems/test_gem_source.rb +44 -44
  360. data/test/rubygems/test_gem_source_fetch_problem.rb +9 -9
  361. data/test/rubygems/test_gem_source_git.rb +59 -59
  362. data/test/rubygems/test_gem_source_installed.rb +16 -16
  363. data/test/rubygems/test_gem_source_list.rb +5 -5
  364. data/test/rubygems/test_gem_source_local.rb +14 -14
  365. data/test/rubygems/test_gem_source_lock.rb +31 -31
  366. data/test/rubygems/test_gem_source_specific_file.rb +17 -17
  367. data/test/rubygems/test_gem_source_subpath_problem.rb +7 -7
  368. data/test/rubygems/test_gem_source_vendor.rb +13 -13
  369. data/test/rubygems/test_gem_spec_fetcher.rb +72 -72
  370. data/test/rubygems/test_gem_specification.rb +444 -436
  371. data/test/rubygems/test_gem_stream_ui.rb +19 -19
  372. data/test/rubygems/test_gem_stub_specification.rb +32 -32
  373. data/test/rubygems/test_gem_text.rb +1 -1
  374. data/test/rubygems/test_gem_uninstaller.rb +112 -112
  375. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -3
  376. data/test/rubygems/test_gem_uri.rb +4 -4
  377. data/test/rubygems/test_gem_uri_formatter.rb +14 -14
  378. data/test/rubygems/test_gem_util.rb +23 -23
  379. data/test/rubygems/test_gem_validator.rb +8 -8
  380. data/test/rubygems/test_gem_version.rb +22 -15
  381. data/test/rubygems/test_gem_version_option.rb +15 -15
  382. data/test/rubygems/test_kernel.rb +31 -31
  383. data/test/rubygems/test_project_sanity.rb +1 -1
  384. data/test/rubygems/test_remote_fetch_error.rb +6 -6
  385. data/test/rubygems/test_require.rb +43 -43
  386. data/test/rubygems/test_rubygems.rb +8 -8
  387. data/test/rubygems/utilities.rb +19 -19
  388. metadata +14 -3
@@ -26,7 +26,7 @@ module Gem
26
26
 
27
27
  if ::Psych.respond_to? :safe_load
28
28
  def self.safe_load(input)
29
- if Gem::Version.new(Psych::VERSION) >= Gem::Version.new('3.1.0.pre1')
29
+ if Gem::Version.new(Psych::VERSION) >= Gem::Version.new("3.1.0.pre1")
30
30
  ::Psych.safe_load(input, permitted_classes: PERMITTED_CLASSES, permitted_symbols: PERMITTED_SYMBOLS, aliases: true)
31
31
  else
32
32
  ::Psych.safe_load(input, PERMITTED_CLASSES, PERMITTED_SYMBOLS, true)
@@ -34,7 +34,7 @@ module Gem
34
34
  end
35
35
 
36
36
  def self.load(input)
37
- if Gem::Version.new(Psych::VERSION) >= Gem::Version.new('3.1.0.pre1')
37
+ if Gem::Version.new(Psych::VERSION) >= Gem::Version.new("3.1.0.pre1")
38
38
  ::Psych.safe_load(input, permitted_classes: [::Symbol])
39
39
  else
40
40
  ::Psych.safe_load(input, [::Symbol])
@@ -5,7 +5,7 @@ module Gem::Security
5
5
  # No security policy: all package signature checks are disabled.
6
6
 
7
7
  NoSecurity = Policy.new(
8
- 'No Security',
8
+ "No Security",
9
9
  :verify_data => false,
10
10
  :verify_signer => false,
11
11
  :verify_chain => false,
@@ -23,7 +23,7 @@ module Gem::Security
23
23
  # easily spoofed, and is not recommended.
24
24
 
25
25
  AlmostNoSecurity = Policy.new(
26
- 'Almost No Security',
26
+ "Almost No Security",
27
27
  :verify_data => true,
28
28
  :verify_signer => false,
29
29
  :verify_chain => false,
@@ -40,7 +40,7 @@ module Gem::Security
40
40
  # is not recommended.
41
41
 
42
42
  LowSecurity = Policy.new(
43
- 'Low Security',
43
+ "Low Security",
44
44
  :verify_data => true,
45
45
  :verify_signer => true,
46
46
  :verify_chain => false,
@@ -59,7 +59,7 @@ module Gem::Security
59
59
  # gem off as unsigned.
60
60
 
61
61
  MediumSecurity = Policy.new(
62
- 'Medium Security',
62
+ "Medium Security",
63
63
  :verify_data => true,
64
64
  :verify_signer => true,
65
65
  :verify_chain => true,
@@ -78,7 +78,7 @@ module Gem::Security
78
78
  # a reasonable guarantee that the contents of the gem have not been altered.
79
79
 
80
80
  HighSecurity = Policy.new(
81
- 'High Security',
81
+ "High Security",
82
82
  :verify_data => true,
83
83
  :verify_signer => true,
84
84
  :verify_chain => true,
@@ -91,7 +91,7 @@ module Gem::Security
91
91
  # Policy used to verify a certificate and key when signing a gem
92
92
 
93
93
  SigningPolicy = Policy.new(
94
- 'Signing Policy',
94
+ "Signing Policy",
95
95
  :verify_data => false,
96
96
  :verify_signer => true,
97
97
  :verify_chain => true,
@@ -104,11 +104,11 @@ module Gem::Security
104
104
  # Hash of configured security policies
105
105
 
106
106
  Policies = {
107
- 'NoSecurity' => NoSecurity,
108
- 'AlmostNoSecurity' => AlmostNoSecurity,
109
- 'LowSecurity' => LowSecurity,
110
- 'MediumSecurity' => MediumSecurity,
111
- 'HighSecurity' => HighSecurity,
107
+ "NoSecurity" => NoSecurity,
108
+ "AlmostNoSecurity" => AlmostNoSecurity,
109
+ "LowSecurity" => LowSecurity,
110
+ "MediumSecurity" => MediumSecurity,
111
+ "HighSecurity" => HighSecurity,
112
112
  # SigningPolicy is not intended for use by `gem -P` so do not list it
113
113
  }.freeze
114
114
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
- require_relative '../user_interaction'
2
+ require_relative "../user_interaction"
3
3
 
4
4
  ##
5
5
  # A Gem::Security::Policy object encapsulates the settings for verifying
@@ -53,8 +53,8 @@ class Gem::Security::Policy
53
53
  # and is valid for the given +time+.
54
54
 
55
55
  def check_chain(chain, time)
56
- raise Gem::Security::Exception, 'missing signing chain' unless chain
57
- raise Gem::Security::Exception, 'empty signing chain' if chain.empty?
56
+ raise Gem::Security::Exception, "missing signing chain" unless chain
57
+ raise Gem::Security::Exception, "empty signing chain" if chain.empty?
58
58
 
59
59
  begin
60
60
  chain.each_cons 2 do |issuer, cert|
@@ -83,21 +83,21 @@ class Gem::Security::Policy
83
83
  # If the +issuer+ is +nil+ no verification is performed.
84
84
 
85
85
  def check_cert(signer, issuer, time)
86
- raise Gem::Security::Exception, 'missing signing certificate' unless
86
+ raise Gem::Security::Exception, "missing signing certificate" unless
87
87
  signer
88
88
 
89
89
  message = "certificate #{signer.subject}"
90
90
 
91
- if not_before = signer.not_before and not_before > time
91
+ if (not_before = signer.not_before) && not_before > time
92
92
  raise Gem::Security::Exception,
93
93
  "#{message} not valid before #{not_before}"
94
94
  end
95
95
 
96
- if not_after = signer.not_after and not_after < time
96
+ if (not_after = signer.not_after) && not_after < time
97
97
  raise Gem::Security::Exception, "#{message} not valid after #{not_after}"
98
98
  end
99
99
 
100
- if issuer and not signer.verify issuer.public_key
100
+ if issuer && !signer.verify(issuer.public_key)
101
101
  raise Gem::Security::Exception,
102
102
  "#{message} was not issued by #{issuer.subject}"
103
103
  end
@@ -109,10 +109,10 @@ class Gem::Security::Policy
109
109
  # Ensures the public key of +key+ matches the public key in +signer+
110
110
 
111
111
  def check_key(signer, key)
112
- unless signer and key
112
+ unless signer && key
113
113
  return true unless @only_signed
114
114
 
115
- raise Gem::Security::Exception, 'missing key or signature'
115
+ raise Gem::Security::Exception, "missing key or signature"
116
116
  end
117
117
 
118
118
  raise Gem::Security::Exception,
@@ -127,11 +127,11 @@ class Gem::Security::Policy
127
127
  # +time+.
128
128
 
129
129
  def check_root(chain, time)
130
- raise Gem::Security::Exception, 'missing signing chain' unless chain
130
+ raise Gem::Security::Exception, "missing signing chain" unless chain
131
131
 
132
132
  root = chain.first
133
133
 
134
- raise Gem::Security::Exception, 'missing root certificate' unless root
134
+ raise Gem::Security::Exception, "missing root certificate" unless root
135
135
 
136
136
  raise Gem::Security::Exception,
137
137
  "root certificate #{root.subject} is not self-signed " +
@@ -146,11 +146,11 @@ class Gem::Security::Policy
146
146
  # the digests of the two certificates match according to +digester+
147
147
 
148
148
  def check_trust(chain, digester, trust_dir)
149
- raise Gem::Security::Exception, 'missing signing chain' unless chain
149
+ raise Gem::Security::Exception, "missing signing chain" unless chain
150
150
 
151
151
  root = chain.first
152
152
 
153
- raise Gem::Security::Exception, 'missing root certificate' unless root
153
+ raise Gem::Security::Exception, "missing root certificate" unless root
154
154
 
155
155
  path = Gem::Security.trust_dir.cert_path root
156
156
 
@@ -182,7 +182,7 @@ class Gem::Security::Policy
182
182
 
183
183
  def subject(certificate) # :nodoc:
184
184
  certificate.extensions.each do |extension|
185
- next unless extension.oid == 'subjectAltName'
185
+ next unless extension.oid == "subjectAltName"
186
186
 
187
187
  return extension.value
188
188
  end
@@ -206,7 +206,7 @@ class Gem::Security::Policy
206
206
  # If +key+ is given it is used to validate the signing certificate.
207
207
 
208
208
  def verify(chain, key = nil, digests = {}, signatures = {},
209
- full_name = '(unknown)')
209
+ full_name = "(unknown)")
210
210
  if signatures.empty?
211
211
  if @only_signed
212
212
  raise Gem::Security::Exception,
@@ -230,8 +230,8 @@ class Gem::Security::Policy
230
230
  end
231
231
 
232
232
  if @verify_data
233
- raise Gem::Security::Exception, 'no digests provided (probable bug)' if
234
- signer_digests.nil? or signer_digests.empty?
233
+ raise Gem::Security::Exception, "no digests provided (probable bug)" if
234
+ signer_digests.nil? || signer_digests.empty?
235
235
  else
236
236
  signer_digests = {}
237
237
  end
@@ -248,7 +248,7 @@ class Gem::Security::Policy
248
248
 
249
249
  if @only_trusted
250
250
  check_trust chain, digester, trust_dir
251
- elsif signatures.empty? and digests.empty?
251
+ elsif signatures.empty? && digests.empty?
252
252
  # trust is irrelevant if there's no signatures to verify
253
253
  else
254
254
  alert_warning "#{subject signer} is not trusted for #{full_name}"
@@ -42,7 +42,7 @@ class Gem::Security::Signer
42
42
  def self.re_sign_cert(expired_cert, expired_cert_path, private_key)
43
43
  return unless expired_cert.not_after < Time.now
44
44
 
45
- expiry = expired_cert.not_after.strftime('%Y%m%d%H%M%S')
45
+ expiry = expired_cert.not_after.strftime("%Y%m%d%H%M%S")
46
46
  expired_cert_file = "#{File.basename(expired_cert_path)}.expired.#{expiry}"
47
47
  new_expired_cert_path = File.join(Gem.user_home, ".gem", expired_cert_file)
48
48
 
@@ -105,7 +105,7 @@ class Gem::Security::Signer
105
105
  # this value is preferred, otherwise the subject is used.
106
106
 
107
107
  def extract_name(cert) # :nodoc:
108
- subject_alt_name = cert.extensions.find {|e| 'subjectAltName' == e.oid }
108
+ subject_alt_name = cert.extensions.find {|e| "subjectAltName" == e.oid }
109
109
 
110
110
  if subject_alt_name
111
111
  /\Aemail:/ =~ subject_alt_name.value # rubocop:disable Performance/StartWith
@@ -139,9 +139,9 @@ class Gem::Security::Signer
139
139
  def sign(data)
140
140
  return unless @key
141
141
 
142
- raise Gem::Security::Exception, 'no certs provided' if @cert_chain.empty?
142
+ raise Gem::Security::Exception, "no certs provided" if @cert_chain.empty?
143
143
 
144
- if @cert_chain.length == 1 and @cert_chain.last.not_after < Time.now
144
+ if @cert_chain.length == 1 && @cert_chain.last.not_after < Time.now
145
145
  alert("Your certificate has expired, trying to re-sign it...")
146
146
 
147
147
  re_sign_key(
@@ -182,7 +182,7 @@ class Gem::Security::Signer
182
182
  return unless disk_key
183
183
 
184
184
  if disk_key.to_pem == @key.to_pem && disk_cert == old_cert.to_pem
185
- expiry = old_cert.not_after.strftime('%Y%m%d%H%M%S')
185
+ expiry = old_cert.not_after.strftime("%Y%m%d%H%M%S")
186
186
  old_cert_file = "gem-public_cert.pem.expired.#{expiry}"
187
187
  old_cert_path = File.join(Gem.user_home, ".gem", old_cert_file)
188
188
 
@@ -41,7 +41,7 @@ class Gem::Security::TrustDir
41
41
  def each_certificate
42
42
  return enum_for __method__ unless block_given?
43
43
 
44
- glob = File.join @dir, '*.pem'
44
+ glob = File.join @dir, "*.pem"
45
45
 
46
46
  Dir[glob].each do |certificate_file|
47
47
  begin
@@ -92,7 +92,7 @@ class Gem::Security::TrustDir
92
92
 
93
93
  destination = cert_path certificate
94
94
 
95
- File.open destination, 'wb', 0600 do |io|
95
+ File.open destination, "wb", 0600 do |io|
96
96
  io.write certificate.to_pem
97
97
  io.chmod(@permissions[:trusted_cert])
98
98
  end
@@ -104,7 +104,7 @@ class Gem::Security::TrustDir
104
104
  # permissions.
105
105
 
106
106
  def verify
107
- require 'fileutils'
107
+ require "fileutils"
108
108
  if File.exist? @dir
109
109
  raise Gem::Security::Exception,
110
110
  "trust directory #{@dir} is not a directory" unless
@@ -5,8 +5,8 @@
5
5
  # See LICENSE.txt for permissions.
6
6
  #++
7
7
 
8
- require_relative 'exceptions'
9
- require_relative 'openssl'
8
+ require_relative "exceptions"
9
+ require_relative "openssl"
10
10
 
11
11
  ##
12
12
  # = Signing gems
@@ -334,7 +334,7 @@ module Gem::Security
334
334
  ##
335
335
  # Used internally to select the signing digest from all computed digests
336
336
 
337
- DIGEST_NAME = 'SHA256' # :nodoc:
337
+ DIGEST_NAME = "SHA256" # :nodoc:
338
338
 
339
339
  ##
340
340
  # Length of keys created by RSA and DSA keys
@@ -344,18 +344,18 @@ module Gem::Security
344
344
  ##
345
345
  # Default algorithm to use when building a key pair
346
346
 
347
- DEFAULT_KEY_ALGORITHM = 'RSA'
347
+ DEFAULT_KEY_ALGORITHM = "RSA"
348
348
 
349
349
  ##
350
350
  # Named curve used for Elliptic Curve
351
351
 
352
- EC_NAME = 'secp384r1'
352
+ EC_NAME = "secp384r1"
353
353
 
354
354
  ##
355
355
  # Cipher used to encrypt the key pair used to sign gems.
356
356
  # Must be in the list returned by OpenSSL::Cipher.ciphers
357
357
 
358
- KEY_CIPHER = OpenSSL::Cipher.new('AES-256-CBC') if defined?(OpenSSL::Cipher)
358
+ KEY_CIPHER = OpenSSL::Cipher.new("AES-256-CBC") if defined?(OpenSSL::Cipher)
359
359
 
360
360
  ##
361
361
  # One day in seconds
@@ -376,10 +376,10 @@ module Gem::Security
376
376
  # * The certificate contains a subject key identifier
377
377
 
378
378
  EXTENSIONS = {
379
- 'basicConstraints' => 'CA:FALSE',
380
- 'keyUsage' =>
381
- 'keyEncipherment,dataEncipherment,digitalSignature',
382
- 'subjectKeyIdentifier' => 'hash',
379
+ "basicConstraints" => "CA:FALSE",
380
+ "keyUsage" =>
381
+ "keyEncipherment,dataEncipherment,digitalSignature",
382
+ "subjectKeyIdentifier" => "hash",
383
383
  }.freeze
384
384
 
385
385
  def self.alt_name_or_x509_entry(certificate, x509_entry)
@@ -473,7 +473,7 @@ module Gem::Security
473
473
  OpenSSL::Digest.new(algorithm)
474
474
  end
475
475
  else
476
- require 'digest'
476
+ require "digest"
477
477
 
478
478
  def self.create_digest(algorithm = DIGEST_NAME)
479
479
  Digest.const_get(algorithm).new
@@ -487,11 +487,11 @@ module Gem::Security
487
487
  def self.create_key(algorithm)
488
488
  if defined?(OpenSSL::PKey)
489
489
  case algorithm.downcase
490
- when 'dsa'
490
+ when "dsa"
491
491
  OpenSSL::PKey::DSA.new(RSA_DSA_KEY_LENGTH)
492
- when 'rsa'
492
+ when "rsa"
493
493
  OpenSSL::PKey::RSA.new(RSA_DSA_KEY_LENGTH)
494
- when 'ec'
494
+ when "ec"
495
495
  if RUBY_VERSION >= "2.4.0"
496
496
  OpenSSL::PKey::EC.generate(EC_NAME)
497
497
  else
@@ -510,11 +510,11 @@ module Gem::Security
510
510
  # Turns +email_address+ into an OpenSSL::X509::Name
511
511
 
512
512
  def self.email_to_name(email_address)
513
- email_address = email_address.gsub(/[^\w@.-]+/i, '_')
513
+ email_address = email_address.gsub(/[^\w@.-]+/i, "_")
514
514
 
515
- cn, dcs = email_address.split '@'
515
+ cn, dcs = email_address.split "@"
516
516
 
517
- dcs = dcs.split '.'
517
+ dcs = dcs.split "."
518
518
 
519
519
  OpenSSL::X509::Name.new([
520
520
  ["CN", cn],
@@ -571,17 +571,17 @@ module Gem::Security
571
571
  signee_key = certificate.public_key
572
572
 
573
573
  alt_name = certificate.extensions.find do |extension|
574
- extension.oid == 'subjectAltName'
574
+ extension.oid == "subjectAltName"
575
575
  end
576
576
 
577
- extensions = extensions.merge 'subjectAltName' => alt_name.value if
577
+ extensions = extensions.merge "subjectAltName" => alt_name.value if
578
578
  alt_name
579
579
 
580
580
  issuer_alt_name = signing_cert.extensions.find do |extension|
581
- extension.oid == 'subjectAltName'
581
+ extension.oid == "subjectAltName"
582
582
  end
583
583
 
584
- extensions = extensions.merge 'issuerAltName' => issuer_alt_name.value if
584
+ extensions = extensions.merge "issuerAltName" => issuer_alt_name.value if
585
585
  issuer_alt_name
586
586
 
587
587
  signed = create_cert signee_subject, signee_key, age, extensions, serial
@@ -597,7 +597,7 @@ module Gem::Security
597
597
  def self.trust_dir
598
598
  return @trust_dir if @trust_dir
599
599
 
600
- dir = File.join Gem.user_home, '.gem', 'trust'
600
+ dir = File.join Gem.user_home, ".gem", "trust"
601
601
 
602
602
  @trust_dir ||= Gem::Security::TrustDir.new dir
603
603
  end
@@ -617,8 +617,8 @@ module Gem::Security
617
617
  def self.write(pemmable, path, permissions = 0600, passphrase = nil, cipher = KEY_CIPHER)
618
618
  path = File.expand_path path
619
619
 
620
- File.open path, 'wb', permissions do |io|
621
- if passphrase and cipher
620
+ File.open path, "wb", permissions do |io|
621
+ if passphrase && cipher
622
622
  io.write pemmable.to_pem cipher, passphrase
623
623
  else
624
624
  io.write pemmable.to_pem
@@ -633,9 +633,9 @@ module Gem::Security
633
633
  end
634
634
 
635
635
  if Gem::HAVE_OPENSSL
636
- require_relative 'security/policy'
637
- require_relative 'security/policies'
638
- require_relative 'security/trust_dir'
636
+ require_relative "security/policy"
637
+ require_relative "security/policies"
638
+ require_relative "security/trust_dir"
639
639
  end
640
640
 
641
- require_relative 'security/signer'
641
+ require_relative "security/signer"
@@ -5,7 +5,7 @@
5
5
  # See LICENSE.txt for permissions.
6
6
  #++
7
7
 
8
- require_relative '../rubygems'
8
+ require_relative "../rubygems"
9
9
 
10
10
  # forward-declare
11
11
 
@@ -20,9 +20,9 @@ end
20
20
  module Gem::SecurityOption
21
21
  def add_security_option
22
22
  Gem::OptionParser.accept Gem::Security::Policy do |value|
23
- require_relative 'security'
23
+ require_relative "security"
24
24
 
25
- raise Gem::OptionParser::InvalidArgument, 'OpenSSL not installed' unless
25
+ raise Gem::OptionParser::InvalidArgument, "OpenSSL not installed" unless
26
26
  defined?(Gem::Security::HighSecurity)
27
27
 
28
28
  policy = Gem::Security::Policies[value]
@@ -33,9 +33,9 @@ module Gem::SecurityOption
33
33
  policy
34
34
  end
35
35
 
36
- add_option(:"Install/Update", '-P', '--trust-policy POLICY',
36
+ add_option(:"Install/Update", "-P", "--trust-policy POLICY",
37
37
  Gem::Security::Policy,
38
- 'Specify gem trust policy') do |value, options|
38
+ "Specify gem trust policy") do |value, options|
39
39
  options[:security_policy] = value
40
40
  end
41
41
  end
@@ -58,7 +58,7 @@ class Gem::Source::Git < Gem::Source
58
58
 
59
59
  @remote = true
60
60
  @root_dir = Gem.dir
61
- @git = ENV['git'] || 'git'
61
+ @git = ENV["git"] || "git"
62
62
  end
63
63
 
64
64
  def <=>(other)
@@ -76,10 +76,10 @@ class Gem::Source::Git < Gem::Source
76
76
  end
77
77
 
78
78
  def ==(other) # :nodoc:
79
- super and
80
- @name == other.name and
81
- @repository == other.repository and
82
- @reference == other.reference and
79
+ super &&
80
+ @name == other.name &&
81
+ @repository == other.repository &&
82
+ @reference == other.reference &&
83
83
  @need_submodules == other.need_submodules
84
84
  end
85
85
 
@@ -92,18 +92,18 @@ class Gem::Source::Git < Gem::Source
92
92
  return false unless File.exist? repo_cache_dir
93
93
 
94
94
  unless File.exist? install_dir
95
- system @git, 'clone', '--quiet', '--no-checkout',
95
+ system @git, "clone", "--quiet", "--no-checkout",
96
96
  repo_cache_dir, install_dir
97
97
  end
98
98
 
99
99
  Dir.chdir install_dir do
100
- system @git, 'fetch', '--quiet', '--force', '--tags', install_dir
100
+ system @git, "fetch", "--quiet", "--force", "--tags", install_dir
101
101
 
102
- success = system @git, 'reset', '--quiet', '--hard', rev_parse
102
+ success = system @git, "reset", "--quiet", "--hard", rev_parse
103
103
 
104
104
  if @need_submodules
105
105
  require "open3"
106
- _, status = Open3.capture2e(@git, 'submodule', 'update', '--quiet', '--init', '--recursive')
106
+ _, status = Open3.capture2e(@git, "submodule", "update", "--quiet", "--init", "--recursive")
107
107
 
108
108
  success &&= status.success?
109
109
  end
@@ -120,11 +120,11 @@ class Gem::Source::Git < Gem::Source
120
120
 
121
121
  if File.exist? repo_cache_dir
122
122
  Dir.chdir repo_cache_dir do
123
- system @git, 'fetch', '--quiet', '--force', '--tags',
124
- @repository, 'refs/heads/*:refs/heads/*'
123
+ system @git, "fetch", "--quiet", "--force", "--tags",
124
+ @repository, "refs/heads/*:refs/heads/*"
125
125
  end
126
126
  else
127
- system @git, 'clone', '--quiet', '--bare', '--no-hardlinks',
127
+ system @git, "clone", "--quiet", "--bare", "--no-hardlinks",
128
128
  @repository, repo_cache_dir
129
129
  end
130
130
  end
@@ -133,7 +133,7 @@ class Gem::Source::Git < Gem::Source
133
133
  # Directory where git gems get unpacked and so-forth.
134
134
 
135
135
  def base_dir # :nodoc:
136
- File.join @root_dir, 'bundler'
136
+ File.join @root_dir, "bundler"
137
137
  end
138
138
 
139
139
  ##
@@ -155,11 +155,11 @@ class Gem::Source::Git < Gem::Source
155
155
  def install_dir # :nodoc:
156
156
  return unless File.exist? repo_cache_dir
157
157
 
158
- File.join base_dir, 'gems', "#{@name}-#{dir_shortref}"
158
+ File.join base_dir, "gems", "#{@name}-#{dir_shortref}"
159
159
  end
160
160
 
161
161
  def pretty_print(q) # :nodoc:
162
- q.group 2, '[Git: ', ']' do
162
+ q.group 2, "[Git: ", "]" do
163
163
  q.breakable
164
164
  q.text @repository
165
165
 
@@ -172,7 +172,7 @@ class Gem::Source::Git < Gem::Source
172
172
  # The directory where the git gem's repository will be cached.
173
173
 
174
174
  def repo_cache_dir # :nodoc:
175
- File.join @root_dir, 'cache', 'bundler', 'git', "#{@name}-#{uri_hash}"
175
+ File.join @root_dir, "cache", "bundler", "git", "#{@name}-#{uri_hash}"
176
176
  end
177
177
 
178
178
  ##
@@ -182,7 +182,7 @@ class Gem::Source::Git < Gem::Source
182
182
  hash = nil
183
183
 
184
184
  Dir.chdir repo_cache_dir do
185
- hash = Gem::Util.popen(@git, 'rev-parse', @reference).strip
185
+ hash = Gem::Util.popen(@git, "rev-parse", @reference).strip
186
186
  end
187
187
 
188
188
  raise Gem::Exception,
@@ -201,7 +201,7 @@ class Gem::Source::Git < Gem::Source
201
201
  return [] unless install_dir
202
202
 
203
203
  Dir.chdir install_dir do
204
- Dir['{,*,*/*}.gemspec'].map do |spec_file|
204
+ Dir["{,*,*/*}.gemspec"].map do |spec_file|
205
205
  directory = File.dirname spec_file
206
206
  file = File.basename spec_file
207
207
 
@@ -211,7 +211,7 @@ class Gem::Source::Git < Gem::Source
211
211
  spec.base_dir = base_dir
212
212
 
213
213
  spec.extension_dir =
214
- File.join base_dir, 'extensions', Gem::Platform.local.to_s,
214
+ File.join base_dir, "extensions", Gem::Platform.local.to_s,
215
215
  Gem.extension_api_version, "#{name}-#{dir_shortref}"
216
216
 
217
217
  spec.full_gem_path = File.dirname spec.loaded_from if spec
@@ -226,11 +226,11 @@ class Gem::Source::Git < Gem::Source
226
226
  # A hash for the git gem based on the git repository URI.
227
227
 
228
228
  def uri_hash # :nodoc:
229
- require_relative '../openssl'
229
+ require_relative "../openssl"
230
230
 
231
231
  normalized =
232
232
  if @repository =~ %r{^\w+://(\w+@)?}
233
- uri = URI(@repository).normalize.to_s.sub %r{/$},''
233
+ uri = URI(@repository).normalize.to_s.sub %r{/$},""
234
234
  uri.sub(/\A(\w+)/) { $1.downcase }
235
235
  else
236
236
  @repository
@@ -33,6 +33,6 @@ class Gem::Source::Installed < Gem::Source
33
33
  end
34
34
 
35
35
  def pretty_print(q) # :nodoc:
36
- q.text '[Installed]'
36
+ q.text "[Installed]"
37
37
  end
38
38
  end
@@ -29,7 +29,7 @@ class Gem::Source::Local < Gem::Source
29
29
  end
30
30
 
31
31
  def inspect # :nodoc:
32
- keys = @specs ? @specs.keys.sort : 'NOT LOADED'
32
+ keys = @specs ? @specs.keys.sort : "NOT LOADED"
33
33
  "#<%s specs: %p>" % [self.class, keys]
34
34
  end
35
35
 
@@ -121,7 +121,7 @@ class Gem::Source::Local < Gem::Source
121
121
  end
122
122
 
123
123
  def pretty_print(q) # :nodoc:
124
- q.group 2, '[Local gems:', ']' do
124
+ q.group 2, "[Local gems:", "]" do
125
125
  q.breakable
126
126
  q.seplist @specs.keys do |v|
127
127
  q.text v.full_name
@@ -42,7 +42,7 @@ class Gem::Source::SpecificFile < Gem::Source
42
42
  end
43
43
 
44
44
  def pretty_print(q) # :nodoc:
45
- q.group 2, '[SpecificFile:', ']' do
45
+ q.group 2, "[SpecificFile:", "]" do
46
46
  q.breakable
47
47
  q.text @path
48
48
  end