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
@@ -6,7 +6,7 @@ class TestGemCommandsDependencyCommand < Gem::TestCase
6
6
 
7
7
  def setup
8
8
  super
9
-
9
+ @stub_ui = Gem::MockGemUi.new
10
10
  @cmd = Gem::Commands::DependencyCommand.new
11
11
  @cmd.options[:domain] = :local
12
12
  end
@@ -19,17 +19,17 @@ class TestGemCommandsDependencyCommand < Gem::TestCase
19
19
 
20
20
  @cmd.options[:args] = %w[foo]
21
21
 
22
- use_ui @ui do
22
+ use_ui @stub_ui do
23
23
  @cmd.execute
24
24
  end
25
25
 
26
26
  assert_equal "Gem foo-2\n bar (> 1)\n baz (> 1)\n\n",
27
- @ui.output
28
- assert_equal '', @ui.error
27
+ @stub_ui.output
28
+ assert_equal '', @stub_ui.error
29
29
  end
30
30
 
31
31
  def test_execute_no_args
32
- install_specs new_spec 'x', '2'
32
+ install_specs util_spec 'x', '2'
33
33
 
34
34
  spec_fetcher do |fetcher|
35
35
  fetcher.spec 'a', 1
@@ -40,7 +40,7 @@ class TestGemCommandsDependencyCommand < Gem::TestCase
40
40
 
41
41
  @cmd.options[:args] = []
42
42
 
43
- use_ui @ui do
43
+ use_ui @stub_ui do
44
44
  @cmd.execute
45
45
  end
46
46
 
@@ -58,21 +58,21 @@ Gem x-2
58
58
 
59
59
  EOF
60
60
 
61
- assert_equal expected, @ui.output
62
- assert_equal '', @ui.error
61
+ assert_equal expected, @stub_ui.output
62
+ assert_equal '', @stub_ui.error
63
63
  end
64
64
 
65
65
  def test_execute_no_match
66
66
  @cmd.options[:args] = %w[foo]
67
67
 
68
68
  assert_raises Gem::MockGemUi::TermError do
69
- use_ui @ui do
69
+ use_ui @stub_ui do
70
70
  @cmd.execute
71
71
  end
72
72
  end
73
73
 
74
- assert_equal "No gems found matching foo (>= 0)\n", @ui.output
75
- assert_equal '', @ui.error
74
+ assert_equal "No gems found matching foo (>= 0)\n", @stub_ui.output
75
+ assert_equal '', @stub_ui.error
76
76
  end
77
77
 
78
78
  def test_execute_pipe_format
@@ -85,12 +85,12 @@ Gem x-2
85
85
  @cmd.options[:args] = %w[foo]
86
86
  @cmd.options[:pipe_format] = true
87
87
 
88
- use_ui @ui do
88
+ use_ui @stub_ui do
89
89
  @cmd.execute
90
90
  end
91
91
 
92
- assert_equal "bar --version '> 1'\n", @ui.output
93
- assert_equal '', @ui.error
92
+ assert_equal "bar --version '> 1'\n", @stub_ui.output
93
+ assert_equal '', @stub_ui.error
94
94
  end
95
95
 
96
96
  def test_execute_regexp
@@ -103,7 +103,7 @@ Gem x-2
103
103
 
104
104
  @cmd.options[:args] = %w[/[ab]/]
105
105
 
106
- use_ui @ui do
106
+ use_ui @stub_ui do
107
107
  @cmd.execute
108
108
  end
109
109
 
@@ -118,8 +118,8 @@ Gem b-2
118
118
 
119
119
  EOF
120
120
 
121
- assert_equal expected, @ui.output
122
- assert_equal '', @ui.error
121
+ assert_equal expected, @stub_ui.output
122
+ assert_equal '', @stub_ui.error
123
123
  end
124
124
 
125
125
  def test_execute_reverse
@@ -135,7 +135,7 @@ Gem b-2
135
135
  @cmd.options[:args] = %w[foo]
136
136
  @cmd.options[:reverse_dependencies] = true
137
137
 
