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
@@ -94,7 +94,7 @@ class TestGemPackage < Gem::Package::TarTestCase
94
94
  }
95
95
  }
96
96
 
97
- if defined?(OpenSSL::Digest) then
97
+ if defined?(OpenSSL::Digest)
98
98
  expected['SHA256'] = {
99
99
  'metadata.gz' => metadata_sha256,
100
100
  'data.tar.gz' => Digest::SHA256.hexdigest(tar),
@@ -104,6 +104,25 @@ class TestGemPackage < Gem::Package::TarTestCase
104
104
  assert_equal expected, YAML.load(checksums)
105
105
  end
106
106
 
107
+ def test_build_time_source_date_epoch
108
+ epoch = ENV["SOURCE_DATE_EPOCH"]
109
+ ENV["SOURCE_DATE_EPOCH"] = "123456789"
110
+
111
+ spec = Gem::Specification.new 'build', '1'
112
+ spec.summary = 'build'
113
+ spec.authors = 'build'
114
+ spec.files = ['lib/code.rb']
115
+ spec.date = Time.at 0
116
+ spec.rubygems_version = Gem::Version.new '0'
117
+
118
+
119
+ package = Gem::Package.new spec.file_name
120
+
121
+ assert_equal Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc, package.build_time
122
+ ensure
123
+ ENV["SOURCE_DATE_EPOCH"] = epoch
124
+ end
125
+
107
126
  def test_add_files
108
127
  spec = Gem::Specification.new
109
128
  spec.files = %w[lib/code.rb lib/empty]
@@ -134,16 +153,23 @@ class TestGemPackage < Gem::Package::TarTestCase
134
153
  end
135
154
 
136
155
  def test_add_files_symlink
137
- skip 'symlink not supported' if Gem.win_platform?
138
-
139
156
  spec = Gem::Specification.new
140
- spec.files = %w[lib/code.rb lib/code_sym.rb]
157
+ spec.files = %w[lib/code.rb lib/code_sym.rb lib/code_sym2.rb]
141
158
 
142
159
  FileUtils.mkdir_p 'lib'
143
160
  File.open 'lib/code.rb', 'w' do |io| io.write '# lib/code.rb' end
144
161
 
145
162
  # NOTE: 'code.rb' is correct, because it's relative to lib/code_sym.rb
146
- File.symlink('code.rb', 'lib/code_sym.rb')
163
+ begin
164
+ File.symlink('code.rb', 'lib/code_sym.rb')
165
+ File.symlink('../lib/code.rb', 'lib/code_sym2.rb')
166
+ rescue Errno::EACCES => e
167
+ if win_platform?
168
+ skip "symlink - must be admin with no UAC on Windows"
169
+ else
170
+ raise e
171
+ end
172
+ end
147
173
 
148
174
  package = Gem::Package.new 'bogus.gem'
149
175
  package.spec = spec
@@ -167,7 +193,7 @@ class TestGemPackage < Gem::Package::TarTestCase
167
193
  end
168
194
 
169
195
  assert_equal %w[lib/code.rb], files
170
- assert_equal [{'lib/code_sym.rb' => 'lib/code.rb'}], symlinks
196
+ assert_equal [{'lib/code_sym.rb' => 'lib/code.rb'}, {'lib/code_sym2.rb' => '../lib/code.rb'}], symlinks
171
197
  end
172
198
 
173
199
  def test_build
@@ -299,6 +325,19 @@ class TestGemPackage < Gem::Package::TarTestCase
299
325
  assert_equal 'missing value for attribute summary', e.message
300
326
  end
301
327
 
328
+ def test_build_invalid_arguments
329
+ spec = Gem::Specification.new 'build', '1'
330
+
331
+ package = Gem::Package.new spec.file_name
332
+ package.spec = spec
333
+
334
+ e = assert_raises ArgumentError do
335
+ package.build true, true
336
+ end
337
+
338
+ assert_equal "skip_validation = true and strict_validation = true are incompatible", e.message
339
+ end
340
+
302
341
  def test_build_signed
303
342
  skip 'openssl is missing' unless defined?(OpenSSL::SSL)
304
343
 
@@ -435,8 +474,6 @@ class TestGemPackage < Gem::Package::TarTestCase
435
474
  end
436
475
 
437
476
  def test_extract_tar_gz_symlink_relative_path
438
- skip 'symlink not supported' if Gem.win_platform?
439
-
440
477
  package = Gem::Package.new @gem
441
478
 
442
479
  tgz_io = util_tar_gz do |tar|
@@ -445,7 +482,15 @@ class TestGemPackage < Gem::Package::TarTestCase
445
482
  tar.add_symlink 'lib/foo.rb', '../relative.rb', 0644
446
483
  end
447
484
 
448
- package.extract_tar_gz tgz_io, @destination
485
+ begin
486
+ package.extract_tar_gz tgz_io, @destination
487
+ rescue Errno::EACCES => e
488
+ if win_platform?
489
+ skip "symlink - must be admin with no UAC on Windows"
490
+ else
491
+ raise e
492
+ end
493
+ end
449
494
 
450
495
  extracted = File.join @destination, 'lib/foo.rb'
451
496
  assert_path_exists extracted
@@ -456,33 +501,35 @@ class TestGemPackage < Gem::Package::TarTestCase
456
501
  end
457
502
 
458
503
  def test_extract_symlink_parent
459
- skip 'symlink not supported' if Gem.win_platform?
460
-
461
- package = Gem::Package.new @gem
504
+ package = Gem::Package.new @gem
462
505
 
463
- tgz_io = util_tar_gz do |tar|
464
- tar.mkdir 'lib', 0755
465
- tar.add_symlink 'lib/link', '../..', 0644
466
- tar.add_file 'lib/link/outside.txt', 0644 do |io| io.write 'hi' end
467
- end
506
+ tgz_io = util_tar_gz do |tar|
507
+ tar.mkdir 'lib', 0755
508
+ tar.add_symlink 'lib/link', '../..', 0644
509
+ tar.add_file 'lib/link/outside.txt', 0644 do |io| io.write 'hi' end
510
+ end
468
511
 
469
- # Extract into a subdirectory of @destination; if this test fails it writes
470
- # a file outside destination_subdir, but we want the file to remain inside
471
- # @destination so it will be cleaned up.
472
- destination_subdir = File.join @destination, 'subdir'
473
- FileUtils.mkdir_p destination_subdir
512
+ # Extract into a subdirectory of @destination; if this test fails it writes
513
+ # a file outside destination_subdir, but we want the file to remain inside
514
+ # @destination so it will be cleaned up.
515
+ destination_subdir = File.join @destination, 'subdir'
516
+ FileUtils.mkdir_p destination_subdir
474
517
 
475
- e = assert_raises Gem::Package::PathError do
476
- package.extract_tar_gz tgz_io, destination_subdir
477
- end
518
+ e = assert_raises(Gem::Package::PathError, Errno::EACCES) do
519
+ package.extract_tar_gz tgz_io, destination_subdir
520
+ end
478
521
 
479
- assert_equal("installing into parent path lib/link/outside.txt of " +
480
- "#{destination_subdir} is not allowed", e.message)
522
+ if Gem::Package::PathError === e
523
+ assert_equal("installing into parent path lib/link/outside.txt of " +
524
+ "#{destination_subdir} is not allowed", e.message)
525
+ elsif win_platform?
526
+ skip "symlink - must be admin with no UAC on Windows"
527
+ else
528
+ raise e
529
+ end
481
530
  end
482
531
 
483
532
  def test_extract_symlink_parent_doesnt_delete_user_dir
484
- skip if RUBY_VERSION <= "1.8.7"
485
-
486
533
  package = Gem::Package.new @gem
487
534
 
488
535
  # Extract into a subdirectory of @destination; if this test fails it writes
@@ -615,7 +662,6 @@ class TestGemPackage < Gem::Package::TarTestCase
615
662
  end
616
663
 
617
664
  def test_install_location_extra_slash
618
- skip 'no File.realpath on 1.8' if RUBY_VERSION < '1.9'
619
665
  package = Gem::Package.new @gem
620
666
 
621
667
  file = 'foo//file.rb'.dup
@@ -788,7 +834,7 @@ class TestGemPackage < Gem::Package::TarTestCase
788
834
  e.message
789
835
  io
790
836
  end
791
- tf.close! if tf.respond_to? :close!
837
+ tf.close!
792
838
  end
793
839
 
794
840
  def test_verify_empty
@@ -87,4 +87,3 @@ class TestGemPackageOld < Gem::TestCase
87
87
  end
88
88
 
89
89
  end
90
-
@@ -160,9 +160,49 @@ group\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000
160
160
  assert_raises ArgumentError do
161
161
  Gem::Package::TarHeader.from io
162
162
  end
163
- io.close! if io.respond_to? :close!
163
+ io.close!
164
164
  end
165
165
  end
166
166
 
167
- end
167
+ def test_big_uid_gid
168
+ stream = StringIO.new(
169
+ <<-EOF.dup.force_encoding('binary').split("\n").join
170
+ GeoIP2-City_20190528/
171
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
172
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
173
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
174
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x000000755\x00\x80\x00
175
+ \x00\x00v\xB2Z\x9E\x80\x00\x00\x00v\xB2Z\x9E00000000000\x0013473270100\x00015424
176
+ \x00 5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
177
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
178
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
179
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
180
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00ustar \x00
181
+ tjmather\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
182
+ \x00\x00\x00\x00\x00tjmather\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
183
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
184
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
185
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
186
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
187
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
188
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
189
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
190
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
191
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
192
+ \x00\x00\x00\x00
193
+ EOF
194
+ )
195
+
196
+ tar_header = Gem::Package::TarHeader.from stream
197
+
198
+ assert_equal 1991400094, tar_header.uid
199
+ assert_equal 1991400094, tar_header.gid
200
+
201
+ assert_equal 'GeoIP2-City_20190528/', tar_header.name
202
+ assert_equal 0755, tar_header.mode
203
+ assert_equal 0, tar_header.size
204
+ assert_equal 1559064640, tar_header.mtime
205
+ assert_equal 6932, tar_header.checksum
206
+ end
168
207
 
208
+ end
@@ -87,4 +87,3 @@ class TestGemPackageTarReader < Gem::Package::TarTestCase
87
87
  end
88
88
 
89
89
  end
90
-
@@ -34,6 +34,10 @@ class TestGemPackageTarReaderEntry < Gem::Package::TarTestCase
34
34
  assert_equal 1, @entry.bytes_read
35
35
  end
36
36
 
37
+ def test_size
38
+ assert_equal @contents.size, @entry.size
39
+ end
40
+
37
41
  def test_close
38
42
  @entry.close
39
43
 
@@ -129,6 +133,13 @@ class TestGemPackageTarReaderEntry < Gem::Package::TarTestCase
129
133
  assert_equal @contents[0...100], @entry.read(100)
130
134
  end
131
135
 
136
+ def test_readpartial
137
+ assert_raises(EOFError) do
138
+ @entry.read(@contents.size)
139
+ @entry.readpartial(1)
140
+ end
141
+ end
142
+
132
143
  def test_rewind
133
144
  char = @entry.getc
134
145
 
@@ -11,9 +11,12 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
11
11
  @data = 'abcde12345'
12
12
  @io = TempIO.new
13
13
  @tar_writer = Gem::Package::TarWriter.new @io
14
+ @epoch = ENV["SOURCE_DATE_EPOCH"]
15
+ ENV["SOURCE_DATE_EPOCH"] = nil
14
16
  end
15
17
 
16
18
  def teardown
19
+ ENV["SOURCE_DATE_EPOCH"] = @epoch
17
20
  @tar_writer.close unless @tar_writer.closed?
18
21
  @io.close!
19
22
 
@@ -31,6 +34,16 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
31
34
  assert_equal 1024, @io.pos
32
35
  end
33
36
 
37
+ def test_add_file_source_date_epoch
38
+ ENV["SOURCE_DATE_EPOCH"] = "123456789"
39
+ Time.stub :now, Time.at(1458518157) do
40
+ @tar_writer.mkdir 'foo', 0644
41
+
42
+ assert_headers_equal tar_dir_header('foo', '', 0644, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc),
43
+ @io.string[0, 512]
44
+ end
45
+ end
46
+
34
47
  def test_add_symlink
35
48
  Time.stub :now, Time.at(1458518157) do
36
49
  @tar_writer.add_symlink 'x', 'y', 0644
@@ -41,6 +54,16 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
41
54
  assert_equal 512, @io.pos
42
55
  end
43
56
 
57
+ def test_add_symlink_source_date_epoch
58
+ ENV["SOURCE_DATE_EPOCH"] = "123456789"
59
+ Time.stub :now, Time.at(1458518157) do
60
+ @tar_writer.add_symlink 'x', 'y', 0644
61
+
62
+ assert_headers_equal(tar_symlink_header('x', '', 0644, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc, 'y'),
63
+ @io.string[0, 512])
64
+ end
65
+ end
66
+
44
67
  def test_add_file_digest
45
68
  digest_algorithms = Digest::SHA1, Digest::SHA512
46
69
 
@@ -116,7 +139,6 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
116
139
 
117
140
  assert_equal 2048, @io.pos
118
141
  end
119
-
120
142
  end
121
143
 
122
144
  def test_add_file_signer_empty
@@ -148,6 +170,16 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
148
170
  assert_equal 1024, @io.pos
149
171
  end
150
172
 
173
+ def test_add_file_simple_source_date_epoch
174
+ ENV["SOURCE_DATE_EPOCH"] = "123456789"
175
+ Time.stub :now, Time.at(1458518157) do
176
+ @tar_writer.add_file_simple 'x', 0644, 10 do |io| io.write "a" * 10 end
177
+
178
+ assert_headers_equal(tar_file_header('x', '', 0644, 10, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc),
179
+ @io.string[0, 512])
180
+ end
181
+ end
182
+
151
183
  def test_add_file_simple_padding
152
184
  Time.stub :now, Time.at(1458518157) do
153
185
  @tar_writer.add_file_simple 'x', 0, 100
@@ -175,12 +207,6 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
175
207
  end
176
208
  end
177
209
 
178
- def test_add_file_unseekable
179
- assert_raises Gem::Package::NonSeekableIO do
180
- Gem::Package::TarWriter.new(Object.new).add_file 'x', 0
181
- end
182
- end
183
-
184
210
  def test_close
185
211
  @tar_writer.close
186
212
 
@@ -223,6 +249,16 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
223
249
  end
224
250
  end
225
251
 
252
+ def test_mkdir_source_date_epoch
253
+ ENV["SOURCE_DATE_EPOCH"] = "123456789"
254
+ Time.stub :now, Time.at(1458518157) do
255
+ @tar_writer.mkdir 'foo', 0644
256
+
257
+ assert_headers_equal tar_dir_header('foo', '', 0644, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc),
258
+ @io.string[0, 512]
259
+ end
260
+ end
261
+
226
262
  def test_split_name
227
263
  assert_equal ['b' * 100, 'a' * 155],
228
264
  @tar_writer.split_name("#{'a' * 155}/#{'b' * 100}")
@@ -1,9 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
  require 'rubygems/test_case'
3
3
  require 'rubygems'
4
+ require 'bundler/errors'
4
5
  begin
5
6
  require 'rubygems/package_task'
6
- rescue LoadError
7
+ rescue LoadError, Bundler::GemfileNotFound
7
8
  end
8
9
 
9
10
  class TestGemPackageTask < Gem::TestCase
@@ -81,4 +82,3 @@ class TestGemPackageTask < Gem::TestCase
81
82
  end
82
83
 
83
84
  end if defined?(Rake::PackageTask)
84
-
@@ -29,7 +29,7 @@ class TestGemPathSupport < Gem::TestCase
29
29
  assert_equal expected, ps.path
30
30
  end
31
31
 
32
- if defined?(File::ALT_SEPARATOR) and File::ALT_SEPARATOR
32
+ if File::ALT_SEPARATOR
33
33
  def test_initialize_home_normalize
34
34
  alternate = @tempdir.gsub(File::SEPARATOR, File::ALT_SEPARATOR)
35
35
  ps = Gem::PathSupport.new "GEM_HOME" => alternate
@@ -44,10 +44,10 @@ class TestGemPathSupport < Gem::TestCase
44
44
  assert_equal ENV["GEM_HOME"], ps.home
45
45
 
46
46
  expected = [
47
- File.join(@tempdir, 'foo'),
48
- File.join(@tempdir, 'bar'),
49
- ENV["GEM_HOME"],
50
- ]
47
+ File.join(@tempdir, 'foo'),
48
+ File.join(@tempdir, 'bar'),
49
+ ENV["GEM_HOME"],
50
+ ]
51
51
 
