rubygems-update 2.7.11 → 3.0.9

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 (359) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +67 -0
  3. data/.travis.yml +24 -18
  4. data/CODE_OF_CONDUCT.md +10 -8
  5. data/CONTRIBUTING.md +148 -0
  6. data/History.txt +458 -8
  7. data/MAINTAINERS.txt +1 -0
  8. data/Manifest.txt +16 -9
  9. data/POLICIES.md +92 -0
  10. data/README.md +53 -26
  11. data/Rakefile +77 -211
  12. data/{UPGRADING.rdoc → UPGRADING.md} +31 -32
  13. data/appveyor.yml +20 -45
  14. data/bin/gem +1 -2
  15. data/bin/update_rubygems +2 -3
  16. data/bundler/CHANGELOG.md +65 -0
  17. data/bundler/bundler.gemspec +7 -1
  18. data/bundler/lib/bundler/build_metadata.rb +1 -1
  19. data/bundler/lib/bundler/cli/add.rb +15 -5
  20. data/bundler/lib/bundler/cli/binstubs.rb +8 -2
  21. data/bundler/lib/bundler/cli/doctor.rb +47 -1
  22. data/bundler/lib/bundler/cli/install.rb +8 -5
  23. data/bundler/lib/bundler/cli/list.rb +41 -5
  24. data/bundler/lib/bundler/cli/outdated.rb +7 -1
  25. data/bundler/lib/bundler/cli/pristine.rb +4 -0
  26. data/bundler/lib/bundler/cli/remove.rb +18 -0
  27. data/bundler/lib/bundler/cli.rb +63 -21
  28. data/bundler/lib/bundler/definition.rb +15 -16
  29. data/bundler/lib/bundler/dependency.rb +2 -2
  30. data/bundler/lib/bundler/dsl.rb +19 -3
  31. data/bundler/lib/bundler/feature_flag.rb +7 -0
  32. data/bundler/lib/bundler/gem_version_promoter.rb +4 -2
  33. data/bundler/lib/bundler/injector.rb +168 -9
  34. data/bundler/lib/bundler/installer/parallel_installer.rb +5 -0
  35. data/bundler/lib/bundler/installer.rb +29 -6
  36. data/bundler/lib/bundler/plugin/events.rb +61 -0
  37. data/bundler/lib/bundler/plugin.rb +10 -3
  38. data/bundler/lib/bundler/resolver.rb +2 -2
  39. data/bundler/lib/bundler/rubygems_gem_installer.rb +7 -0
  40. data/bundler/lib/bundler/runtime.rb +8 -2
  41. data/bundler/lib/bundler/settings/validator.rb +23 -0
  42. data/bundler/lib/bundler/settings.rb +24 -3
  43. data/bundler/lib/bundler/shared_helpers.rb +19 -3
  44. data/bundler/lib/bundler/source/metadata.rb +2 -3
  45. data/bundler/lib/bundler/source.rb +9 -9
  46. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +1 -0
  47. data/bundler/lib/bundler/version.rb +1 -1
  48. data/bundler/lib/bundler.rb +26 -8
  49. data/bundler/man/bundle-add.ronn +13 -2
  50. data/bundler/man/bundle-config.ronn +21 -0
  51. data/bundler/man/bundle-install.ronn +1 -1
  52. data/bundler/man/bundle-list.ronn +19 -1
  53. data/bundler/man/bundle-outdated.ronn +4 -0
  54. data/bundler/man/bundle-remove.ronn +23 -0
  55. data/bundler/man/bundle-update.ronn +1 -1
  56. data/bundler/man/bundle.ronn +3 -0
  57. data/lib/rubygems/available_set.rb +1 -1
  58. data/lib/rubygems/basic_specification.rb +12 -12
  59. data/lib/rubygems/bundler_version_finder.rb +3 -3
  60. data/lib/rubygems/command.rb +22 -15
  61. data/lib/rubygems/command_manager.rb +22 -5
  62. data/lib/rubygems/commands/build_command.rb +41 -7
  63. data/lib/rubygems/commands/cert_command.rb +45 -24
  64. data/lib/rubygems/commands/check_command.rb +1 -1
  65. data/lib/rubygems/commands/cleanup_command.rb +14 -7
  66. data/lib/rubygems/commands/contents_command.rb +14 -15
  67. data/lib/rubygems/commands/dependency_command.rb +17 -17
  68. data/lib/rubygems/commands/environment_command.rb +20 -1
  69. data/lib/rubygems/commands/fetch_command.rb +2 -3
  70. data/lib/rubygems/commands/generate_index_command.rb +2 -3
  71. data/lib/rubygems/commands/help_command.rb +12 -13
  72. data/lib/rubygems/commands/info_command.rb +33 -0
  73. data/lib/rubygems/commands/install_command.rb +21 -17
  74. data/lib/rubygems/commands/list_command.rb +0 -1
  75. data/lib/rubygems/commands/lock_command.rb +3 -4
  76. data/lib/rubygems/commands/open_command.rb +16 -10
  77. data/lib/rubygems/commands/owner_command.rb +21 -7
  78. data/lib/rubygems/commands/pristine_command.rb +23 -16
  79. data/lib/rubygems/commands/push_command.rb +19 -8
  80. data/lib/rubygems/commands/query_command.rb +24 -24
  81. data/lib/rubygems/commands/rdoc_command.rb +3 -4
  82. data/lib/rubygems/commands/search_command.rb +0 -1
  83. data/lib/rubygems/commands/server_command.rb +1 -2
  84. data/lib/rubygems/commands/setup_command.rb +86 -48
  85. data/lib/rubygems/commands/signin_command.rb +2 -1
  86. data/lib/rubygems/commands/signout_command.rb +2 -2
  87. data/lib/rubygems/commands/sources_command.rb +11 -12
  88. data/lib/rubygems/commands/specification_command.rb +7 -7
  89. data/lib/rubygems/commands/uninstall_command.rb +50 -18
  90. data/lib/rubygems/commands/unpack_command.rb +16 -7
  91. data/lib/rubygems/commands/update_command.rb +28 -23
  92. data/lib/rubygems/commands/which_command.rb +5 -8
  93. data/lib/rubygems/commands/yank_command.rb +1 -2
  94. data/lib/rubygems/compatibility.rb +1 -21
  95. data/lib/rubygems/config_file.rb +36 -36
  96. data/lib/rubygems/core_ext/kernel_require.rb +6 -6
  97. data/lib/rubygems/core_ext/kernel_warn.rb +45 -0
  98. data/lib/rubygems/defaults.rb +31 -19
  99. data/lib/rubygems/dependency.rb +15 -15
  100. data/lib/rubygems/dependency_installer.rb +30 -33
  101. data/lib/rubygems/dependency_list.rb +9 -10
  102. data/lib/rubygems/deprecate.rb +2 -3
  103. data/lib/rubygems/doctor.rb +5 -6
  104. data/lib/rubygems/errors.rb +3 -3
  105. data/lib/rubygems/exceptions.rb +11 -8
  106. data/lib/rubygems/ext/build_error.rb +0 -1
  107. data/lib/rubygems/ext/builder.rb +50 -23
  108. data/lib/rubygems/ext/cmake_builder.rb +2 -2
  109. data/lib/rubygems/ext/configure_builder.rb +2 -3
  110. data/lib/rubygems/ext/ext_conf_builder.rb +8 -7
  111. data/lib/rubygems/ext/rake_builder.rb +16 -18
  112. data/lib/rubygems/ext.rb +0 -1
  113. data/lib/rubygems/gem_runner.rb +2 -2
  114. data/lib/rubygems/gemcutter_utilities.rb +46 -12
  115. data/lib/rubygems/indexer.rb +19 -12
  116. data/lib/rubygems/install_default_message.rb +0 -1
  117. data/lib/rubygems/install_message.rb +0 -1
  118. data/lib/rubygems/install_update_options.rb +3 -29
  119. data/lib/rubygems/installer.rb +97 -55
  120. data/lib/rubygems/installer_test_case.rb +2 -16
  121. data/lib/rubygems/local_remote_options.rb +5 -4
  122. data/lib/rubygems/mock_gem_ui.rb +3 -4
  123. data/lib/rubygems/name_tuple.rb +4 -4
  124. data/lib/rubygems/package/digest_io.rb +3 -4
  125. data/lib/rubygems/package/file_source.rb +3 -4
  126. data/lib/rubygems/package/io_source.rb +1 -2
  127. data/lib/rubygems/package/old.rb +8 -16
  128. data/lib/rubygems/package/source.rb +0 -1
  129. data/lib/rubygems/package/tar_header.rb +13 -4
  130. data/lib/rubygems/package/tar_reader/entry.rb +20 -4
  131. data/lib/rubygems/package/tar_reader.rb +2 -4
  132. data/lib/rubygems/package/tar_test_case.rb +2 -8
  133. data/lib/rubygems/package/tar_writer.rb +13 -15
  134. data/lib/rubygems/package.rb +90 -63
  135. data/lib/rubygems/package_task.rb +0 -1
  136. data/lib/rubygems/path_support.rb +16 -6
  137. data/lib/rubygems/platform.rb +4 -5
  138. data/lib/rubygems/psych_tree.rb +1 -1
  139. data/lib/rubygems/rdoc.rb +2 -313
  140. data/lib/rubygems/remote_fetcher.rb +29 -82
  141. data/lib/rubygems/request/connection_pools.rb +24 -13
  142. data/lib/rubygems/request/http_pool.rb +3 -4
  143. data/lib/rubygems/request/https_pool.rb +1 -3
  144. data/lib/rubygems/request.rb +17 -16
  145. data/lib/rubygems/request_set/gem_dependency_api.rb +46 -49
  146. data/lib/rubygems/request_set/lockfile/parser.rb +18 -29
  147. data/lib/rubygems/request_set/lockfile/tokenizer.rb +9 -9
  148. data/lib/rubygems/request_set/lockfile.rb +12 -12
  149. data/lib/rubygems/request_set.rb +52 -25
  150. data/lib/rubygems/requirement.rb +32 -21
  151. data/lib/rubygems/resolver/activation_request.rb +6 -6
  152. data/lib/rubygems/resolver/api_set.rb +5 -6
  153. data/lib/rubygems/resolver/api_specification.rb +2 -3
  154. data/lib/rubygems/resolver/best_set.rb +5 -6
  155. data/lib/rubygems/resolver/composed_set.rb +5 -6
  156. data/lib/rubygems/resolver/conflict.rb +5 -5
  157. data/lib/rubygems/resolver/current_set.rb +1 -2
  158. data/lib/rubygems/resolver/dependency_request.rb +4 -4
  159. data/lib/rubygems/resolver/git_set.rb +5 -6
  160. data/lib/rubygems/resolver/git_specification.rb +4 -5
  161. data/lib/rubygems/resolver/index_set.rb +5 -6
  162. data/lib/rubygems/resolver/index_specification.rb +3 -4
  163. data/lib/rubygems/resolver/installed_specification.rb +3 -4
  164. data/lib/rubygems/resolver/installer_set.rb +12 -12
  165. data/lib/rubygems/resolver/local_specification.rb +1 -2
  166. data/lib/rubygems/resolver/lock_set.rb +5 -6
  167. data/lib/rubygems/resolver/lock_specification.rb +7 -8
  168. data/lib/rubygems/resolver/requirement_list.rb +1 -1
  169. data/lib/rubygems/resolver/set.rb +2 -2
  170. data/lib/rubygems/resolver/source_set.rb +4 -5
  171. data/lib/rubygems/resolver/spec_specification.rb +1 -2
  172. data/lib/rubygems/resolver/specification.rb +10 -7
  173. data/lib/rubygems/resolver/stats.rb +1 -1
  174. data/lib/rubygems/resolver/vendor_set.rb +4 -5
  175. data/lib/rubygems/resolver/vendor_specification.rb +2 -3
  176. data/lib/rubygems/resolver.rb +14 -16
  177. data/lib/rubygems/s3_uri_signer.rb +183 -0
  178. data/lib/rubygems/safe_yaml.rb +18 -10
  179. data/lib/rubygems/security/policies.rb +1 -2
  180. data/lib/rubygems/security/policy.rb +25 -25
  181. data/lib/rubygems/security/signer.rb +72 -24
  182. data/lib/rubygems/security/trust_dir.rb +10 -10
  183. data/lib/rubygems/security.rb +21 -22
  184. data/lib/rubygems/security_option.rb +0 -1
  185. data/lib/rubygems/server.rb +21 -21
  186. data/lib/rubygems/source/git.rb +9 -10
  187. data/lib/rubygems/source/installed.rb +3 -4
  188. data/lib/rubygems/source/local.rb +7 -7
  189. data/lib/rubygems/source/lock.rb +4 -4
  190. data/lib/rubygems/source/specific_file.rb +5 -5
  191. data/lib/rubygems/source/vendor.rb +2 -3
  192. data/lib/rubygems/source.rb +16 -25
  193. data/lib/rubygems/source_list.rb +2 -2
  194. data/lib/rubygems/source_local.rb +0 -1
  195. data/lib/rubygems/spec_fetcher.rb +5 -6
  196. data/lib/rubygems/specification.rb +219 -558
  197. data/lib/rubygems/specification_policy.rb +407 -0
  198. data/lib/rubygems/stub_specification.rb +12 -17
  199. data/lib/rubygems/test_case.rb +161 -75
  200. data/lib/rubygems/test_utilities.rb +20 -35
  201. data/lib/rubygems/text.rb +6 -6
  202. data/lib/rubygems/uninstaller.rb +38 -27
  203. data/lib/rubygems/uri_formatter.rb +1 -2
  204. data/lib/rubygems/user_interaction.rb +37 -89
  205. data/lib/rubygems/util/licenses.rb +27 -1
  206. data/lib/rubygems/util/list.rb +1 -1
  207. data/lib/rubygems/util.rb +32 -14
  208. data/lib/rubygems/validator.rb +4 -5
  209. data/lib/rubygems/version.rb +15 -15
  210. data/lib/rubygems/version_option.rb +2 -3
  211. data/lib/rubygems.rb +71 -102
  212. data/rubygems-update.gemspec +43 -0
  213. data/setup.rb +2 -8
  214. data/test/rubygems/ca_cert.pem +74 -65
  215. data/test/rubygems/client.pem +103 -45
  216. data/test/rubygems/rubygems_plugin.rb +0 -1
  217. data/test/rubygems/simple_gem.rb +1 -1
  218. data/test/rubygems/ssl_cert.pem +78 -17
  219. data/test/rubygems/ssl_key.pem +25 -13
  220. data/test/rubygems/test_bundled_ca.rb +1 -1
  221. data/test/rubygems/test_config.rb +7 -2
  222. data/test/rubygems/test_gem.rb +205 -132
  223. data/test/rubygems/test_gem_bundler_version_finder.rb +4 -0
  224. data/test/rubygems/test_gem_command.rb +0 -1
  225. data/test/rubygems/test_gem_command_manager.rb +18 -3
  226. data/test/rubygems/test_gem_commands_build_command.rb +220 -15
  227. data/test/rubygems/test_gem_commands_cert_command.rb +69 -8
  228. data/test/rubygems/test_gem_commands_check_command.rb +1 -1
  229. data/test/rubygems/test_gem_commands_cleanup_command.rb +27 -1
  230. data/test/rubygems/test_gem_commands_contents_command.rb +1 -2
  231. data/test/rubygems/test_gem_commands_dependency_command.rb +33 -34
  232. data/test/rubygems/test_gem_commands_environment_command.rb +1 -0
  233. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -1
  234. data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -1
  235. data/test/rubygems/test_gem_commands_help_command.rb +7 -4
  236. data/test/rubygems/test_gem_commands_info_command.rb +44 -0
  237. data/test/rubygems/test_gem_commands_install_command.rb +79 -12
  238. data/test/rubygems/test_gem_commands_lock_command.rb +0 -1
  239. data/test/rubygems/test_gem_commands_open_command.rb +29 -0
  240. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -1
  241. data/test/rubygems/test_gem_commands_owner_command.rb +93 -57
  242. data/test/rubygems/test_gem_commands_pristine_command.rb +65 -30
  243. data/test/rubygems/test_gem_commands_push_command.rb +54 -0
  244. data/test/rubygems/test_gem_commands_query_command.rb +102 -100
  245. data/test/rubygems/test_gem_commands_search_command.rb +0 -1
  246. data/test/rubygems/test_gem_commands_server_command.rb +0 -1
  247. data/test/rubygems/test_gem_commands_setup_command.rb +50 -15
  248. data/test/rubygems/test_gem_commands_signin_command.rb +1 -1
  249. data/test/rubygems/test_gem_commands_sources_command.rb +0 -1
  250. data/test/rubygems/test_gem_commands_specification_command.rb +2 -3
  251. data/test/rubygems/test_gem_commands_stale_command.rb +3 -2
  252. data/test/rubygems/test_gem_commands_uninstall_command.rb +161 -8
  253. data/test/rubygems/test_gem_commands_unpack_command.rb +17 -1
  254. data/test/rubygems/test_gem_commands_update_command.rb +19 -2
  255. data/test/rubygems/test_gem_commands_which_command.rb +0 -1
  256. data/test/rubygems/test_gem_commands_yank_command.rb +0 -1
  257. data/test/rubygems/test_gem_config_file.rb +4 -2
  258. data/test/rubygems/test_gem_dependency.rb +0 -1
  259. data/test/rubygems/test_gem_dependency_installer.rb +8 -5
  260. data/test/rubygems/test_gem_dependency_list.rb +6 -7
  261. data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -1
  262. data/test/rubygems/test_gem_doctor.rb +1 -2
  263. data/test/rubygems/test_gem_ext_builder.rb +10 -23
  264. data/test/rubygems/test_gem_ext_cmake_builder.rb +5 -4
  265. data/test/rubygems/test_gem_ext_configure_builder.rb +3 -3
  266. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +8 -9
  267. data/test/rubygems/test_gem_ext_rake_builder.rb +20 -5
  268. data/test/rubygems/test_gem_gem_runner.rb +0 -1
  269. data/test/rubygems/test_gem_gemcutter_utilities.rb +32 -6
  270. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -1
  271. data/test/rubygems/test_gem_indexer.rb +16 -10
  272. data/test/rubygems/test_gem_install_update_options.rb +1 -20
  273. data/test/rubygems/test_gem_installer.rb +154 -119
  274. data/test/rubygems/test_gem_local_remote_options.rb +3 -3
  275. data/test/rubygems/test_gem_name_tuple.rb +0 -1
  276. data/test/rubygems/test_gem_package.rb +77 -31
  277. data/test/rubygems/test_gem_package_old.rb +0 -1
  278. data/test/rubygems/test_gem_package_tar_header.rb +42 -2
  279. data/test/rubygems/test_gem_package_tar_reader.rb +0 -1
  280. data/test/rubygems/test_gem_package_tar_reader_entry.rb +11 -0
  281. data/test/rubygems/test_gem_package_tar_writer.rb +43 -7
  282. data/test/rubygems/test_gem_package_task.rb +2 -2
  283. data/test/rubygems/test_gem_path_support.rb +28 -11
  284. data/test/rubygems/test_gem_platform.rb +4 -5
  285. data/test/rubygems/test_gem_rdoc.rb +1 -136
  286. data/test/rubygems/test_gem_remote_fetcher.rb +241 -141
  287. data/test/rubygems/test_gem_request.rb +9 -9
  288. data/test/rubygems/test_gem_request_connection_pools.rb +24 -3
  289. data/test/rubygems/test_gem_request_set.rb +5 -5
  290. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +82 -64
  291. data/test/rubygems/test_gem_request_set_lockfile.rb +1 -2
  292. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +4 -9
  293. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +1 -1
  294. data/test/rubygems/test_gem_requirement.rb +24 -4
  295. data/test/rubygems/test_gem_resolver.rb +13 -17
  296. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -1
  297. data/test/rubygems/test_gem_resolver_api_set.rb +0 -1
  298. data/test/rubygems/test_gem_resolver_api_specification.rb +0 -1
  299. data/test/rubygems/test_gem_resolver_best_set.rb +0 -1
  300. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -1
  301. data/test/rubygems/test_gem_resolver_conflict.rb +0 -1
  302. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -1
  303. data/test/rubygems/test_gem_resolver_git_set.rb +0 -1
  304. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -1
  305. data/test/rubygems/test_gem_resolver_index_set.rb +0 -1
  306. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -1
  307. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -1
  308. data/test/rubygems/test_gem_resolver_installer_set.rb +2 -3
  309. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -1
  310. data/test/rubygems/test_gem_resolver_lock_set.rb +0 -1
  311. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -1
  312. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -1
  313. data/test/rubygems/test_gem_resolver_specification.rb +1 -2
  314. data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -1
  315. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -1
  316. data/test/rubygems/test_gem_security.rb +1 -3
  317. data/test/rubygems/test_gem_security_policy.rb +5 -6
  318. data/test/rubygems/test_gem_security_signer.rb +4 -3
  319. data/test/rubygems/test_gem_security_trust_dir.rb +1 -2
  320. data/test/rubygems/test_gem_server.rb +4 -4
  321. data/test/rubygems/test_gem_source.rb +0 -13
  322. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -1
  323. data/test/rubygems/test_gem_source_git.rb +0 -1
  324. data/test/rubygems/test_gem_source_installed.rb +0 -1
  325. data/test/rubygems/test_gem_source_lock.rb +0 -1
  326. data/test/rubygems/test_gem_source_vendor.rb +0 -1
  327. data/test/rubygems/test_gem_spec_fetcher.rb +0 -1
  328. data/test/rubygems/test_gem_specification.rb +366 -198
  329. data/test/rubygems/test_gem_stream_ui.rb +15 -32
  330. data/test/rubygems/test_gem_stub_specification.rb +0 -2
  331. data/test/rubygems/test_gem_text.rb +4 -0
  332. data/test/rubygems/test_gem_uninstaller.rb +42 -3
  333. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -1
  334. data/test/rubygems/test_gem_uri_formatter.rb +0 -1
  335. data/test/rubygems/test_gem_util.rb +31 -11
  336. data/test/rubygems/test_gem_validator.rb +0 -1
  337. data/test/rubygems/test_gem_version.rb +11 -11
  338. data/test/rubygems/test_gem_version_option.rb +0 -1
  339. data/test/rubygems/test_remote_fetch_error.rb +0 -1
  340. data/test/rubygems/test_require.rb +67 -52
  341. data/util/CL2notes +1 -2
  342. data/util/ci +20 -12
  343. data/util/cops/deprecations.rb +52 -0
  344. data/util/create_certs.rb +6 -7
  345. data/util/create_certs.sh +27 -0
  346. data/util/create_encrypted_key.rb +4 -5
  347. data/util/patch_with_prs.rb +1 -1
  348. data/util/rubocop +8 -0
  349. data/util/update_bundled_ca_certificates.rb +12 -13
  350. data/util/update_changelog.rb +1 -1
  351. metadata +61 -51
  352. data/.autotest +0 -71
  353. data/.document +0 -5
  354. data/CONTRIBUTING.rdoc +0 -130
  355. data/CVE-2013-4287.txt +0 -35
  356. data/CVE-2013-4363.txt +0 -45
  357. data/CVE-2015-3900.txt +0 -40
  358. data/POLICIES.rdoc +0 -74
  359. data/test/rubygems/fix_openssl_warnings.rb +0 -13
