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
@@ -50,15 +50,9 @@ install:
50
50
 
51
51
  results = results.join "\n"
52
52
 
53
- if RUBY_VERSION > '2.0' then
54
- assert_match %r%"DESTDIR=#{ENV['DESTDIR']}" clean$%, results
55
- assert_match %r%"DESTDIR=#{ENV['DESTDIR']}"$%, results
56
- assert_match %r%"DESTDIR=#{ENV['DESTDIR']}" install$%, results
57
- else
58
- refute_match %r%"DESTDIR=#{ENV['DESTDIR']}" clean$%, results
59
- refute_match %r%"DESTDIR=#{ENV['DESTDIR']}"$%, results
60
- refute_match %r%"DESTDIR=#{ENV['DESTDIR']}" install$%, results
61
- end
53
+ assert_match %r%"DESTDIR=#{ENV['DESTDIR']}" clean$%, results
54
+ assert_match %r%"DESTDIR=#{ENV['DESTDIR']}"$%, results
55
+ assert_match %r%"DESTDIR=#{ENV['DESTDIR']}" install$%, results
62
56
 
63
57
  if /nmake/ !~ results
64
58
  assert_match %r%^clean: destination$%, results
@@ -87,15 +81,9 @@ install:
87
81
 
88
82
  results = results.join "\n"
89
83
 
90
- if RUBY_VERSION > '2.0' then
91
- assert_match %r%"DESTDIR=#{ENV['DESTDIR']}" clean$%, results
92
- assert_match %r%"DESTDIR=#{ENV['DESTDIR']}"$%, results
93
- assert_match %r%"DESTDIR=#{ENV['DESTDIR']}" install$%, results
94
- else
95
- refute_match %r%"DESTDIR=#{ENV['DESTDIR']}" clean$%, results
96
- refute_match %r%"DESTDIR=#{ENV['DESTDIR']}"$%, results
97
- refute_match %r%"DESTDIR=#{ENV['DESTDIR']}" install$%, results
98
- end
84
+ assert_match %r%"DESTDIR=#{ENV['DESTDIR']}" clean$%, results
85
+ assert_match %r%"DESTDIR=#{ENV['DESTDIR']}"$%, results
86
+ assert_match %r%"DESTDIR=#{ENV['DESTDIR']}" install$%, results
99
87
  end
100
88
 
101
89
  def test_build_extensions
@@ -134,11 +122,6 @@ install:
134
122
  end
135
123
 
136
124
  def test_build_extensions_with_gemhome_with_space
137
- # Details: https://github.com/rubygems/rubygems/issues/977#issuecomment-171544940
138
- if win_platform? && RUBY_VERSION <= '2.0'
139
- skip 'gemhome with spaces does not work with Ruby 1.9.x on Windows'
140
- end
141
-
142
125
  new_gemhome = File.join @tempdir, 'gem home'
143
126
  File.rename(@gemhome, new_gemhome)
144
127
  @gemhome = new_gemhome
@@ -227,6 +210,8 @@ install:
227
210
  end
228
211
 
229
212
  def test_build_extensions_extconf_bad
213
+ cwd = Dir.pwd
214
+
230
215
  @spec.extensions << 'extconf.rb'
231
216
 
232
217
  FileUtils.mkdir_p @spec.gem_dir
@@ -257,6 +242,8 @@ install:
257
242
 
258
243
  assert_match %r%#{Regexp.escape Gem.ruby}: No such file%,
259
244
  File.read(gem_make_out)
245
+
246
+ assert_equal cwd, Dir.pwd
260
247
  end
261
248
 
262
249
  def test_build_extensions_unsupported
@@ -10,7 +10,7 @@ class TestGemExtCmakeBuilder < Gem::TestCase
10
10
  # Details: https://github.com/rubygems/rubygems/issues/1270#issuecomment-177368340
11
11
  skip "CmakeBuilder doesn't work on Windows." if Gem.win_platform?
12
12
 
13
- `cmake #{Gem::Ext::Builder.redirector}`
13
+ system('cmake', out: IO::NULL, err: [:child, :out])
14
14
 
15
15
  skip 'cmake not present' unless $?.success?
16
16
 
@@ -25,6 +25,7 @@ class TestGemExtCmakeBuilder < Gem::TestCase
25
25
  File.open File.join(@ext, 'CMakeLists.txt'), 'w' do |cmakelists|
26
26
  cmakelists.write <<-eo_cmake
27
27
  cmake_minimum_required(VERSION 2.6)
28
+ project(self_build NONE)
28
29
  install (FILES test.txt DESTINATION bin)
29
30
  eo_cmake