52
52
  assert_equal expected, ps.path
53
53
  end
@@ -63,9 +63,9 @@ class TestGemPathSupport < Gem::TestCase
63
63
  assert_equal ENV["GEM_HOME"], ps.home
64
64
 
65
65
  expected = [
66
- File.join(@tempdir, 'foo'),
67
- File.join(@tempdir, 'bar'),
68
- ] + Gem.default_path << ENV["GEM_HOME"]
66
+ File.join(@tempdir, 'foo'),
67
+ File.join(@tempdir, 'bar'),
68
+ ] + Gem.default_path << ENV["GEM_HOME"]
69
69
 
70
70
  assert_equal expected, ps.path
71
71
  end
@@ -81,9 +81,9 @@ class TestGemPathSupport < Gem::TestCase
81
81
  assert_equal ENV["GEM_HOME"], ps.home
82
82
 
83
83
  expected = [
84
- File.join(@tempdir, 'foo'),
85
- File.join(@tempdir, 'bar'),
86
- ] + Gem.default_path << ENV["GEM_HOME"]
84
+ File.join(@tempdir, 'foo'),
85
+ File.join(@tempdir, 'bar'),
86
+ ] + Gem.default_path << ENV["GEM_HOME"]
87
87
 
88
88
  assert_equal expected, ps.path