@@ -4,7 +4,7 @@ require 'rubygems'
4
4
 
5
5
  class TestGemRequire < Gem::TestCase
6
6
  class Latch
7
- def initialize count = 1
7
+ def initialize(count = 1)
8
8
  @count = count
9
9
  @lock = Monitor.new
10
10
  @cv = @lock.new_cond
@@ -40,10 +40,10 @@ class TestGemRequire < Gem::TestCase
40
40
 
41
41
  # Providing -I on the commandline should always beat gems
42
42
  def test_dash_i_beats_gems
43
- a1 = new_spec "a", "1", {"b" => "= 1"}, "lib/test_gem_require_a.rb"
44
- b1 = new_spec "b", "1", {"c" => "> 0"}, "lib/b/c.rb"
45
- c1 = new_spec "c", "1", nil, "lib/c/c.rb"
46
- c2 = new_spec "c", "2", nil, "lib/c/c.rb"
43
+ a1 = util_spec "a", "1", {"b" => "= 1"}, "lib/test_gem_require_a.rb"
44
+ b1 = util_spec "b", "1", {"c" => "> 0"}, "lib/b/c.rb"
45
+ c1 = util_spec "c", "1", nil, "lib/c/c.rb"
46
+ c2 = util_spec "c", "2", nil, "lib/c/c.rb"
47
47
 