138
- use_ui @ui do
138
+ use_ui @stub_ui do
139
139
  @cmd.execute
140
140
  end
141
141
 
@@ -147,8 +147,8 @@ Gem foo-2
147
147
 
148
148
  EOF
149
149
 
150
- assert_equal expected, @ui.output
151
- assert_equal '', @ui.error
150
+ assert_equal expected, @stub_ui.output
151
+ assert_equal '', @stub_ui.error
152
152
  end
153
153
 
154
154
  def test_execute_reverse_remote
@@ -157,7 +157,7 @@ Gem foo-2
157
157
  @cmd.options[:domain] = :remote
158
158
 
159
159
  assert_raises Gem::MockGemUi::TermError do
160
- use_ui @ui do
160
+ use_ui @stub_ui do
161
161
  @cmd.execute
162
162
  end
163
163
  end
@@ -166,12 +166,12 @@ Gem foo-2
166
166
  ERROR: Only reverse dependencies for local gems are supported.
167
167
  EOF
168
168
 
169
- assert_equal '', @ui.output
170
- assert_equal expected, @ui.error
169
+ assert_equal '', @stub_ui.output
170
+ assert_equal expected, @stub_ui.error
171
171
  end
172
172
 
173
173
  def test_execute_remote
174
- install_specs new_spec 'bar', '2'
174
+ install_specs util_spec 'bar', '2'
175
175
 
176
176
  spec_fetcher do |fetcher|
177
177
  fetcher.spec 'foo', 2, 'bar' => '> 1'
@@ -180,12 +180,12 @@ ERROR: Only reverse dependencies for local gems are supported.
180
180
  @cmd.options[:args] = %w[foo]
181
181
  @cmd.options[:domain] = :remote
182
182
 
183
- use_ui @ui do
183
+ use_ui @stub_ui do
184
184
  @cmd.execute
185
185
  end
186
186
 
187
- assert_equal "Gem foo-2\n bar (> 1)\n\n", @ui.output
188
- assert_equal '', @ui.error
187
+ assert_equal "Gem foo-2\n bar (> 1)\n\n", @stub_ui.output
188
+ assert_equal '', @stub_ui.error
189
189
  end
190
190
 
191
191
  def test_execute_remote_version
@@ -201,12 +201,12 @@ ERROR: Only reverse dependencies for local gems are supported.
201
201
  @cmd.options[:domain] = :remote
202
202
  @cmd.options[:version] = req '= 1'
203
203
 
204
- use_ui @ui do
204
+ use_ui @stub_ui do
205
205
  @cmd.execute
206
206
  end
207
207
 
208
- assert_equal "Gem a-1\n\n", @ui.output
209
- assert_equal '', @ui.error
208
+ assert_equal "Gem a-1\n\n", @stub_ui.output
209
+ assert_equal '', @stub_ui.error
210
210
  end
211
211
 
212
212
  def test_execute_prerelease
@@ -218,13 +218,12 @@ ERROR: Only reverse dependencies for local gems are supported.
218
218
  @cmd.options[:domain] = :remote
219
219
  @cmd.options[:prerelease] = true
220
220
 
221
- use_ui @ui do
221
+ use_ui @stub_ui do
222
222
  @cmd.execute
223
223
  end
224
224
 
225
- assert_equal "Gem a-2.a\n\n", @ui.output
226
- assert_equal '', @ui.error
225
+ assert_equal "Gem a-2.a\n\n", @stub_ui.output
226
+ assert_equal '', @stub_ui.error
227
227
  end
228
228
 
229
229
  end
230
-
@@ -29,6 +29,7 @@ class TestGemCommandsEnvironmentCommand < Gem::TestCase
29
29
  assert_match %r|RUBYGEMS PREFIX: |, @ui.output
30
30
  assert_match %r|RUBY EXECUTABLE:.*#{RbConfig::CONFIG['ruby_install_name']}|,
31
31
  @ui.output
32
+ assert_match %r|GIT EXECUTABLE: #{@cmd.send(:git_path)}|, @ui.output
32
33
  assert_match %r|SYSTEM CONFIGURATION DIRECTORY:|, @ui.output