89
89
  end
@@ -118,4 +118,21 @@ class TestGemPathSupport < Gem::TestCase
118
118
  ps = Gem::PathSupport.new "GEM_SPEC_CACHE" => "foo"
119
119
  assert_equal "foo", ps.spec_cache_dir
120
120
  end
121
+
122
+ def test_gem_paths_do_not_contain_symlinks
123
+ dir = "#{@tempdir}/realgemdir"
124
+ symlink = "#{@tempdir}/symdir"
125
+ Dir.mkdir dir
126
+ begin
127
+ File.symlink(dir, symlink)
128
+ rescue NotImplementedError, SystemCallError
129
+ skip 'symlinks not supported'
130
+ end
131
+ not_existing = "#{@tempdir}/does_not_exist"
132
+ path = "#{symlink}#{File::PATH_SEPARATOR}#{not_existing}"
133
+
134
+ ps = Gem::PathSupport.new "GEM_PATH" => path, "GEM_HOME" => symlink
135
+ assert_equal dir, ps.home
136
+ assert_equal [dir, not_existing], ps.path
137
+ end
121
138
  end
@@ -117,7 +117,7 @@ class TestGemPlatform < Gem::TestCase
117
117
 
118
118
  assert_equal expected, platform.to_a, 'i386-mswin32 VC6'