48
48
  install_specs c1, c2, b1, a1
49
49
 
@@ -80,13 +80,11 @@ class TestGemRequire < Gem::TestCase
80
80
  end
81
81
 
82
82
  def test_concurrent_require
83
- skip 'deadlock' if /^1\.8\./ =~ RUBY_VERSION
84
-
85
83
  Object.const_set :FILE_ENTERED_LATCH, Latch.new(2)
86
84
  Object.const_set :FILE_EXIT_LATCH, Latch.new(1)
87
85
 
88
- a1 = new_spec "a", "1", nil, "lib/a.rb"
89
- b1 = new_spec "b", "1", nil, "lib/b.rb"
86
+ a1 = util_spec "a", "1", nil, "lib/a.rb"
87
+ b1 = util_spec "b", "1", nil, "lib/b.rb"
90
88
 
91
89
  install_specs a1, b1
92
90
 
@@ -107,9 +105,9 @@ class TestGemRequire < Gem::TestCase
107
105
  end
108
106
 
109
107
  def test_require_is_not_lazy_with_exact_req
110
- a1 = new_spec "a", "1", {"b" => "= 1"}, "lib/test_gem_require_a.rb"
111
- b1 = new_spec "b", "1", nil, "lib/b/c.rb"
112
- b2 = new_spec "b", "2", nil, "lib/b/c.rb"
108
+ a1 = util_spec "a", "1", {"b" => "= 1"}, "lib/test_gem_require_a.rb"
109
+ b1 = util_spec "b", "1", nil, "lib/b/c.rb"
110
+ b2 = util_spec "b", "2", nil, "lib/b/c.rb"
113
111
 