30
31
  end
@@ -34,7 +35,7 @@ install (FILES test.txt DESTINATION bin)
34
35
  output = []
35
36
 
36
37
  Dir.chdir @ext do
37
- Gem::Ext::CmakeBuilder.build nil, nil, @dest_path, output
38
+ Gem::Ext::CmakeBuilder.build nil, @dest_path, output
38
39
  end
39
40
 
40
41
  output = output.join "\n"
@@ -52,7 +53,7 @@ install (FILES test.txt DESTINATION bin)
52
53
 
53
54
  error = assert_raises Gem::InstallError do
54
55
  Dir.chdir @ext do
55
- Gem::Ext::CmakeBuilder.build nil, nil, @dest_path, output
56
+ Gem::Ext::CmakeBuilder.build nil, @dest_path, output
56
57
  end
57
58
  end
58
59
 
@@ -75,7 +76,7 @@ install (FILES test.txt DESTINATION bin)
75
76
  output = []
76
77
 
77
78
  Dir.chdir @ext do
78
- Gem::Ext::CmakeBuilder.build nil, nil, @dest_path, output
79
+ Gem::Ext::CmakeBuilder.build nil, @dest_path, output
79
80
  end
80
81
 
81
82
  output = output.join "\n"
@@ -27,7 +27,7 @@ class TestGemExtConfigureBuilder < Gem::TestCase
27
27
  output = []
28
28
 
29
29
  Dir.chdir @ext do
30
- Gem::Ext::ConfigureBuilder.build nil, nil, @dest_path, output
30
+ Gem::Ext::ConfigureBuilder.build nil, @dest_path, output
31
31
  end
32
32
 
33
33
  assert_match(/^current directory:/, output.shift)
@@ -50,7 +50,7 @@ class TestGemExtConfigureBuilder < Gem::TestCase
50
50
 
51
51
  error = assert_raises Gem::InstallError do
52
52
  Dir.chdir @ext do
53
- Gem::Ext::ConfigureBuilder.build nil, nil, @dest_path, output
53
+ Gem::Ext::ConfigureBuilder.build nil, @dest_path, output
54
54
  end
55
55
  end
56
56
 
@@ -76,7 +76,7 @@ class TestGemExtConfigureBuilder < Gem::TestCase
76
76
 
77
77
  output = []
78
78
  Dir.chdir @ext do
79
- Gem::Ext::ConfigureBuilder.build nil, nil, @dest_path, output
79
+ Gem::Ext::ConfigureBuilder.build nil, @dest_path, output
80
80
  end
81
81
 
82
82
  assert_contains_make_command 'clean', output[1]
@@ -29,7 +29,7 @@ class TestGemExtExtConfBuilder < Gem::TestCase
29
29
 
30
30
  Dir.chdir @ext do
31
31
  result =
32
- Gem::Ext::ExtConfBuilder.build 'extconf.rb', nil, @dest_path, output
32
+ Gem::Ext::ExtConfBuilder.build 'extconf.rb', @dest_path, output
33
33
 
34
34
  assert_same result, output
35
35
  end
@@ -54,7 +54,7 @@ class TestGemExtExtConfBuilder < Gem::TestCase
54
54
  output = []
55
55
 
56
56
  Dir.chdir @ext do
57
- Gem::Ext::ExtConfBuilder.build 'extconf.rb', nil, @dest_path, output
57
+ Gem::Ext::ExtConfBuilder.build 'extconf.rb', @dest_path, output
58
58
  end
59
59
 
60
60
  assert_equal "creating Makefile\n", output[2]
@@ -77,7 +77,7 @@ class TestGemExtExtConfBuilder < Gem::TestCase
77
77
 
78
78
  assert_raises Gem::InstallError do
79
79
  Dir.chdir @ext do
80
- Gem::Ext::ExtConfBuilder.build 'extconf.rb', nil, @dest_path, output
80
+ Gem::Ext::ExtConfBuilder.build 'extconf.rb', @dest_path, output
81
81
  end
82
82
  end
83
83
 
@@ -103,7 +103,7 @@ class TestGemExtExtConfBuilder < Gem::TestCase
103
103
 
104
104
  error = assert_raises Gem::InstallError do
105
105
  Dir.chdir @ext do
106
- Gem::Ext::ExtConfBuilder.build 'extconf.rb', nil, @dest_path, output
106
+ Gem::Ext::ExtConfBuilder.build 'extconf.rb', @dest_path, output
107
107
  end
108
108
  end
109
109
 
@@ -130,7 +130,7 @@ class TestGemExtExtConfBuilder < Gem::TestCase
130
130
  output = []