119
119
  ensure
120
- if orig_RUBY_SO_NAME then
120
+ if orig_RUBY_SO_NAME
121
121
  RbConfig::CONFIG['RUBY_SO_NAME'] = orig_RUBY_SO_NAME
122
122
  else
123
123
  RbConfig::CONFIG.delete 'RUBY_SO_NAME'
@@ -145,7 +145,7 @@ class TestGemPlatform < Gem::TestCase
145
145
  end
146
146
 
147
147
  def test_to_s
148
- if win_platform? then
148
+ if win_platform?
149
149
  assert_equal 'x86-mswin32-60', Gem::Platform.local.to_s
150
150
  else
151
151
  assert_equal 'x86-darwin-8', Gem::Platform.local.to_s
@@ -297,12 +297,11 @@ class TestGemPlatform < Gem::TestCase
297
297
  assert_local_match 'sparc-solaris2.8-mq5.3'
298
298
  end
299
299
 
300
- def assert_local_match name
300
+ def assert_local_match(name)
301
301
  assert_match Gem::Platform.local, name
302
302
  end
303
303
 
304
- def refute_local_match name
304
+ def refute_local_match(name)
305
305
  refute_match Gem::Platform.local, name
306
306
  end
307
307
  end
308
-
@@ -5,7 +5,6 @@ require 'rubygems/rdoc'
5
5
 
