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
@@ -53,11 +53,11 @@ require 'rubygems'
53
53
 
54
54
  version = \">= 0.a\"
55
55
 
56
- if ARGV.first
57
- str = ARGV.first
58
- str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding
59
- if str =~ /\\A_(.*)_\\z/ and Gem::Version.correct?($1) then
60
- version = $1
56
+ str = ARGV.first
57
+ if str
58
+ str = str.b[/\\A_(.*)_\\z/, 1]
59
+ if str and Gem::Version.correct?(str)
60
+ version = str
61
61
  ARGV.shift
62
62
  end
63
63
  end
@@ -121,7 +121,7 @@ end
121
121
  ensure
122
122
  Object.const_set :RUBY_FRAMEWORK_VERSION, orig_RUBY_FRAMEWORK_VERSION if
123
123
  orig_RUBY_FRAMEWORK_VERSION
124
- if orig_bindir then
124
+ if orig_bindir
125
125
  RbConfig::CONFIG['bindir'] = orig_bindir
126
126
  else
127
127
  RbConfig::CONFIG.delete 'bindir'
@@ -141,7 +141,7 @@ end
141
141
  end
142
142
 
143
143
  File.open File.join(util_inst_bindir, 'executable'), 'w' do |io|
144
- io.write <<-EXEC
144
+ io.write <<-EXEC
145
145
  #!/usr/local/bin/ruby
146
146
  #
147
147
  # This file was generated by RubyGems
@@ -163,6 +163,8 @@ gem 'other', version
163
163
 
164
164
  wrapper = File.read installed_exec
165
165
  assert_match %r|generated by RubyGems|, wrapper
166
+ ensure
167
+ Gem::Installer.exec_format = nil
166
168
  end
167
169
 
168
170
  def test_check_executable_overwrite_other_gem
@@ -250,7 +252,7 @@ gem 'other', version
250
252
 
251
253
  expected = @installer.bin_dir
252
254
 
253
- if Gem.win_platform? then
255
+ if Gem.win_platform?
254
256
  expected = expected.downcase.gsub(File::SEPARATOR, File::ALT_SEPARATOR)
255
257
  end
256
258
 
@@ -311,7 +313,7 @@ gem 'other', version
311
313
  @installer.wrappers = true
312
314
 
313
315
  @spec.executables = %w[executable]
314
- @spec.bindir = '.'
316
+ @spec.bindir = 'bin'
315
317
 
316
318
  exec_file = @installer.formatted_program_filename 'executable'
317
319
  exec_path = File.join @spec.gem_dir, exec_file
@@ -323,7 +325,7 @@ gem 'other', version
323
325
 
324
326
  @installer.generate_bin
325
327
 
326
- assert_equal true, File.directory?(util_inst_bindir)
328
+ assert_directory_exists (util_inst_bindir)
327
329
  installed_exec = File.join(util_inst_bindir, 'executable')
328
330
  assert_path_exists installed_exec
329
331
  assert_equal mask, File.stat(installed_exec).mode unless win_platform?
@@ -336,6 +338,9 @@ gem 'other', version
336
338
  bin_dir = Gem.win_platform? ? File.expand_path(ENV["WINDIR"]).upcase :
337
339
  "/usr/bin"
338
340
 