33
34
  assert_match %r|EXECUTABLE DIRECTORY:|, @ui.output
34
35
  assert_match %r|RUBYGEMS PLATFORMS:|, @ui.output
@@ -124,4 +124,3 @@ class TestGemCommandsFetchCommand < Gem::TestCase
124
124
  end
125
125
 
126
126
  end
127
-
@@ -48,4 +48,3 @@ class TestGemCommandsGenerateIndexCommand < Gem::TestCase
48
48
  end
49
49
 
50
50
  end if ''.respond_to? :to_xs
51
-
@@ -7,13 +7,16 @@ require "rubygems/command_manager"
7
7
  require File.expand_path('../rubygems_plugin', __FILE__)
8
8
 
9
9
  class TestGemCommandsHelpCommand < Gem::TestCase
10
+ # previously this was calc'd in setup, but 1.8.7 had
11
+ # intermittent failures, but no issues with above require
12
+ PLUGIN = File.expand_path('../rubygems_plugin.rb', __FILE__)
13
+
10
14
  def setup
11
15
  super
12
16
 
13
17
  @cmd = Gem::Commands::HelpCommand.new
14
18
 
15
- load File.expand_path('../rubygems_plugin.rb', __FILE__) unless
16
- Gem::Commands.const_defined? :InterruptCommand
19
+ load PLUGIN unless Gem::Commands.const_defined? :InterruptCommand
17
20
  end
18
21
 
19
22
  def test_gem_help_bad