114
112
  install_specs b1, b2, a1
115
113
 
@@ -122,9 +120,9 @@ class TestGemRequire < Gem::TestCase
122
120
  end
123
121
 
124
122
  def test_require_is_lazy_with_inexact_req
125
- a1 = new_spec "a", "1", {"b" => ">= 1"}, "lib/test_gem_require_a.rb"
126
- b1 = new_spec "b", "1", nil, "lib/b/c.rb"
127
- b2 = new_spec "b", "2", nil, "lib/b/c.rb"
123
+ a1 = util_spec "a", "1", {"b" => ">= 1"}, "lib/test_gem_require_a.rb"
124
+ b1 = util_spec "b", "1", nil, "lib/b/c.rb"
125
+ b2 = util_spec "b", "2", nil, "lib/b/c.rb"
128
126
 
129
127
  install_specs b1, b2, a1
130
128
 
@@ -137,8 +135,8 @@ class TestGemRequire < Gem::TestCase
137
135
  end
138
136
 
139
137
  def test_require_is_not_lazy_with_one_possible
140
- a1 = new_spec "a", "1", {"b" => ">= 1"}, "lib/test_gem_require_a.rb"
141
- b1 = new_spec "b", "1", nil, "lib/b/c.rb"
138
+ a1 = util_spec "a", "1", {"b" => ">= 1"}, "lib/test_gem_require_a.rb"
139
+ b1 = util_spec "b", "1", nil, "lib/b/c.rb"
142
140
 