341
+ old_path = ENV["PATH"]
342
+ ENV["PATH"] = [ENV["PATH"], bin_dir].compact.join(File::PATH_SEPARATOR)
343
+
339
344
  options = {
340
345
  :bin_dir => bin_dir,
341
346
  :install_dir => "/non/existent"
@@ -350,6 +355,9 @@ gem 'other', version
350
355
  end
351
356
 
352
357
  assert_equal "", @ui.error
358
+
359
+ ensure
360
+ ENV["PATH"] = old_path
353
361
  end
354
362
 
355
363
  def test_generate_bin_script
@@ -358,7 +366,7 @@ gem 'other', version
358
366
  @installer.gem_dir = @spec.gem_dir
359
367
 
360
368
  @installer.generate_bin
361
- assert File.directory? util_inst_bindir
369
+ assert_directory_exists util_inst_bindir
362
370
  installed_exec = File.join util_inst_bindir, 'executable'
363
371
  assert_path_exists installed_exec
364
372
  assert_equal mask, File.stat(installed_exec).mode unless win_platform?
@@ -375,7 +383,7 @@ gem 'other', version
375
383
 
376
384
  Gem::Installer.exec_format = 'foo-%s-bar'
377
385
  @installer.generate_bin
378
- assert_equal true, File.directory?(util_inst_bindir)
386
+ assert_directory_exists util_inst_bindir
379
387
  installed_exec = File.join util_inst_bindir, 'foo-executable-bar'
380
388
  assert_path_exists installed_exec
381
389
  ensure
@@ -389,7 +397,7 @@ gem 'other', version
389
397
 
390
398
  Gem::Installer.exec_format = 'foo-%s-bar'
391
399
  @installer.generate_bin
392
- assert_equal true, File.directory?(util_inst_bindir)
400
+ assert_directory_exists util_inst_bindir
393
401
  installed_exec = File.join util_inst_bindir, 'executable'
394
402
  assert_path_exists installed_exec
395
403
  ensure
@@ -482,13 +490,13 @@ gem 'other', version
482
490
  real_exec = File.join @spec.gem_dir, 'bin', 'executable'
483
491
 
484
492
  # fake --no-wrappers for previous install
485
- unless Gem.win_platform? then
493
+ unless Gem.win_platform?
486
494
  FileUtils.mkdir_p File.dirname(installed_exec)
487
495
  FileUtils.ln_s real_exec, installed_exec
488
496
  end
489
497
 
490
498
  @installer.generate_bin
491
- assert_equal true, File.directory?(util_inst_bindir)
499
+ assert_directory_exists util_inst_bindir
492
500
  assert_path_exists installed_exec
493
501
  assert_equal mask, File.stat(installed_exec).mode unless win_platform?
494
502
 
@@ -506,7 +514,7 @@ gem 'other', version
506
514
  @installer.gem_dir = @spec.gem_dir
507
515
 
508
516
  @installer.generate_bin
509
- assert_equal true, File.directory?(util_inst_bindir)
517
+ assert_directory_exists util_inst_bindir
510
518
  installed_exec = File.join util_inst_bindir, 'executable'
511
519
  assert_equal true, File.symlink?(installed_exec)
512
520
  assert_equal(File.join(@spec.gem_dir, 'bin', 'executable'),
@@ -658,7 +666,7 @@ gem 'other', version
658
666
  @installer.generate_bin
659
667
  end
660
668
 
661
- assert_equal true, File.directory?(util_inst_bindir)
669
+ assert_directory_exists util_inst_bindir
662
670
  installed_exec = File.join(util_inst_bindir, 'executable')
663
671
  assert_path_exists installed_exec
664
672
 
@@ -734,13 +742,13 @@ gem 'other', version
734
742
  rakefile = File.join gemdir, 'ext', 'a', 'Rakefile'
735
743
  spec_file = File.join @gemhome, 'specifications', @spec.spec_name
736
744
 
737
- Gem.pre_install do |installer|
745
+ Gem.pre_install do
738
746
  refute_path_exists cache_file, 'cache file must not exist yet'
739
747
  refute_path_exists spec_file, 'spec file must not exist yet'
740
748
  true
741
749
  end
742
750
 
743
- Gem.post_build do |installer|
751
+ Gem.post_build do
744
752
  assert_path_exists gemdir, 'gem install dir must exist'
745
753
  assert_path_exists rakefile, 'gem executable must exist'
746
754
  refute_path_exists stub_exe, 'gem executable must not exist'
@@ -748,7 +756,7 @@ gem 'other', version
748
756
  true
749
757
  end
750
758
 
751
- Gem.post_install do |installer|
759
+ Gem.post_install do
752
760
  assert_path_exists cache_file, 'cache file must exist'
753
761
  assert_path_exists spec_file, 'spec file must exist'
754
762
  end
@@ -890,8 +898,6 @@ gem 'other', version
890
898
  end
891
899
 
892
900
  def test_install_creates_binstub_that_dont_trust_encoding
893
- skip unless "".respond_to?(:force_encoding)
894
-
895
901
  Dir.mkdir util_inst_bindir
896
902
  util_setup_gem
897
903
  util_clear_gems
@@ -961,7 +967,7 @@ gem 'other', version
961
967
 
962
968
  def test_install_force
963
969
  use_ui @ui do
964
- installer = Gem::Installer.at old_ruby_required, :force => true
970
+ installer = Gem::Installer.at old_ruby_required('= 1.4.6'), :force => true
965
971
  installer.install
966
972
  end
967
973
 
@@ -971,16 +977,16 @@ gem 'other', version
971
977
 
972
978
  def test_install_missing_dirs
973
979
  FileUtils.rm_f File.join(Gem.dir, 'cache')
974
- FileUtils.rm_f File.join(Gem.dir, 'docs')
980
+ FileUtils.rm_f File.join(Gem.dir, 'doc')
975
981
  FileUtils.rm_f File.join(Gem.dir, 'specifications')
976
982
 
977
983
  use_ui @ui do
978
984
  @installer.install
979
985
  end
980
986
 
981
- File.directory? File.join(Gem.dir, 'cache')
982
- File.directory? File.join(Gem.dir, 'docs')
983
- File.directory? File.join(Gem.dir, 'specifications')
987
+ assert_directory_exists File.join(Gem.dir, 'cache')
988
+ assert_directory_exists File.join(Gem.dir, 'doc')
989
+ assert_directory_exists File.join(Gem.dir, 'specifications')
984
990
 
985
991
  assert_path_exists File.join @gemhome, 'cache', @spec.file_name
986
992
  assert_path_exists File.join @gemhome, 'specifications', @spec.spec_name
@@ -1179,88 +1185,47 @@ gem 'other', version
1179
1185
  refute_path_exists File.join expected_extension_dir, 'gem_make.out'
1180
1186
  end
1181
1187
 
1182
- # ruby core repository needs to `depend` file for extension build.
1183
- # but 1.9.2 and earlier mkmf.rb does not create TOUCH file like depend.
1184
- if RUBY_VERSION < '1.9.3'
1185
- def test_find_lib_file_after_install
1186
-
1187
- @spec.extensions << "extconf.rb"
1188
- write_file File.join(@tempdir, "extconf.rb") do |io|
1189
- io.write <<-RUBY
1190
- require "mkmf"
1191
- create_makefile("#{@spec.name}")
1192
- RUBY
1193
- end
1194
-
1195
- write_file File.join(@tempdir, "a.c") do |io|
1196
- io.write <<-C
1197
- #include <ruby.h>
1198
- void Init_a() { }
1199
- C
1200
- end
1201
-
1202
- Dir.mkdir File.join(@tempdir, "lib")
1203
- write_file File.join(@tempdir, 'lib', "b.rb") do |io|
1204
- io.write "# b.rb"
1205
- end
1206
-
1207
- @spec.files += %w[extconf.rb lib/b.rb a.c]
1208
-
1209
- use_ui @ui do
1210
- path = Gem::Package.build @spec
1188
+ def test_find_lib_file_after_install
1189
+ @spec.extensions << "extconf.rb"
1190
+ write_file File.join(@tempdir, "extconf.rb") do |io|
1191
+ io.write <<-RUBY
1192
+ require "mkmf"
1211
1193
 
1212
- installer = Gem::Installer.at path
1213
- installer.install
1214
- end
1194
+ CONFIG['CC'] = '$(TOUCH) $@ ||'
1195
+ CONFIG['LDSHARED'] = '$(TOUCH) $@ ||'
1196
+ $ruby = '#{Gem.ruby}'
1215
1197
 
1216
- expected = File.join @spec.full_require_paths.find { |path|
1217
- File.exist? File.join path, 'b.rb'
1218
- }, 'b.rb'
1219
- assert_equal expected, @spec.matches_for_glob('b.rb').first
1198
+ create_makefile("#{@spec.name}")
1199
+ RUBY
1220
1200
  end
1221
- else
1222
- def test_find_lib_file_after_install
1223
- @spec.extensions << "extconf.rb"
1224
- write_file File.join(@tempdir, "extconf.rb") do |io|
1225
- io.write <<-RUBY
1226
- require "mkmf"
1227
1201
 
1228
- CONFIG['CC'] = '$(TOUCH) $@ ||'
1229
- CONFIG['LDSHARED'] = '$(TOUCH) $@ ||'
1230
- $ruby = '#{Gem.ruby}'
1202
+ write_file File.join(@tempdir, "depend")
1231
1203
 
1232
- create_makefile("#{@spec.name}")
1233
- RUBY
1234
- end
1235
-
1236
- write_file File.join(@tempdir, "depend")
1237
-
1238
- write_file File.join(@tempdir, "a.c") do |io|
1239
- io.write <<-C
1240
- #include <ruby.h>
1241
- void Init_a() { }
1242
- C
1243
- end
1244
-
1245
- Dir.mkdir File.join(@tempdir, "lib")
1246
- write_file File.join(@tempdir, 'lib', "b.rb") do |io|
1247
- io.write "# b.rb"
1248
- end
1204
+ write_file File.join(@tempdir, "a.c") do |io|
1205
+ io.write <<-C
1206
+ #include <ruby.h>
1207
+ void Init_a() { }
1208
+ C
1209
+ end
1249
1210
 
1250
- @spec.files += %w[extconf.rb lib/b.rb depend a.c]
1211
+ Dir.mkdir File.join(@tempdir, "lib")
1212
+ write_file File.join(@tempdir, 'lib', "b.rb") do |io|
1213
+ io.write "# b.rb"
1214
+ end
1251
1215
 
1252
- use_ui @ui do
1253
- path = Gem::Package.build @spec
1216
+ @spec.files += %w[extconf.rb lib/b.rb depend a.c]
1254
1217
 
1255
- installer = Gem::Installer.at path
1256
- installer.install
1257
- end
1218
+ use_ui @ui do
1219
+ path = Gem::Package.build @spec
1258
1220
 
1259
- expected = File.join @spec.full_require_paths.find { |path|
1260
- File.exist? File.join path, 'b.rb'
1261
- }, 'b.rb'
1262
- assert_equal expected, @spec.matches_for_glob('b.rb').first
1221
+ installer = Gem::Installer.at path
1222
+ installer.install
1263
1223
  end
1224
+
1225
+ expected = File.join @spec.full_require_paths.find { |path|
1226
+ File.exist? File.join path, 'b.rb'
1227
+ }, 'b.rb'
1228
+ assert_equal expected, @spec.matches_for_glob('b.rb').first
1264
1229
  end
1265
1230
 
1266
1231
  def test_install_extension_and_script
@@ -1302,13 +1267,6 @@ gem 'other', version
1302
1267
  end
1303
1268
 
1304
1269
  def test_install_extension_flat
1305
- skip '1.9.2 and earlier mkmf.rb does not create TOUCH' if
1306
- RUBY_VERSION < '1.9.3'
1307
-
1308
- if RUBY_VERSION == "1.9.3" and RUBY_PATCHLEVEL <= 194
1309
- skip "TOUCH was introduced into 1.9.3 after p194"
1310
- end
1311
-
1312
1270
  @spec.require_paths = ["."]
1313
1271
 
1314
1272
  @spec.extensions << "extconf.rb"
@@ -1424,16 +1382,32 @@ gem 'other', version
1424
1382
 
1425
1383
  def test_pre_install_checks_ruby_version
1426
1384
  use_ui @ui do
1427
- installer = Gem::Installer.at old_ruby_required
1385
+ installer = Gem::Installer.at old_ruby_required('= 1.4.6')
1428
1386
  e = assert_raises Gem::RuntimeRequirementNotMetError do
1429
1387
  installer.pre_install_checks
1430
1388
  end
1431
- rv = Gem.ruby_api_version
1389
+ rv = Gem.ruby_version
1432
1390
  assert_equal "old_ruby_required requires Ruby version = 1.4.6. The current ruby version is #{rv}.",
1433
1391
  e.message
1434
1392
  end
1435
1393
  end
1436
1394
 
1395
+ def test_pre_install_checks_ruby_version_with_prereleases
1396
+ util_set_RUBY_VERSION '2.6.0', -1, '63539', 'ruby 2.6.0preview2 (2018-05-31 trunk 63539) [x86_64-linux]'
1397
+
1398
+ installer = Gem::Installer.at old_ruby_required('>= 2.6.0.preview2')
1399
+ assert installer.pre_install_checks
1400
+
1401
+ installer = Gem::Installer.at old_ruby_required('> 2.6.0.preview2')
1402
+ e = assert_raises Gem::RuntimeRequirementNotMetError do
1403
+ assert installer.pre_install_checks
1404
+ end
1405
+ assert_equal "old_ruby_required requires Ruby version > 2.6.0.preview2. The current ruby version is 2.6.0.preview2.",
1406
+ e.message
1407
+ ensure
1408
+ util_restore_RUBY_VERSION
1409
+ end
1410
+
1437
1411
  def test_pre_install_checks_wrong_rubygems_version
1438
1412
  spec = util_spec 'old_rubygems_required', '1' do |s|
1439
1413
  s.required_rubygems_version = '< 0'
@@ -1459,7 +1433,7 @@ gem 'other', version
1459
1433
  def spec.full_name # so the spec is buildable
1460
1434
  "malicious-1"
1461
1435
  end
1462
- def spec.validate; end
1436
+ def spec.validate(packaging, strict); end
1463
1437
 
1464
1438
  util_build_gem spec
1465
1439
 
@@ -1517,6 +1491,8 @@ gem 'other', version
1517
1491
  end
1518
1492
 
1519
1493
  def test_pre_install_checks_malicious_extensions_before_eval
1494
+ skip "mswin environment disallow to create file contained the carriage return code." if Gem.win_platform?
1495
+
1520
1496
  spec = util_spec "malicious", '1'
1521
1497
  def spec.full_name # so the spec is buildable
1522
1498
  "malicious-1"
@@ -1846,33 +1822,92 @@ gem 'other', version
1846
1822
  assert_predicate spec, :default_gem?
1847
1823
  end
1848
1824
 
1849
- def test_default_gem
1825
+ def test_default_gem_without_wrappers
1850
1826
  FileUtils.rm_f File.join(Gem.dir, 'specifications')
1851
1827
 
1852
- @installer.wrappers = true
1828
+ @installer.wrappers = false
1853
1829
  @installer.options[:install_as_default] = true
1854
1830
  @installer.gem_dir = @spec.gem_dir
1855
- @installer.generate_bin
1856
1831
 
1857
1832
  use_ui @ui do
1858
1833
  @installer.install
1859
1834
  end
1860
1835
 
1861
- assert File.directory? util_inst_bindir
1862
- installed_exec = File.join util_inst_bindir, 'executable'
1836
+ assert_directory_exists File.join(@spec.gem_dir, 'bin')
1837
+ installed_exec = File.join @spec.gem_dir, 'bin', 'executable'
1863
1838
  assert_path_exists installed_exec
1864
1839
 
1865
- assert File.directory? File.join(Gem.default_dir, 'specifications')
1866
- assert File.directory? File.join(Gem.default_dir, 'specifications', 'default')
1840
+ assert_directory_exists File.join(Gem.default_dir, 'specifications')
1841
+ assert_directory_exists File.join(Gem.default_dir, 'specifications', 'default')
1867
1842
 
1868
1843
  default_spec = eval File.read File.join(Gem.default_dir, 'specifications', 'default', 'a-2.gemspec')
1869
1844
  assert_equal Gem::Version.new("2"), default_spec.version
1870
1845
  assert_equal ['bin/executable'], default_spec.files
1846
+
1847
+ assert_directory_exists util_inst_bindir
1848
+
1849
+ installed_exec = File.join util_inst_bindir, 'executable'
1850
+ assert_path_exists installed_exec
1851
+
1852
+ wrapper = File.read installed_exec
1853
+ refute_match %r|generated by RubyGems|, wrapper
1854
+ end
1855
+
1856
+ def test_default_gem_with_wrappers
1857
+ FileUtils.rm_f File.join(Gem.dir, 'specifications')
1858
+
1859
+ @installer.wrappers = true
1860
+ @installer.options[:install_as_default] = true
1861
+ @installer.gem_dir = @spec.gem_dir
1862
+
1863
+ use_ui @ui do
1864
+ @installer.install
1865
+ end
1866
+
1867
+ assert_directory_exists util_inst_bindir
1868
+
1869
+ installed_exec = File.join util_inst_bindir, 'executable'
1870
+ assert_path_exists installed_exec
1871
+
1872
+ wrapper = File.read installed_exec
1873
+ assert_match %r|generated by RubyGems|, wrapper
1874
+ end
1875
+
1876
+ def test_default_gem_with_exe_as_bindir
1877
+ FileUtils.rm_f File.join(Gem.dir, 'specifications')
1878
+
1879
+ @spec = quick_gem 'c' do |spec|
1880
+ util_make_exec spec, '#!/usr/bin/ruby', 'exe'
1881
+ end
1882
+
1883
+ util_build_gem @spec
1884
+
1885
+ @spec.cache_file
1886
+
1887
+ installer = util_installer @spec, @gemhome
1888
+
1889
+ installer.options[:install_as_default] = true
1890
+ installer.gem_dir = @spec.gem_dir
1891
+
1892
+ use_ui @ui do
1893
+ installer.install
1894
+ end
1895
+
1896
+ assert_directory_exists File.join(@spec.gem_dir, 'exe')
1897
+ installed_exec = File.join @spec.gem_dir, 'exe', 'executable'
1898
+ assert_path_exists installed_exec
1899
+
1900
+ assert_directory_exists File.join(Gem.default_dir, 'specifications')
1901
+ assert_directory_exists File.join(Gem.default_dir, 'specifications', 'default')
1902
+
1903
+ default_spec = eval File.read File.join(Gem.default_dir, 'specifications', 'default', 'c-2.gemspec')
1904
+ assert_equal Gem::Version.new("2"), default_spec.version
1905
+ assert_equal ['exe/executable'], default_spec.files
1871
1906
  end
1872
1907
 
1873
- def old_ruby_required
1908
+ def old_ruby_required(requirement)
1874
1909
  spec = util_spec 'old_ruby_required', '1' do |s|
1875
- s.required_ruby_version = '= 1.4.6'
1910
+ s.required_ruby_version = requirement
1876
1911
  end
1877
1912
 
1878
1913
  util_build_gem spec
@@ -1887,7 +1922,7 @@ gem 'other', version
1887
1922
  @installer = util_installer @spec, @gemhome
1888
1923
  end
1889
1924
 
1890
- def util_conflict_executable wrappers
1925
+ def util_conflict_executable(wrappers)
1891
1926
  conflict = quick_gem 'conflict' do |spec|
1892
1927
  util_make_exec spec
1893
1928
  end
@@ -44,8 +44,9 @@ class TestGemLocalRemoteOptions < Gem::TestCase
44
44
  spec_fetcher
45
45
 
46
46
  @cmd.add_local_remote_options
47
+ Gem.configuration.sources = nil
47
48
  @cmd.handle_options %W[--clear-sources]
48
- assert_equal Gem.default_sources, Gem.sources
49
+ assert_equal Gem.default_sources, Gem.sources.to_a
49
50
  end
50
51
 
51
52
  def test_local_eh
@@ -123,7 +124,7 @@ class TestGemLocalRemoteOptions < Gem::TestCase
123
124
 
124
125
  s1 = 'htp://more-gems.example.com'
125
126
 
126
- assert_raises OptionParser::InvalidArgument do
127
+ assert_raises ArgumentError do
127
128
  @cmd.handle_options %W[--source #{s1}]
128
129
  end
129
130
 
@@ -131,4 +132,3 @@ class TestGemLocalRemoteOptions < Gem::TestCase
131
132
  end
132
133
 
133
134
  end
134
-
@@ -42,4 +42,3 @@ class TestGemNameTuple < Gem::TestCase
42
42
  end
43
43
 
44
44
  end
45
-