@@ -45,7 +48,7 @@ class TestGemCommandsHelpCommand < Gem::TestCase
45
48
  assert_match(/\s+#{cmd}\s+\S+/, out)
46
49
  end
47
50
 
48
- if defined?(OpenSSL::SSL) then
51
+ if defined?(OpenSSL::SSL)
49
52
  assert_empty err
50
53
 
51
54
  refute_match 'No command found for ', out
@@ -61,7 +64,7 @@ class TestGemCommandsHelpCommand < Gem::TestCase
61
64
  end
62
65
  end
63
66
 
64
- def util_gem *args
67
+ def util_gem(*args)
65
68
  @cmd.options[:args] = args
66
69
 
67
70
  use_ui @ui do
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+ require 'rubygems/test_case'
3
+ require 'rubygems/commands/info_command'
4
+
5
+ class TestGemCommandsInfoCommand < Gem::TestCase
6
+
7
+ def setup
8
+ super
9
+
10
+ @cmd = Gem::Commands::InfoCommand.new
11
+ end
12
+
13
+ def gem(name, version = "1.0")
14
+ spec = quick_gem name do |gem|
15
+ gem.summary = "test gem"
16
+ gem.homepage = "https://github.com/rubygems/rubygems"
17
+ gem.files = %W[lib/#{name}.rb Rakefile]
18
+ gem.authors = ["Colby", "Jack"]
19
+ gem.license = "MIT"
20
+ gem.version = version
21
+ end
22
+ write_file File.join(*%W[gems #{spec.full_name} lib #{name}.rb])
23
+ write_file File.join(*%W[gems #{spec.full_name} Rakefile])
24
+ spec
25
+ end
26
+
27
+ def test_execute
28
+ @gem = gem "foo", "1.0.0"
29
+
30
+ @cmd.handle_options %w[foo]
31
+
32
+ use_ui @ui do
33
+ @cmd.execute
34
+ end
35
+
36
+ assert_match %r%#{@gem.name} \(#{@gem.version}\)\n%, @ui.output
37
+ assert_match %r%Authors: #{@gem.authors.join(', ')}\n%, @ui.output
38
+ assert_match %r%Homepage: #{@gem.homepage}\n%, @ui.output
39
+ assert_match %r%License: #{@gem.license}\n%, @ui.output
40
+ assert_match %r%Installed at: #{@gem.base_dir}\n%, @ui.output
41
+ assert_match %r%#{@gem.summary}\n%, @ui.output
42
+ assert_match "", @ui.error
43
+ end
44
+ end
@@ -55,7 +55,7 @@ class TestGemCommandsInstallCommand < Gem::TestCase
55
55
  a2_pre = specs['a-2.a']
56
56
 
57
57
  @cmd.handle_options [a2_pre.name, '--version', a2_pre.version.to_s,
58
- "--no-ri", "--no-rdoc"]
58
+ "--no-document"]
59
59
  assert @cmd.options[:prerelease]
60
60
  assert @cmd.options[:version].satisfied_by?(a2_pre.version)
61
61
 
@@ -201,6 +201,38 @@ class TestGemCommandsInstallCommand < Gem::TestCase
201
201
  assert_match(/ould not find a valid gem 'nonexistent'/, @ui.error)
202
202
  end
203
203
 
204
+ def test_execute_dependency_nonexistent
205
+ spec_fetcher do |fetcher|
206
+ fetcher.spec 'foo', 2, 'bar' => '0.5'
207
+ end
208
+
209
+ @cmd.options[:args] = ['foo']
210
+
211
+ use_ui @ui do
212
+ e = assert_raises Gem::MockGemUi::TermError do
213
+ @cmd.execute
214
+ end
215
+
216
+ assert_equal 2, e.exit_code
217
+ end
218
+
219
+ expected = <<-EXPECTED
220
+ ERROR: Could not find a valid gem 'bar' (= 0.5) (required by 'foo' (>= 0)) in any repository
221
+ EXPECTED
222
+
223
+ assert_equal expected, @ui.error
224
+ end
225
+
226
+ def test_execute_http_proxy
227
+ use_ui @ui do
228
+ e = assert_raises ArgumentError, @ui.error do
229
+ @cmd.handle_options %w[-p=foo.bar.com]
230
+ end
231
+
232
+ assert_match "Invalid uri scheme for =foo.bar.com\nPreface URLs with one of [\"http://\", \"https://\", \"file://\", \"s3://\"]", e.message
233
+ end
234
+ end
235
+
204
236
  def test_execute_bad_source
205
237
  spec_fetcher
206
238
 
@@ -361,6 +393,23 @@ ERROR: Possible alternatives: non_existent_with_hint
361
393
  assert_equal %w[a-2.a], @cmd.installed_specs.map { |spec| spec.full_name }
362
394
  end
363
395
 
396
+ def test_execute_with_version_specified_by_colon
397
+ spec_fetcher do |fetcher|
398
+ fetcher.download 'a', 1
399
+ fetcher.download 'a', 2
400
+ end
401
+
402
+ @cmd.options[:args] = %w[a:1]
403
+
404
+ use_ui @ui do
405
+ assert_raises Gem::MockGemUi::SystemExitException, @ui.error do
406
+ @cmd.execute
407
+ end
408
+ end
409
+
410
+ assert_equal %w[a-1], @cmd.installed_specs.map { |spec| spec.full_name }
411
+ end
412
+
364
413
  def test_execute_prerelease_skipped_when_non_pre_available
365
414
  spec_fetcher do |fetcher|
366
415
  fetcher.gem 'a', '2.pre'
@@ -380,7 +429,6 @@ ERROR: Possible alternatives: non_existent_with_hint
380
429
  end
381
430
 
382
431
  def test_execute_rdoc
383
- skip if RUBY_VERSION <= "1.8.7"
384
432
  specs = spec_fetcher do |fetcher|
385
433
  fetcher.gem 'a', 2
386
434
  end
@@ -417,27 +465,26 @@ ERROR: Possible alternatives: non_existent_with_hint
417
465
  end
418
466
 
419
467
  def test_execute_rdoc_with_path
420
- skip if RUBY_VERSION <= "1.8.7"
421
468
  specs = spec_fetcher do |fetcher|
422
469
  fetcher.gem 'a', 2
423
470
  end
424
-
471
+
425
472
  Gem.done_installing(&Gem::RDoc.method(:generation_hook))
426
-
473
+
427
474
  @cmd.options[:document] = %w[rdoc ri]
428
475
  @cmd.options[:domain] = :local
429
476
  @cmd.options[:install_dir] = 'whatever'
430
-
477
+
431
478
  a2 = specs['a-2']
432
479
  FileUtils.mv a2.cache_file, @tempdir
433
-
480
+
434
481
  @cmd.options[:args] = %w[a]
435
-
482
+
436
483
  use_ui @ui do
437
484
  # Don't use Dir.chdir with a block, it warnings a lot because
438
485
  # of a downstream Dir.chdir with a block
439
486
  old = Dir.getwd
440
-
487
+
441
488
  begin
442
489
  Dir.chdir @tempdir
443
490
  assert_raises Gem::MockGemUi::SystemExitException, @ui.error do
@@ -447,9 +494,9 @@ ERROR: Possible alternatives: non_existent_with_hint
447
494
  Dir.chdir old
448
495
  end
449
496
  end
450
-
497
+
451
498
  wait_for_child_process_to_exit
452
-
499
+
453
500
  assert_path_exists 'whatever/doc/a-2', 'documentation not installed'
454
501
  end
455
502
 
@@ -618,12 +665,32 @@ ERROR: Possible alternatives: non_existent_with_hint
618
665
 
619
666
  assert_empty @cmd.installed_specs
620
667
 
621
- msg = "ERROR: Can't use --version w/ multiple gems. Use name:ver instead."
668
+ msg = "ERROR: Can't use --version with multiple gems. You can specify multiple gems with" \
669
+ " version requirements using `gem install 'my_gem:1.0.0' 'my_other_gem:~>2.0.0'`"
622
670
 
623
671
  assert_empty @ui.output
624
672
  assert_equal msg, @ui.error.chomp
625
673
  end
626
674
 
675
+ def test_execute_two_version_specified_by_colon
676
+ spec_fetcher do |fetcher|
677
+ fetcher.gem 'a', 1
678
+ fetcher.gem 'a', 2
679
+ fetcher.gem 'b', 1
680
+ fetcher.gem 'b', 2
681
+ end
682
+
683
+ @cmd.options[:args] = %w[a:1 b:1]
684
+
685
+ use_ui @ui do
686
+ assert_raises Gem::MockGemUi::SystemExitException, @ui.error do
687
+ @cmd.execute
688
+ end
689
+ end
690
+
691
+ assert_equal %w[a-1 b-1], @cmd.installed_specs.map { |spec| spec.full_name }
692
+ end
693
+
627
694
  def test_execute_conservative
628
695
  spec_fetcher do |fetcher|
629
696
  fetcher.download 'b', 2
@@ -66,4 +66,3 @@ gem 'd', '= 1'
66
66
  end
67
67
 
68
68
  end
69
-
@@ -68,4 +68,33 @@ class TestGemCommandsOpenCommand < Gem::TestCase
68
68
  assert_equal "", @ui.error
69
69
  end
70
70
 
71
+ def test_default_gem
72
+ @cmd.options[:version] = "1.0"
73
+ @cmd.options[:args] = %w[foo]
74
+
75
+ version = @cmd.options[:version]
76
+ @cmd.define_singleton_method(:spec_for) do |name|
77
+ spec = Gem::Specification.find_all_by_name(name, version).first
78
+
79
+ spec.define_singleton_method(:default_gem?) do
80
+ true
81
+ end
82
+
83
+ return spec if spec
84
+
85
+ say "Unable to find gem '#{name}'"
86
+ end
87
+
88
+ gem("foo", "1.0")
89
+
90
+ assert_raises Gem::MockGemUi::TermError do
91
+ use_ui @ui do
92
+ @cmd.execute
93
+ end
94
+ end
95
+
96
+ assert_match %r|'foo' is a default gem and can't be opened\.| , @ui.output
97
+ assert_equal "", @ui.error
98
+ end
99
+
71
100
  end
@@ -30,4 +30,3 @@ class TestGemCommandsOutdatedCommand < Gem::TestCase
30
30
  assert_equal "", @ui.error
31
31
  end
32
32
  end
33
-