143
141
  install_specs b1, a1
144
142
 
@@ -151,7 +149,7 @@ class TestGemRequire < Gem::TestCase
151
149
  end
152
150
 
153
151
  def test_require_can_use_a_pathname_object
154
- a1 = new_spec "a", "1", nil, "lib/test_gem_require_a.rb"
152
+ a1 = util_spec "a", "1", nil, "lib/test_gem_require_a.rb"
155
153
 
156
154
  install_specs a1
157
155
 
@@ -161,9 +159,9 @@ class TestGemRequire < Gem::TestCase
161
159
  end
162
160
 
163
161
  def test_activate_via_require_respects_loaded_files
164
- a1 = new_spec "a", "1", {"b" => ">= 1"}, "lib/test_gem_require_a.rb"
165
- b1 = new_spec "b", "1", nil, "lib/benchmark.rb"
166
- b2 = new_spec "b", "2", nil, "lib/benchmark.rb"
162
+ a1 = util_spec "a", "1", {"b" => ">= 1"}, "lib/test_gem_require_a.rb"
163
+ b1 = util_spec "b", "1", nil, "lib/benchmark.rb"
164
+ b2 = util_spec "b", "2", nil, "lib/benchmark.rb"
167
165
 
168
166
  install_specs b1, b2, a1
169
167
 
@@ -181,11 +179,11 @@ class TestGemRequire < Gem::TestCase
181
179
  end
182
180
 
183
181
  def test_already_activated_direct_conflict
184
- a1 = new_spec "a", "1", { "b" => "> 0" }
185
- b1 = new_spec "b", "1", { "c" => ">= 1" }, "lib/ib.rb"
186
- b2 = new_spec "b", "2", { "c" => ">= 2" }, "lib/ib.rb"
187
- c1 = new_spec "c", "1", nil, "lib/d.rb"
188
- c2 = new_spec("c", "2", nil, "lib/d.rb")
182
+ a1 = util_spec "a", "1", { "b" => "> 0" }
183
+ b1 = util_spec "b", "1", { "c" => ">= 1" }, "lib/ib.rb"
184
+ b2 = util_spec "b", "2", { "c" => ">= 2" }, "lib/ib.rb"
185
+ c1 = util_spec "c", "1", nil, "lib/d.rb"
186
+ c2 = util_spec("c", "2", nil, "lib/d.rb")
189
187
 
190
188
  install_specs c1, c2, b1, b2, a1
191
189
 
@@ -201,13 +199,13 @@ class TestGemRequire < Gem::TestCase
201
199
  end
202
200
 
203
201
  def test_multiple_gems_with_the_same_path
204
- a1 = new_spec "a", "1", { "b" => "> 0", "x" => "> 0" }
205
- b1 = new_spec "b", "1", { "c" => ">= 1" }, "lib/ib.rb"
206
- b2 = new_spec "b", "2", { "c" => ">= 2" }, "lib/ib.rb"
207
- x1 = new_spec "x", "1", nil, "lib/ib.rb"
208
- x2 = new_spec "x", "2", nil, "lib/ib.rb"
209
- c1 = new_spec "c", "1", nil, "lib/d.rb"
210
- c2 = new_spec("c", "2", nil, "lib/d.rb")
202
+ a1 = util_spec "a", "1", { "b" => "> 0", "x" => "> 0" }
203
+ b1 = util_spec "b", "1", { "c" => ">= 1" }, "lib/ib.rb"
204
+ b2 = util_spec "b", "2", { "c" => ">= 2" }, "lib/ib.rb"
205
+ x1 = util_spec "x", "1", nil, "lib/ib.rb"
206
+ x2 = util_spec "x", "2", nil, "lib/ib.rb"
207
+ c1 = util_spec "c", "1", nil, "lib/d.rb"
208
+ c2 = util_spec("c", "2", nil, "lib/d.rb")
211
209
 
212
210
  install_specs c1, c2, x1, x2, b1, b2, a1
213
211
 
@@ -224,13 +222,13 @@ class TestGemRequire < Gem::TestCase
224
222
  end
225
223
 
226
224
  def test_unable_to_find_good_unresolved_version
227
- a1 = new_spec "a", "1", { "b" => "> 0" }
228
- b1 = new_spec "b", "1", { "c" => ">= 2" }, "lib/ib.rb"
229
- b2 = new_spec "b", "2", { "c" => ">= 3" }, "lib/ib.rb"
225
+ a1 = util_spec "a", "1", { "b" => "> 0" }
226
+ b1 = util_spec "b", "1", { "c" => ">= 2" }, "lib/ib.rb"
227
+ b2 = util_spec "b", "2", { "c" => ">= 3" }, "lib/ib.rb"
230
228
 
231
- c1 = new_spec "c", "1", nil, "lib/d.rb"
232
- c2 = new_spec "c", "2", nil, "lib/d.rb"
233
- c3 = new_spec "c", "3", nil, "lib/d.rb"
229
+ c1 = util_spec "c", "1", nil, "lib/d.rb"
230
+ c2 = util_spec "c", "2", nil, "lib/d.rb"
231
+ c3 = util_spec "c", "3", nil, "lib/d.rb"
234
232
 
235
233
  install_specs c1, c2, c3, b1, b2, a1
236
234
 
@@ -273,10 +271,10 @@ class TestGemRequire < Gem::TestCase
273
271
  end
274
272
 
275
273
  def test_require_doesnt_traverse_development_dependencies
276
- a = new_spec("a", "1", nil, "lib/a.rb")
277
- z = new_spec("z", "1", "w" => "> 0")
278
- w1 = new_spec("w", "1") { |s| s.add_development_dependency "non-existent" }
279
- w2 = new_spec("w", "2") { |s| s.add_development_dependency "non-existent" }
274
+ a = util_spec("a", "1", nil, "lib/a.rb")
275
+ z = util_spec("z", "1", "w" => "> 0")
276
+ w1 = util_spec("w", "1") { |s| s.add_development_dependency "non-existent" }
277
+ w2 = util_spec("w", "2") { |s| s.add_development_dependency "non-existent" }
280
278
 