6
6
  class TestGemRDoc < Gem::TestCase
7
7
  Gem::RDoc.load_rdoc
8
- rdoc_4 = Gem::Requirement.new('> 3').satisfied_by?(Gem::RDoc.rdoc_version)
9
8
 
10
9
  def setup
11
10
  super
@@ -31,29 +30,8 @@ class TestGemRDoc < Gem::TestCase
31
30
  Gem.configuration[:rdoc] = nil
32
31
  end
33
32
 
34
- ##
35
- # RDoc 4 ships with its own Gem::RDoc which overrides this one which is
36
- # shipped for backwards compatibility.
37
-
38
- def rdoc_4?
39
- Gem::Requirement.new('>= 4.0.0.preview2').satisfied_by? \
40
- @hook.class.rdoc_version
41
- end
42
-
43
- def rdoc_3?
44
- Gem::Requirement.new('~> 3.0').satisfied_by? @hook.class.rdoc_version
45
- end
46
-
47
- def rdoc_3_8_or_better?
48
- Gem::Requirement.new('>= 3.8').satisfied_by? @hook.class.rdoc_version
49
- end
50
-
51
33
  def test_initialize
52
- if rdoc_4? then
53
- refute @hook.generate_rdoc
54
- else
55
- assert @hook.generate_rdoc
56
- end
34
+ refute @hook.generate_rdoc
57
35
  assert @hook.generate_ri