131
131
 
132
132
  Dir.chdir @ext do
133
- Gem::Ext::ExtConfBuilder.build 'extconf.rb', nil, @dest_path, output
133
+ Gem::Ext::ExtConfBuilder.build 'extconf.rb', @dest_path, output
134
134
  end
135
135
 
136
136
  refute_includes(output, "To see why this extension failed to compile, please check the mkmf.log which can be found here:\n")
@@ -172,7 +172,7 @@ end
172
172
  output = []
173
173
 
174
174
  Dir.chdir @ext do
175
- Gem::Ext::ExtConfBuilder.build 'extconf.rb', nil, @dest_path, output
175
+ Gem::Ext::ExtConfBuilder.build 'extconf.rb', @dest_path, output
176
176
  end
177
177
 
178
178
  assert_contains_make_command 'clean', output[4]
@@ -216,14 +216,14 @@ end
216
216
  assert_equal 'Makefile not found', error.message
217
217
  end
218
218
 
219
- def configure_args args = nil
219
+ def configure_args(args = nil)
220
220
  configure_args = RbConfig::CONFIG['configure_args']
221
221
  RbConfig::CONFIG['configure_args'] = args if args
222
222
 
223
223
  yield
224
224
 
225
225
  ensure
226
- if configure_args then
226
+ if configure_args
227
227
  RbConfig::CONFIG['configure_args'] = configure_args
228
228
  else
229
229
  RbConfig::CONFIG.delete 'configure_args'
@@ -231,4 +231,3 @@ end
231
231
  end
232
232
 
233
233
  end
234
-
@@ -19,14 +19,14 @@ class TestGemExtRakeBuilder < Gem::TestCase
19
19
 
20
20
  build_rake_in do |rake|
21
21
  Dir.chdir @ext do
22
- Gem::Ext::RakeBuilder.build 'mkrf_conf.rb', nil, @dest_path, output
22
+ Gem::Ext::RakeBuilder.build 'mkrf_conf.rb', @dest_path, output
23
23
  end
24
24
 
25
25
  output = output.join "\n"
26
26
 
27
27
  refute_match %r%^rake failed:%, output
28
28
  assert_match %r%^#{Regexp.escape @@ruby} mkrf_conf\.rb%, output
29
- assert_match %r%^#{Regexp.escape rake} RUBYARCHDIR=#{Regexp.escape @dest_path} RUBYLIBDIR=#{Regexp.escape @dest_path}%, output
29
+ assert_match %r%^#{Regexp.escape rake} RUBYARCHDIR\\=#{Regexp.escape @dest_path} RUBYLIBDIR\\=#{Regexp.escape @dest_path}%, output
30
30
  end
31
31
  end
32
32
 
@@ -40,14 +40,29 @@ class TestGemExtRakeBuilder < Gem::TestCase
40
40
  build_rake_in do |rake|
41
41
  Dir.chdir @ext do
42
42
  non_empty_args_list = ['']
43
- Gem::Ext::RakeBuilder.build 'mkrf_conf.rb', nil, @dest_path, output, non_empty_args_list
43
+ Gem::Ext::RakeBuilder.build 'mkrf_conf.rb', @dest_path, output, non_empty_args_list
44
44
  end
45
45
 
46
46
  output = output.join "\n"
47
47
 
48
48
  refute_match %r%^rake failed:%, output
49
49
  assert_match %r%^#{Regexp.escape @@ruby} mkrf_conf\.rb%, output
50
- assert_match %r%^#{Regexp.escape rake} RUBYARCHDIR=#{Regexp.escape @dest_path} RUBYLIBDIR=#{Regexp.escape @dest_path}%, output
50
+ assert_match %r%^#{Regexp.escape rake} RUBYARCHDIR\\=#{Regexp.escape @dest_path} RUBYLIBDIR\\=#{Regexp.escape @dest_path}%, output
51
+ end
52
+ end
53
+
54
+ def test_class_build_no_mkrf_passes_args
55
+ output = []
56
+
57
+ build_rake_in do |rake|
58
+ Dir.chdir @ext do
59
+ Gem::Ext::RakeBuilder.build "ext/Rakefile", @dest_path, output, ["test1", "test2"]
60
+ end
61
+
62
+ output = output.join "\n"
63
+
64
+ refute_match %r%^rake failed:%, output
65
+ assert_match %r%^#{Regexp.escape rake} RUBYARCHDIR\\=#{Regexp.escape @dest_path} RUBYLIBDIR\\=#{Regexp.escape @dest_path} test1 test2%, output
51
66
  end
52
67
  end