281
279
  install_specs a, w1, w2, z
282
280
 
@@ -296,7 +294,6 @@ class TestGemRequire < Gem::TestCase
296
294
  end
297
295
 
298
296
  def test_realworld_default_gem
299
- skip "no default gems on ruby < 2.0" unless RUBY_VERSION >= "2"
300
297
  begin
301
298
  gem 'json'
302
299
  rescue Gem::MissingSpecError
@@ -316,7 +313,7 @@ class TestGemRequire < Gem::TestCase
316
313
  default_gem_spec = new_default_spec("default", "2.0.0.0",
317
314
  nil, "default/gem.rb")
318
315
  install_default_specs(default_gem_spec)
319
- normal_gem_spec = new_spec("default", "3.0", nil,
316
+ normal_gem_spec = util_spec("default", "3.0", nil,
320
317
  "lib/default/gem.rb")
321
318
  install_specs(normal_gem_spec)
322
319
  assert_require "default/gem"
@@ -366,7 +363,7 @@ class TestGemRequire < Gem::TestCase
366
363
  end
367
364
 
368
365
  def test_require_default_when_gem_defined
369
- a = new_spec("a", "1", nil, "lib/a.rb")
366
+ a = util_spec("a", "1", nil, "lib/a.rb")
370
367
  install_specs a
371
368
  c = Class.new do
372
369
  def self.gem(*args)
@@ -379,8 +376,8 @@ class TestGemRequire < Gem::TestCase
379
376
 
380
377
 
381
378
  def test_require_bundler
382
- b1 = new_spec('bundler', '1', nil, "lib/bundler/setup.rb")
383
- b2a = new_spec('bundler', '2.a', nil, "lib/bundler/setup.rb")
379
+ b1 = util_spec('bundler', '1', nil, "lib/bundler/setup.rb")
380
+ b2a = util_spec('bundler', '2.a', nil, "lib/bundler/setup.rb")
384
381
  install_specs b1, b2a
385
382
 
386
383
  require "rubygems/bundler_version_finder"
@@ -392,8 +389,8 @@ class TestGemRequire < Gem::TestCase
392
389
 
393
390
  def test_require_bundler_missing_bundler_version
394
391
  Gem::BundlerVersionFinder.stub(:bundler_version_with_reason, ["55", "reason"]) do
395
- b1 = new_spec('bundler', '1.999999999', nil, "lib/bundler/setup.rb")
396
- b2a = new_spec('bundler', '2.a', nil, "lib/bundler/setup.rb")
392
+ b1 = util_spec('bundler', '1.999999999', nil, "lib/bundler/setup.rb")
393
+ b2a = util_spec('bundler', '2.a', nil, "lib/bundler/setup.rb")
397
394
  install_specs b1, b2a
398
395
 
399
396
  e = assert_raises Gem::MissingSpecVersionError do
@@ -405,8 +402,8 @@ class TestGemRequire < Gem::TestCase
405
402
 
406
403
  def test_require_bundler_with_bundler_version
407
404
  Gem::BundlerVersionFinder.stub(:bundler_version_with_reason, ["1", "reason"]) do
408
- b1 = new_spec('bundler', '1.999999999', nil, "lib/bundler/setup.rb")
409
- b2 = new_spec('bundler', '2', nil, "lib/bundler/setup.rb")
405
+ b1 = util_spec('bundler', '1.999999999', nil, "lib/bundler/setup.rb")
406
+ b2 = util_spec('bundler', '2', nil, "lib/bundler/setup.rb")
410
407
  install_specs b1, b2
411
408
 
412
409
  $:.clear
@@ -415,6 +412,24 @@ class TestGemRequire < Gem::TestCase
415
412
  end
416
413
  end
417
414
 
415
+ if RUBY_VERSION >= "2.5"
416
+ def test_no_kernel_require_in_warn_with_uplevel
417
+ lib = File.realpath("../../../lib", __FILE__)
418
+ Dir.mktmpdir("warn_test") do |dir|
419
+ File.write(dir + "/sub.rb", "warn 'uplevel', 'test', uplevel: 1\n")
420
+ File.write(dir + "/main.rb", "require 'sub'\n")
421
+ _, err = capture_subprocess_io do
422
+ system(@@ruby, "-w", "-rpp", "--disable=gems", "-I", lib, "-C", dir, "-I.", "main.rb")
423
+ end
424
+ assert_equal "main.rb:1: warning: uplevel\ntest\n", err
425
+ _, err = capture_subprocess_io do
426
+ system(@@ruby, "-w", "-rpp", "--enable=gems", "-I", lib, "-C", dir, "-I.", "main.rb")
427
+ end
428
+ assert_equal "main.rb:1: warning: uplevel\ntest\n", err
429
+ end
430
+ end
431
+ end
432
+
418
433
  def silence_warnings
419
434
  old_verbose, $VERBOSE = $VERBOSE, false
420
435
  yield
data/util/CL2notes CHANGED
@@ -9,7 +9,7 @@ def format_text(text, wrap, indent=0)
9
9
  work = text.dup
10
10
 
11
11
  while work.length > wrap
12
- if work =~ /^(.{0,#{wrap}})[ \n]/o then
12
+ if work =~ /^(.{0,#{wrap}})[ \n]/o
13
13
  result << $1
14
14
  work.slice!(0, $&.length)
15
15
  else
@@ -53,4 +53,3 @@ entries.sort_by { |file, | file }.each do |file, file_entries|
53
53
  puts file_entry
54
54
  end
55
55
  end
56
-
data/util/ci CHANGED
@@ -47,25 +47,33 @@ end
47
47
  case ARGV
48
48
  when %w(before_script)
49
49
  if TOOL.rubygems?
50
- run('gem', %W(uninstall executable-hooks gem-wrappers -x --force -i #{`gem env home`.strip}@global))
51
- run('gem', %W(install rake -v #{'~> 10.5'} --no-document))
52
- run('gem', %W(install bundler -v #{'1.16.6'} --no-document))
53
- run('gem', %W(install hoe -v #{'3.15.0'} --no-document))
54
- run('gem', %w(install hoe-travis --no-document))
55
- run('gem', %W(install minitest -v #{'~> 4.7'} --no-document))
56
- run('rake', %w(_10.5.0_ travis:before -t))
50
+ run('ruby', %W(-I lib bin/gem uninstall executable-hooks gem-wrappers bundler-unload -x --force -i #{`gem env home`.strip}@global))
51
+
52
+ if RUBY_VERSION >= "2.6.0"
53
+ run('gem', %w(install minitest -v 5.4.3))
54
+ end
55
+
56
+ # 2.5 images of Travis was broken about bundler installation.
57
+ if RUBY_VERSION >= "2.5.0" && RUBY_VERSION < "2.6.0"
58
+ run('gem', %w(install bundler -v 1.16.2))
59
+ end
60
+
57
61
  run('gem', %w(list --details))
58
62
  run('gem', %w(env))
59
63
  else
64
+ # Fix incorrect default gem specifications on ruby 2.6.1. Can be removed
65
+ # when 2.6.2 is released and we start testing against it. See
66
+ # https://bugs.ruby-lang.org/issues/15582 for more information
67
+ run('gem', %w(install etc:1.0.1 --default)) if RUBY_VERSION == "2.6.1"
68
+
60
69
  with_retries { run('rake', %w(spec:travis:deps)) }
61
70
  end
62
- when %w(after_script)
63
- if TOOL.rubygems?
64
- run('rake', %w(_10.5.0_ travis:after -t))
65
- end
71
+ when %w(rubocop)
72
+ run('gem', %w(install rubocop -v ~>0.60.0))
73
+ run('util/rubocop')
66
74
  when %w(script)
67
75
  if TOOL.rubygems?
68
- run('rake', %w(_10.5.0_ travis))
76
+ run('rake test')
69
77
  else
70
78
  run('rake', %w(spec:travis -t))
71
79
  end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module Rubygems
6
+ # This cop enforces that no outdated deprecations are present on RubyGems
7
+ # code base.
8
+ #
9
+ # @example
10
+ #
11
+ # As of March, 2019
12
+ #
13
+ # # bad
14
+ # deprecate :safdfa, nil, 2018, 12
15
+ # deprecate :safdfa, nil, 2019, 03
16
+ #
17
+ # # good
18
+ # deprecate :safdfa, nil, 2019, 04
19
+ #
20
+ class Deprecations < Cop
21
+
22
+ MSG = "Remove `deprecate` calls with dates in the past, along with " \
23
+ "the methods they deprecate, or expand the deprecation horizons to " \
24
+ "a future date"
25
+
26
+ def on_send(node)
27
+ _receiver, method_name, *args = *node
28
+ return unless method_name == :deprecate
29
+
30
+ scheduled_year = args[2].children.last
31
+ scheduled_month = args[3].children.last
32
+
33
+ current_time = Time.now
34
+
35
+ current_year = current_time.year
36
+ current_month = current_time.month
37
+
38
+ if current_year >= scheduled_year || (current_year == scheduled_year && current_month >= scheduled_month)
39
+ add_offense(node)
40
+ end
41
+ end
42
+
43
+ private
44
+
45
+ def message(node)
46
+ format(MSG, method: node.method_name)
47
+ end
48
+
49
+ end
50
+ end
51
+ end
52
+ end
data/util/create_certs.rb CHANGED
@@ -6,7 +6,7 @@ class CertificateBuilder
6
6
 
7
7
  attr_reader :start
8
8
 
9
- def initialize key_size = 2048
9
+ def initialize(key_size = 2048)
10
10
  @start = Time.utc 2012, 01, 01, 00, 00, 00
11
11
  @end_of_time = Time.utc 9999, 12, 31, 23, 59, 59
12
12
  @end_of_time_32 = Time.utc 2038, 01, 19, 03, 14, 07
@@ -59,11 +59,11 @@ class CertificateBuilder
59
59
  ef.create_extension('subjectKeyIdentifier', 'hash')
60
60
  ]
61
61
 
62
- if cert != issuer_cert then # not self-signed cert
62
+ if cert != issuer_cert # not self-signed cert
63
63
  cert.add_extension ef.create_extension('authorityKeyIdentifier', 'keyid:always')
64
64
  end
65
65
 
66
- if is_ca then
66
+ if is_ca
67
67
  cert.add_extension ef.create_extension('basicConstraints', 'CA:TRUE', true)
68
68
  cert.add_extension ef.create_extension('keyUsage', 'keyCertSign', true)
69
69
  end
@@ -79,7 +79,7 @@ class CertificateBuilder
79
79
  OpenSSL::PKey::RSA.new @key_size
80
80
  end
81
81
 
82
- def create_keys names
82
+ def create_keys(names)
83
83
  keys = {}
84
84
 
85
85
  names.each do |name|
@@ -95,8 +95,8 @@ class CertificateBuilder
95
95
  serial
96
96
  end
97
97
 
98
- def validity_for time
99
- if time == :end_of_time then
98
+ def validity_for(time)
99
+ if time == :end_of_time
100
100
  validity = @end_of_time
101
101
  validity_32 = @end_of_time_32
102
102
  else
@@ -169,4 +169,3 @@ certs.each do |name, (cert, cert_32)|
169
169
  dest = File.join base_dir, "#{name}_cert_32.pem"
170
170
  File.write dest, cert_32.to_pem
171
171
  end
172
-
@@ -0,0 +1,27 @@
1
+ #!/bin/sh
2
+
3
+ # cp /etc/ssl/openssl.cnf . # copied from OpenSSL 1.1.1b source
4
+
5
+ rm -rf demoCA/ server/ client/
6
+
7
+ mkdir demoCA demoCA/private demoCA/newcerts
8
+ touch demoCA/index.txt
9
+ echo 00 > demoCA/serial
10
+ openssl genrsa -out demoCA/private/cakey.pem 2048
11
+ openssl req -new -key demoCA/private/cakey.pem -out demoCA/careq.pem -subj "/C=JP/ST=Tokyo/O=RubyGemsTest/CN=CA"
12
+ openssl ca -batch -config openssl.cnf -extensions v3_ca -out demoCA/cacert.pem -startdate 090101000000Z -enddate 491231235959Z -batch -keyfile demoCA/private/cakey.pem -selfsign -infiles demoCA/careq.pem
13
+
14
+ mkdir server
15
+ openssl genrsa -out server/server.key 2048
16
+ openssl req -new -key server/server.key -out server/csr.pem -subj "/C=JP/ST=Tokyo/O=RubyGemsTest/CN=localhost"
17
+ openssl ca -batch -config openssl.cnf -startdate 090101000000Z -enddate 491231235959Z -in server/csr.pem -keyfile demoCA/private/cakey.pem -cert demoCA/cacert.pem -out server/cert.pem
18
+
19
+ mkdir client
20
+ openssl genrsa -out client/client.key 2048
21
+ openssl req -config openssl.cnf -new -key client/client.key -out client/csr.pem -subj "/C=JP/ST=Tokyo/O=RubyGemsTest/CN=client"
22
+ openssl ca -batch -config openssl.cnf -startdate 090101000000Z -enddate 491231235959Z -in client/csr.pem -keyfile demoCA/private/cakey.pem -cert demoCA/cacert.pem -out client/cert.pem
23
+
24
+ cp demoCA/cacert.pem $(git rev-parse --show-toplevel)/test/rubygems/ca_cert.pem
25
+ cp server/cert.pem $(git rev-parse --show-toplevel)/test/rubygems/ssl_cert.pem
26
+ cp server/server.key $(git rev-parse --show-toplevel)/test/rubygems/ssl_key.pem
27
+ cat client/cert.pem client/client.key > $(git rev-parse --show-toplevel)/test/rubygems/client.pem
@@ -1,17 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
  require 'openssl'
3
3
 
4
- private_key_path = '../../test/rubygems/private_key.pem'
5
- private_key_path = File.expand_path private_key_path, __FILE__
4
+ test_path = File.expand_path('../../test/rubygems', __FILE__)
5
+
6
+ private_key_path = "#{test_path}/private_key.pem"
6
7
 
7
8
  key = OpenSSL::PKey::RSA.new File.read private_key_path
8
9
 
9
10
  cipher = OpenSSL::Cipher.new 'DES-CBC'
10
11
 
11
- encrypted_key_path = '../../test/rubygems/encrypted_private_key.pem'
12
- encrypted_key_path = File.expand_path encrypted_key_path, __FILE__
12
+ encrypted_key_path = "#{test_path}/encrypted_private_key.pem"
13
13
 
14
14
  open encrypted_key_path, 'w' do |io|
15
15
  io.write key.to_pem cipher, 'Foo bar'
16
16
  end
17
-
@@ -50,7 +50,7 @@ sh("git", "checkout", branch)
50
50
  sh("git", "submodule", "update", "--init", "--recursive")
51
51
 
52
52
  commits = `git log --oneline origin/master --`.split("\n").map {|l| l.split(/\s/, 2) }.reverse
53
- commits.select! {|_sha, message| message =~ /(Auto merge of|Merge pull request) ##{Regexp.union(*prs)}/ }
53
+ commits.select! {|_sha, message| message =~ /(Auto merge of|Merge pull request|Merge) ##{Regexp.union(*prs)}/ }
54
54
 
55
55
  unless system("git", "cherry-pick", "-x", "-m", "1", *commits.map(&:first))
56
56
  abort unless system("zsh")
data/util/rubocop ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ begin
5
+ load Gem.bin_path("rubocop", "rubocop", "~> 0.60.0")
6
+ rescue Gem::GemNotFoundException
7
+ abort "Install the rubocop gem (~> 0.60.0) to run a static analysis"
8
+ end
@@ -8,14 +8,14 @@ URIS = [
8
8
  URI('https://www.rubygems.org'),
9
9
  URI('https://index.rubygems.org'),
10
10
  URI('https://staging.rubygems.org'),
11
- ]
11
+ ].freeze
12
12
 
13
13
  HOSTNAMES_TO_MAP = [
14
14
  'rubygems.org',
15
15
  'index.rubygems.org'
16
- ]
16
+ ].freeze
17
17
 
18
- def connect_to uri, store
18
+ def connect_to(uri, store)
19
19
  # None of the URIs are IPv6, so URI::Generic#hostname(ruby 1.9.3+) isn't needed
20
20
  http = Net::HTTP.new uri.host, uri.port
21
21
 
@@ -31,7 +31,7 @@ rescue OpenSSL::SSL::SSLError
31
31
  false
32
32
  end
33
33
 
34
- def load_certificates io
34
+ def load_certificates(io)
35
35
  cert_texts =
36
36
  io.read.scan(/^-{5}BEGIN CERTIFICATE-{5}.*?^-{5}END CERTIFICATE-{5}/m)
37
37
 
@@ -40,13 +40,13 @@ def load_certificates io
40
40
  end
41
41
  end
42
42
 
43
- def show_certificates certificates
43
+ def show_certificates(certificates)
44
44
  certificates.each do |certificate|
45
45
  p certificate.subject.to_a
46
46
  end
47
47
  end
48
48
 
49
- def store_for certificates
49
+ def store_for(certificates)
50
50
  store = OpenSSL::X509::Store.new
51
51
  certificates.each do |certificate|
52
52
  store.add_cert certificate
@@ -55,13 +55,13 @@ def store_for certificates
55
55
  store
56
56
  end
57
57
 
58
- def test_certificates certificates, uri
58
+ def test_certificates(certificates, uri)
59
59
  1.upto certificates.length do |n|
60
60
  puts "combinations of #{n} certificates"
61
61
  certificates.combination(n).each do |combination|
62
62
  match = test_uri uri, combination
63
63
 
64
- if match then
64
+ if match
65
65
  $needed_combinations << match
66
66
  puts
67
67
  puts match.map { |certificate| certificate.subject }
@@ -74,7 +74,7 @@ def test_certificates certificates, uri
74
74
  end
75
75
  end
76
76
 
77
- def test_uri uri, certificates
77
+ def test_uri(uri, certificates)
78
78
  store = store_for certificates
79
79
 
80
80
  verified = connect_to uri, store
@@ -84,7 +84,7 @@ def test_uri uri, certificates
84
84
  nil
85
85
  end
86
86
 
87
- def hostname_certificate_mapping certificates
87
+ def hostname_certificate_mapping(certificates)
88
88
  mapping = {}
89
89
  HOSTNAMES_TO_MAP.each do |hostname|
90
90
  uri = URI("https://#{hostname}")
@@ -96,7 +96,7 @@ def hostname_certificate_mapping certificates
96
96
  mapping
97
97
  end
98
98
 
99
- def write_certificates certificates
99
+ def write_certificates(certificates)
100
100
  mapping = hostname_certificate_mapping(certificates)
101
101
  mapping.each do |hostname, certificate|
102
102
  subject = certificate.subject.to_a
@@ -115,7 +115,7 @@ def write_certificates certificates
115
115
  end
116
116
 
117
117
  io =
118
- if ARGV.empty? then
118
+ if ARGV.empty?
119
119
  open OpenSSL::X509::DEFAULT_CERT_FILE
120
120
  else
121
121
  ARGF
@@ -135,4 +135,3 @@ end
135
135
  needed = $needed_combinations.flatten.uniq
136
136
 
137
137
  write_certificates needed
138
-
@@ -52,7 +52,7 @@ history = File.read(File.expand_path('../../History.txt', __FILE__))
52
52
 
53
53
  File.open(File.expand_path('../../ChangeLog', __FILE__), 'w') do |changelog|
54
54
  commits = `git log --oneline v#{Gem::VERSION}..#{branch}`.split("\n")
55
- prs = commits.reverse_each.map { |c| c =~ /(Auto merge of|Merge pull request) #(\d+)/ && $2 }.compact
55
+ prs = commits.reverse_each.map { |c| c =~ /(Auto merge of|Merge pull request|Merge) #(\d+)/ && $2 }.compact.uniq.sort!
56
56
  prs.each do |pr|
57
57
  next if history =~ /Pull\srequest\s##{pr}/m
58
58
  details = github_api "/repos/rubygems/rubygems/pulls/#{pr}"