58
36
 
59
37
  rdoc = Gem::RDoc.new @a, false, false
@@ -75,67 +53,6 @@ class TestGemRDoc < Gem::TestCase
75
53
  assert_empty args
76
54
  end
77
55
 
78
- def test_document
79
- skip 'RDoc 3 required' unless rdoc_3?
80
-
81
- options = RDoc::Options.new
82
- options.files = []
83
-
84
- rdoc = @hook.new_rdoc
85
- @hook.instance_variable_set :@rdoc, rdoc
86
- @hook.instance_variable_set :@file_info, []
87
-
88
- @hook.document 'darkfish', options, @a.doc_dir('rdoc')
89
-
90
- assert @hook.rdoc_installed?
91
- end unless rdoc_4
92
-
93
- def test_generate
94
- skip 'RDoc 3 required' unless rdoc_3?
95
-
96
- FileUtils.mkdir_p @a.doc_dir
97
- FileUtils.mkdir_p File.join(@a.gem_dir, 'lib')
98
-
99
- @hook.generate
100
-
101
- assert @hook.rdoc_installed?
102
- assert @hook.ri_installed?
103
-
104
- rdoc = @hook.instance_variable_get :@rdoc
105
-
106
- refute rdoc.options.hyperlink_all
107
- end unless rdoc_4
108
-
109
- def test_generate_configuration_rdoc_array
110
- skip 'RDoc 3 required' unless rdoc_3?
111
-
112
- Gem.configuration[:rdoc] = %w[-A]
113
-
114
- FileUtils.mkdir_p @a.doc_dir
115
- FileUtils.mkdir_p File.join(@a.gem_dir, 'lib')
116
-
117
- @hook.generate
118
-
119
- rdoc = @hook.instance_variable_get :@rdoc
120
-
121
- assert rdoc.options.hyperlink_all
122
- end unless rdoc_4
123
-
124
- def test_generate_configuration_rdoc_string
125
- skip 'RDoc 3 required' unless rdoc_3?
126
-
127
- Gem.configuration[:rdoc] = '-A'
128
-
129
- FileUtils.mkdir_p @a.doc_dir
130
- FileUtils.mkdir_p File.join(@a.gem_dir, 'lib')
131
-
132
- @hook.generate
133
-
134
- rdoc = @hook.instance_variable_get :@rdoc
135
-
136
- assert rdoc.options.hyperlink_all
137
- end unless rdoc_4
138
-
139
56
  def test_generate_disabled