53
68
 
@@ -58,7 +73,7 @@ class TestGemExtRakeBuilder < Gem::TestCase
58
73
  build_rake_in(false) do |rake|
59
74
  error = assert_raises Gem::InstallError do
60
75
  Dir.chdir @ext do
61
- Gem::Ext::RakeBuilder.build "mkrf_conf.rb", nil, @dest_path, output
76
+ Gem::Ext::RakeBuilder.build "mkrf_conf.rb", @dest_path, output
62
77
  end
63
78
  end
64
79
 
@@ -66,4 +66,3 @@ class TestGemGemRunner < Gem::TestCase
66
66
  end
67
67
 
68
68
  end
69
-
@@ -8,6 +8,8 @@ class TestGemGemcutterUtilities < Gem::TestCase
8
8
 
9
9
  def setup
10
10
  super
11
+ # below needed for random testing, class property
12
+ Gem.configuration.disable_default_gem_server = nil
11
13
 
12
14
  ENV['RUBYGEMS_HOST'] = nil
13
15
  Gem.configuration.rubygems_api_key = nil
@@ -177,8 +179,6 @@ class TestGemGemcutterUtilities < Gem::TestCase
177
179
  end
178
180
 
179
181
  def test_sign_in_with_bad_credentials
180
- skip 'Always uses $stdin on windows' if Gem.win_platform?
181
-
182
182
  assert_raises Gem::MockGemUi::TermError do
183
183
  util_sign_in ['Access Denied.', 403, 'Forbidden']
184
184
  end
@@ -187,9 +187,35 @@ class TestGemGemcutterUtilities < Gem::TestCase
187
187
  assert_match %r{Access Denied.}, @sign_in_ui.output
188
188
  end
189
189
 
190
- def util_sign_in response, host = nil, args = []
191
- skip 'Always uses $stdin on windows' if Gem.win_platform?
190
+ def test_sign_in_with_correct_otp_code
191
+ api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
192
+ response_fail = "You have enabled multifactor authentication but your request doesn't have the correct OTP code. Please check it and retry."
193
+
194
+ util_sign_in(proc do
195
+ @call_count ||= 0
196
+ (@call_count += 1).odd? ? [response_fail, 401, 'Unauthorized'] : [api_key, 200, 'OK']
197
+ end, nil, [], "111111\n")
198
+
199
+ assert_match 'You have enabled multi-factor authentication. Please enter OTP code.', @sign_in_ui.output
200
+ assert_match 'Code: ', @sign_in_ui.output
201
+ assert_match 'Signed in.', @sign_in_ui.output
202
+ assert_equal '111111', @fetcher.last_request['OTP']
203
+ end
204
+
205
+ def test_sign_in_with_incorrect_otp_code
206
+ response = "You have enabled multifactor authentication but your request doesn't have the correct OTP code. Please check it and retry."
207
+
208
+ assert_raises Gem::MockGemUi::TermError do
209
+ util_sign_in [response, 401, 'Unauthorized'], nil, [], "111111\n"
210
+ end
211
+
212
+ assert_match 'You have enabled multi-factor authentication. Please enter OTP code.', @sign_in_ui.output
213
+ assert_match 'Code: ', @sign_in_ui.output
214
+ assert_match response, @sign_in_ui.output
215
+ assert_equal '111111', @fetcher.last_request['OTP']
216
+ end
192
217
 
218
+ def util_sign_in(response, host = nil, args = [], extra_input = '')
193
219
  email = 'you@example.com'
194
220
  password = 'secret'
195
221
 
@@ -203,10 +229,10 @@ class TestGemGemcutterUtilities < Gem::TestCase
203
229
  @fetcher.data["#{host}/api/v1/api_key"] = response
204
230
  Gem::RemoteFetcher.fetcher = @fetcher
205
231
 
206
- @sign_in_ui = Gem::MockGemUi.new "#{email}\n#{password}\n"
232
+ @sign_in_ui = Gem::MockGemUi.new("#{email}\n#{password}\n" + extra_input)
207
233
 
208
234
  use_ui @sign_in_ui do
209
- if args.length > 0 then
235
+ if args.length > 0
210
236
  @cmd.sign_in(*args)
211
237
  else
212
238
  @cmd.sign_in
@@ -59,4 +59,3 @@ rye-0.9.8 requires net-ssh (>= 2.0.13) but it conflicted:
59
59
  end
60
60
 
61
61
  end
62
-
@@ -2,7 +2,7 @@
2
2
  require 'rubygems/test_case'
3
3
  require 'rubygems/indexer'
4
4
 