140
57
  @hook.generate_rdoc = false
141
58
  @hook.generate_ri = false
@@ -146,57 +63,6 @@ class TestGemRDoc < Gem::TestCase
146
63
  refute @hook.ri_installed?
147
64
  end
148
65
 
149
- def test_generate_force
150
- skip 'RDoc 3 required' unless rdoc_3?
151
-
152
- FileUtils.mkdir_p @a.doc_dir 'ri'
153
- FileUtils.mkdir_p @a.doc_dir 'rdoc'
154
- FileUtils.mkdir_p File.join(@a.gem_dir, 'lib')
155
-
156
- @hook.force = true
157
-
158
- @hook.generate
159
-
160
- assert_path_exists File.join(@a.doc_dir('rdoc'), 'index.html')
161
- assert_path_exists File.join(@a.doc_dir('ri'), 'cache.ri')
162
- end unless rdoc_4
163
-
164
- def test_generate_no_overwrite
165
- skip 'RDoc 3 required' unless rdoc_3?
166
-
167
- FileUtils.mkdir_p @a.doc_dir 'ri'
168
- FileUtils.mkdir_p @a.doc_dir 'rdoc'
169
- FileUtils.mkdir_p File.join(@a.gem_dir, 'lib')
170
-
171
- @hook.generate
172
-
173
- refute_path_exists File.join(@a.doc_dir('rdoc'), 'index.html')
174
- refute_path_exists File.join(@a.doc_dir('ri'), 'cache.ri')
175
- end unless rdoc_4
176
-
177
- def test_generate_legacy
178
- skip 'RDoc < 3.8 required' if rdoc_3_8_or_better?
179
-
180
- FileUtils.mkdir_p @a.doc_dir
181
- FileUtils.mkdir_p File.join(@a.gem_dir, 'lib')
182
-
183
- @hook.generate_legacy
184
-
185
- assert @hook.rdoc_installed?
186
- assert @hook.ri_installed?
187
- end unless rdoc_4
188
-
189
- def test_legacy_rdoc
190
- skip 'RDoc < 3.8 required' if rdoc_3_8_or_better?
191
-
192
- FileUtils.mkdir_p @a.doc_dir
193
- FileUtils.mkdir_p File.join(@a.gem_dir, 'lib')
194
-
195
- @hook.legacy_rdoc '--op', @a.doc_dir('rdoc')
196
-
197
- assert @hook.rdoc_installed?
198
- end unless rdoc_4
199
-
200
66
  def test_new_rdoc
201
67
  assert_kind_of RDoc::RDoc, @hook.new_rdoc
202
68
  end
@@ -269,4 +135,3 @@ class TestGemRDoc < Gem::TestCase
269
135
  end
270
136
 
271
137
  end
272
-