5
- unless defined?(Builder::XChar) then
5
+ unless defined?(Builder::XChar)
6
6
  warn "Gem::Indexer tests are being skipped. Install builder gem." if $VERBOSE
7
7
  end
8
8
 
@@ -37,6 +37,13 @@ class TestGemIndexer < Gem::TestCase
37
37
  @indexer = Gem::Indexer.new(@tempdir)
38
38
  end
39
39
 
40
+ def teardown
41
+ super
42
+
43
+ util_clear_gems
44
+ util_clear_default_gems
45
+ end
46
+
40
47
  def test_initialize
41
48
  assert_equal @tempdir, @indexer.dest_directory
42
49
  assert_match %r{#{Dir.mktmpdir('gem_generate_index').match(/.*-/)}}, @indexer.directory
@@ -96,8 +103,8 @@ class TestGemIndexer < Gem::TestCase
96
103
  quickdir = File.join @tempdir, 'quick'
97
104
  marshal_quickdir = File.join quickdir, "Marshal.#{@marshal_version}"
98
105
 
99
- assert File.directory?(quickdir)
100
- assert File.directory?(marshal_quickdir)
106
+ assert_directory_exists quickdir
107
+ assert_directory_exists marshal_quickdir
101
108
 
102
109
  assert_indexed marshal_quickdir, "#{File.basename(@a1.spec_file)}.rz"
103
110
  assert_indexed marshal_quickdir, "#{File.basename(@a2.spec_file)}.rz"
@@ -126,8 +133,8 @@ class TestGemIndexer < Gem::TestCase
126
133
  quickdir = File.join @tempdir, 'quick'
127
134
  marshal_quickdir = File.join quickdir, "Marshal.#{@marshal_version}"
128
135
 
129
- assert File.directory?(quickdir), 'quickdir should be directory'
130
- assert File.directory?(marshal_quickdir)
136
+ assert_directory_exists quickdir, 'quickdir should be directory'
137
+ assert_directory_exists marshal_quickdir
131
138
 
132
139
  refute_indexed quickdir, "index"
133
140
  refute_indexed quickdir, "index.rz"
@@ -172,8 +179,8 @@ class TestGemIndexer < Gem::TestCase
172
179
  quickdir = File.join @tempdir, 'quick'
173
180
  marshal_quickdir = File.join quickdir, "Marshal.#{@marshal_version}"
174
181
 
175
- assert File.directory?(quickdir)
176
- assert File.directory?(marshal_quickdir)
182
+ assert_directory_exists quickdir
183
+ assert_directory_exists marshal_quickdir
177
184
 
178
185
  assert_indexed marshal_quickdir, "#{File.basename(@a1.spec_file)}.rz"
179
186
  assert_indexed marshal_quickdir, "#{File.basename(@a2.spec_file)}.rz"
@@ -308,8 +315,8 @@ class TestGemIndexer < Gem::TestCase
308
315
  quickdir = File.join @tempdir, 'quick'
309
316
  marshal_quickdir = File.join quickdir, "Marshal.#{@marshal_version}"
310
317
 
311
- assert File.directory?(quickdir)
312
- assert File.directory?(marshal_quickdir)
318
+ assert_directory_exists quickdir
319
+ assert_directory_exists marshal_quickdir
313
320
 
314
321
  @d2_1 = util_spec 'd', '2.1'
315
322
  util_build_gem @d2_1
@@ -363,4 +370,3 @@ class TestGemIndexer < Gem::TestCase
363
370
  end
364
371
 
365
372
  end if defined?(Builder::XChar)
366
-
@@ -21,8 +21,7 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
21
21
  --build-root build_root
22
22
  --format-exec
23
23
  --ignore-dependencies
24
- --rdoc
25
- --ri
24
+ --document
26
25
  -E
27
26
  -f
28
27
  -i /install_to
@@ -92,24 +91,6 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
92
91
  assert_equal %w[ri], @cmd.options[:document]
93
92
  end
94
93
 
95
- def test_rdoc
96
- @cmd.handle_options %w[--rdoc]
97
-
98
- assert_equal %w[rdoc ri], @cmd.options[:document].sort
99
- end
100
-
101
- def test_rdoc_no
102
- @cmd.handle_options %w[--no-rdoc]
103
-
104
- assert_equal %w[ri], @cmd.options[:document]
105
- end
106
-
107
- def test_ri
108
- @cmd.handle_options %w[--no-ri]
109
-
110
- assert_equal %w[], @cmd.options[:document]
111
- end
112
-
113
94
  def test_security_policy
114
95
  skip 'openssl is missing' unless defined?(OpenSSL::SSL)
115
96