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
@@ -5,6 +5,7 @@ require 'rubygems/command'
5
5
  require 'rubygems/installer'
6
6
  require 'pathname'
7
7
  require 'tmpdir'
8
+ require 'rbconfig'
8
9
 
9
10
  # TODO: push this up to test_case.rb once battle tested
10
11
 
@@ -13,8 +14,9 @@ $LOAD_PATH.map! do |path|
13
14
  end
14
15
 
15
16
  class TestGem < Gem::TestCase
17
+ RUBY_INSTALL_NAME = RbConfig::CONFIG['RUBY_INSTALL_NAME']
16
18
 
17
- PLUGINS_LOADED = []
19
+ PLUGINS_LOADED = [] # rubocop:disable Style/MutableConstant
18
20
 
19
21
  def setup
20
22
  super
@@ -31,11 +33,11 @@ class TestGem < Gem::TestCase
31
33
 
32
34
  def test_self_finish_resolve
33
35
  save_loaded_features do
34
- a1 = new_spec "a", "1", "b" => "> 0"
35
- b1 = new_spec "b", "1", "c" => ">= 1"
36
- b2 = new_spec "b", "2", "c" => ">= 2"
37
- c1 = new_spec "c", "1"
38
- c2 = new_spec "c", "2"
36
+ a1 = util_spec "a", "1", "b" => "> 0"
37
+ b1 = util_spec "b", "1", "c" => ">= 1"
38
+ b2 = util_spec "b", "2", "c" => ">= 2"
39
+ c1 = util_spec "c", "1"
40
+ c2 = util_spec "c", "2"
39
41
 
40
42
  install_specs c1, c2, b1, b2, a1
41
43
 
@@ -53,13 +55,13 @@ class TestGem < Gem::TestCase
53
55
 
54
56
  def test_self_finish_resolve_wtf
55
57
  save_loaded_features do
56
- a1 = new_spec "a", "1", "b" => "> 0", "d" => "> 0" # this
57
- b1 = new_spec "b", "1", { "c" => ">= 1" }, "lib/b.rb" # this
58
- b2 = new_spec "b", "2", { "c" => ">= 2" }, "lib/b.rb"
59
- c1 = new_spec "c", "1" # this
60
- c2 = new_spec "c", "2"
61
- d1 = new_spec "d", "1", { "c" => "< 2" }, "lib/d.rb"
62
- d2 = new_spec "d", "2", { "c" => "< 2" }, "lib/d.rb" # this
58
+ a1 = util_spec "a", "1", "b" => "> 0", "d" => "> 0" # this
59
+ b1 = util_spec "b", "1", { "c" => ">= 1" }, "lib/b.rb" # this
60
+ b2 = util_spec "b", "2", { "c" => ">= 2" }, "lib/b.rb"
61
+ c1 = util_spec "c", "1" # this
62
+ c2 = util_spec "c", "2"
63
+ d1 = util_spec "d", "1", { "c" => "< 2" }, "lib/d.rb"
64
+ d2 = util_spec "d", "2", { "c" => "< 2" }, "lib/d.rb" # this
63
65
 
64
66
  install_specs c1, c2, b1, b2, d1, d2, a1
65
67
 
@@ -77,11 +79,11 @@ class TestGem < Gem::TestCase
77
79
 
78
80
  def test_self_finish_resolve_respects_loaded_specs
79
81
  save_loaded_features do
80
- a1 = new_spec "a", "1", "b" => "> 0"
81
- b1 = new_spec "b", "1", "c" => ">= 1"
82
- b2 = new_spec "b", "2", "c" => ">= 2"
83
- c1 = new_spec "c", "1"
84
- c2 = new_spec "c", "2"
82
+ a1 = util_spec "a", "1", "b" => "> 0"
83
+ b1 = util_spec "b", "1", "c" => ">= 1"
84
+ b2 = util_spec "b", "2", "c" => ">= 2"
85
+ c1 = util_spec "c", "1"
86
+ c2 = util_spec "c", "2"
85
87
 
86
88
  install_specs c1, c2, b1, b2, a1
87
89
 
@@ -130,6 +132,83 @@ class TestGem < Gem::TestCase
130
132
  assert_equal %w[a-1], installed.map { |spec| spec.full_name }
131
133
  end
132
134
 
135
+ def test_self_install_permissions
136
+ assert_self_install_permissions
137
+ end
138
+
139
+ def test_self_install_permissions_umask_0
140
+ umask = File.umask(0)
141
+ assert_self_install_permissions
142
+ ensure
143
+ File.umask(umask)
144
+ end
145
+
146
+ def test_self_install_permissions_umask_077
147
+ umask = File.umask(077)
148
+ assert_self_install_permissions
149
+ ensure
150
+ File.umask(umask)
151
+ end
152
+
153
+ def test_self_install_permissions_with_format_executable
154
+ @format_executable = true
155
+ assert_self_install_permissions
156
+ end
157
+
158
+ def assert_self_install_permissions
159
+ mask = win_platform? ? 0700 : 0777
160
+ options = {
161
+ :dir_mode => 0500,
162
+ :prog_mode => 0510,
163
+ :data_mode => 0640,
164
+ :wrappers => true,
165
+ :format_executable => !!(@format_executable if defined?(@format_executable))
166
+ }
167
+ Dir.chdir @tempdir do
168
+ Dir.mkdir 'bin'
169
+ Dir.mkdir 'data'
170
+
171
+ File.write 'bin/foo.cmd', "p\n"
172
+ File.chmod 0755, 'bin/foo.cmd'
173
+
174
+ File.write 'data/foo.txt', "blah\n"
175
+
176
+ spec_fetcher do |f|
177
+ f.gem 'foo', 1 do |s|
178
+ s.executables = ['foo.cmd']
179
+ s.files = %w[bin/foo.cmd data/foo.txt]
180
+ end
181
+ end
182
+ Gem.install 'foo', Gem::Requirement.default, options
183
+ end
184
+
185
+ prog_mode = (options[:prog_mode] & mask).to_s(8)
186
+ dir_mode = (options[:dir_mode] & mask).to_s(8)
187
+ data_mode = (options[:data_mode] & mask).to_s(8)
188
+ prog_name = 'foo.cmd'
189
+ prog_name = RUBY_INSTALL_NAME.sub('ruby', 'foo.cmd') if options[:format_executable]
190
+ expected = {
191
+ "bin/#{prog_name}" => prog_mode,
192
+ 'gems/foo-1' => dir_mode,
193
+ 'gems/foo-1/bin' => dir_mode,
194
+ 'gems/foo-1/data' => dir_mode,
195
+ 'gems/foo-1/bin/foo.cmd' => prog_mode,
196
+ 'gems/foo-1/data/foo.txt' => data_mode,
197
+ }
198
+ # below is for intermittent errors on Appveyor & Travis 2019-01,
199
+ # see https://github.com/rubygems/rubygems/pull/2568
200
+ sleep 0.2
201
+ result = {}
202
+ Dir.chdir @gemhome do
203
+ expected.each_key do |n|
204
+ result[n] = (File.stat(n).mode & mask).to_s(8)
205
+ end
206
+ end
207
+ assert_equal(expected, result)
208
+ ensure
209
+ File.chmod(0755, *Dir.glob(@gemhome+'/gems/**/').map {|path| path.untaint})
210
+ end
211
+
133
212
  def test_require_missing
134
213
  save_loaded_features do
135
214
  assert_raises ::LoadError do
@@ -140,7 +219,7 @@ class TestGem < Gem::TestCase
140
219
 
141
220
  def test_require_does_not_glob
142
221
  save_loaded_features do
143
- a1 = new_spec "a", "1", nil, "lib/a1.rb"
222
+ a1 = util_spec "a", "1", nil, "lib/a1.rb"
144
223
 
145
224
  install_specs a1
146
225
 
@@ -244,6 +323,40 @@ class TestGem < Gem::TestCase
244
323
  refute_includes e.message, "can't find gem bundler (>= 0.a) with executable bundle"
245
324
  end
246
325
 
326
+ def test_activate_bin_path_respects_underscore_selection_if_given
327
+ bundler_latest = util_spec 'bundler', '2.0.1' do |s|
328
+ s.executables = ['bundle']
329
+ end
330
+
331
+ bundler_previous = util_spec 'bundler', '1.17.3' do |s|
332
+ s.executables = ['bundle']
333
+ end
334
+
335
+ install_specs bundler_latest, bundler_previous
336
+
337
+ File.open("Gemfile.lock", "w") do |f|
338
+ f.write <<-L.gsub(/ {8}/, "")
339
+ GEM
340
+ remote: https://rubygems.org/
341
+ specs:
342
+
343
+ PLATFORMS
344
+ ruby
345
+
346
+ DEPENDENCIES
347
+
348
+ BUNDLED WITH
349
+ 2.0.1
350
+ L
351
+ end
352
+
353
+ File.open("Gemfile", "w") { |f| f.puts('source "https://rubygems.org"') }
354
+
355
+ load Gem.activate_bin_path("bundler", "bundle", "= 1.17.3")
356
+
357
+ assert_equal %w(bundler-1.17.3), loaded_spec_names
358
+ end
359
+
247
360
  def test_self_bin_path_no_exec_name
248
361
  e = assert_raises ArgumentError do
249
362
  Gem.bin_path 'a'
@@ -423,7 +536,6 @@ class TestGem < Gem::TestCase
423
536
  end
424
537
 
425
538
  def test_self_use_gemdeps
426
- skip 'Insecure operation - chdir' if RUBY_VERSION <= "1.8.7"
427
539
  rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], '-'
428
540
 
429
541
  FileUtils.mkdir_p 'detect/a/b'
@@ -466,7 +578,7 @@ class TestGem < Gem::TestCase
466
578
 
467
579
  Gem.ensure_gem_subdirectories @gemhome, 0750
468
580
 
469
- assert File.directory? File.join(@gemhome, "cache")
581
+ assert_directory_exists File.join(@gemhome, "cache")
470
582
 
471
583
  assert_equal 0750, File::Stat.new(@gemhome).mode & 0777
472
584
  assert_equal 0750, File::Stat.new(File.join(@gemhome, "cache")).mode & 0777
@@ -495,10 +607,10 @@ class TestGem < Gem::TestCase
495
607
 
496
608
  Gem.ensure_gem_subdirectories gemdir
497
609
 
498
- assert File.directory?(util_cache_dir)
610
+ assert_directory_exists util_cache_dir
499
611
  end
500
612
 
501
- unless win_platform? || Process.uid.zero? then # only for FS that support write protection
613
+ unless win_platform? || Process.uid.zero? # only for FS that support write protection
502
614
  def test_self_ensure_gem_directories_write_protected
503
615
  gemdir = File.join @tempdir, "egd"
504
616
  FileUtils.rm_r gemdir rescue nil
@@ -577,9 +689,6 @@ class TestGem < Gem::TestCase
577
689
  end
578
690
 
579
691
  def test_self_find_files_with_gemfile
580
- # write_file(File.join Dir.pwd, 'Gemfile') fails on travis 1.8.7 with $SAFE=1
581
- skip if RUBY_VERSION <= "1.8.7"
582
-
583
692
  cwd = File.expand_path("test/rubygems", @@project_dir)
584
693
  actual_load_path = $LOAD_PATH.unshift(cwd).dup
585
694
 
@@ -612,7 +721,7 @@ class TestGem < Gem::TestCase
612
721
  assert_equal expected, Gem.find_files('sff/discover').sort
613
722
  assert_equal expected, Gem.find_files('sff/**.rb').sort, '[ruby-core:31730]'
614
723
  ensure
615
- assert_equal cwd, actual_load_path.shift unless RUBY_VERSION <= "1.8.7"
724
+ assert_equal cwd, actual_load_path.shift
616
725
  end
617
726
 
618
727
  def test_self_find_latest_files
@@ -828,7 +937,6 @@ class TestGem < Gem::TestCase
828
937
  end
829
938
 
830
939
  def test_self_refresh
831
- skip 'Insecure operation - mkdir' if RUBY_VERSION <= "1.8.7"
832
940
  util_make_gems
833
941
 
834
942
  a1_spec = @a1.spec_file
@@ -848,7 +956,6 @@ class TestGem < Gem::TestCase
848
956
  end
849
957
 
850
958
  def test_self_refresh_keeps_loaded_specs_activated
851
- skip 'Insecure operation - mkdir' if RUBY_VERSION <= "1.8.7"
852
959
  util_make_gems
853
960
 
854
961
  a1_spec = @a1.spec_file
@@ -930,7 +1037,7 @@ class TestGem < Gem::TestCase
930
1037
  assert_equal Gem::Requirement.default, Gem.env_requirement('qux')
931
1038
  end
932
1039
 
933
- def test_self_ruby_version_1_8_5
1040
+ def test_self_ruby_version_with_patchlevel_less_ancient_rubies
934
1041
  util_set_RUBY_VERSION '1.8.5'
935
1042
 
936
1043
  assert_equal Gem::Version.new('1.8.5'), Gem.ruby_version
@@ -938,7 +1045,7 @@ class TestGem < Gem::TestCase
938
1045
  util_restore_RUBY_VERSION
939
1046
  end
940
1047
 
941
- def test_self_ruby_version_1_8_6p287
1048
+ def test_self_ruby_version_with_release
942
1049
  util_set_RUBY_VERSION '1.8.6', 287
943
1050
 
944
1051
  assert_equal Gem::Version.new('1.8.6.287'), Gem.ruby_version
@@ -946,10 +1053,34 @@ class TestGem < Gem::TestCase
946
1053
  util_restore_RUBY_VERSION
947
1054
  end
948
1055
 
949
- def test_self_ruby_version_1_9_2dev_r23493
950
- util_set_RUBY_VERSION '1.9.2', -1, 23493
1056
+ def test_self_ruby_version_with_non_mri_implementations
1057
+ util_set_RUBY_VERSION '2.5.0', 0, 60928, 'jruby 9.2.0.0 (2.5.0) 2018-05-24 81156a8 OpenJDK 64-Bit Server VM 25.171-b11 on 1.8.0_171-8u171-b11-0ubuntu0.16.04.1-b11 [linux-x86_64]'
951
1058
 
952
- assert_equal Gem::Version.new('1.9.2.dev.23493'), Gem.ruby_version
1059
+ assert_equal Gem::Version.new('2.5.0'), Gem.ruby_version
1060
+ ensure
1061
+ util_restore_RUBY_VERSION
1062
+ end
1063
+
1064
+ def test_self_ruby_version_with_prerelease
1065
+ util_set_RUBY_VERSION '2.6.0', -1, 63539, 'ruby 2.6.0preview2 (2018-05-31 trunk 63539) [x86_64-linux]'
1066
+
1067
+ assert_equal Gem::Version.new('2.6.0.preview2'), Gem.ruby_version
1068
+ ensure
1069
+ util_restore_RUBY_VERSION
1070
+ end
1071
+
1072
+ def test_self_ruby_version_with_non_mri_implementations_with_mri_prerelase_compatibility
1073
+ util_set_RUBY_VERSION '2.6.0', -1, 63539, 'weirdjruby 9.2.0.0 (2.6.0preview2) 2018-05-24 81156a8 OpenJDK 64-Bit Server VM 25.171-b11 on 1.8.0_171-8u171-b11-0ubuntu0.16.04.1-b11 [linux-x86_64]', 'weirdjruby', '9.2.0.0'
1074
+
1075
+ assert_equal Gem::Version.new('2.6.0.preview2'), Gem.ruby_version
1076
+ ensure
1077
+ util_restore_RUBY_VERSION
1078
+ end
1079
+
1080
+ def test_self_ruby_version_with_trunk
1081
+ util_set_RUBY_VERSION '1.9.2', -1, 23493, 'ruby 1.9.2dev (2009-05-20 trunk 23493) [x86_64-linux]'
1082
+
1083
+ assert_equal Gem::Version.new('1.9.2.dev'), Gem.ruby_version
953
1084
  ensure
954
1085
  util_restore_RUBY_VERSION
955
1086
  end
@@ -1197,7 +1328,7 @@ class TestGem < Gem::TestCase
1197
1328
  end
1198
1329
 
1199
1330
  def test_self_user_home
1200
- if ENV['HOME'] then
1331
+ if ENV['HOME']
1201
1332
  assert_equal ENV['HOME'], Gem.user_home
1202
1333
  else
1203
1334
  assert true, 'count this test'
@@ -1223,13 +1354,12 @@ class TestGem < Gem::TestCase
1223
1354
  end
1224
1355
 
1225
1356
  def test_self_needs_picks_up_unresolved_deps
1226
- skip 'loading from unsafe file' if RUBY_VERSION <= "1.8.7"
1227
1357
  save_loaded_features do
1228
1358
  util_clear_gems
1229
1359
  a = util_spec "a", "1"
1230
1360
  b = util_spec "b", "1", "c" => nil
1231
1361
  c = util_spec "c", "2"
1232
- d = new_spec "d", "1", {'e' => '= 1'}, "lib/d.rb"
1362
+ d = util_spec "d", "1", {'e' => '= 1'}, "lib/d.rb"
1233
1363
  e = util_spec "e", "1"
1234
1364
 
1235
1365
  install_specs a, c, b, e, d
@@ -1252,9 +1382,6 @@ class TestGem < Gem::TestCase
1252
1382
  output = Gem::Util.gunzip input
1253
1383
 
1254
1384
  assert_equal 'hello', output
1255
-
1256
- return unless Object.const_defined? :Encoding
1257
-
1258
1385
  assert_equal Encoding::BINARY, output.encoding
1259
1386
  end
1260
1387
 
@@ -1266,55 +1393,9 @@ class TestGem < Gem::TestCase
1266
1393
  zipped = StringIO.new output
1267
1394
 
1268
1395
  assert_equal 'hello', Zlib::GzipReader.new(zipped).read
1269
-
1270
- return unless Object.const_defined? :Encoding
1271
-
1272
1396
  assert_equal Encoding::BINARY, output.encoding
1273
1397
  end
1274
1398
 
1275
- if Gem.win_platform? && '1.9' > RUBY_VERSION
1276
- # Ruby 1.9 properly handles ~ path expansion, so no need to run such tests.
1277
- def test_self_user_home_userprofile
1278
-
1279
- Gem.clear_paths
1280
-
1281
- # safe-keep env variables
1282
- orig_home, orig_user_profile = ENV['HOME'], ENV['USERPROFILE']
1283
-
1284
- # prepare for the test
1285
- ENV.delete('HOME')
1286
- ENV['USERPROFILE'] = "W:\\Users\\RubyUser"
1287
-
1288
- assert_equal 'W:/Users/RubyUser', Gem.user_home
1289
-
1290
- ensure
1291
- ENV['HOME'] = orig_home
1292
- ENV['USERPROFILE'] = orig_user_profile
1293
- end
1294
-
1295
- def test_self_user_home_user_drive_and_path
1296
- Gem.clear_paths
1297
-
1298
- # safe-keep env variables
1299
- orig_home, orig_user_profile = ENV['HOME'], ENV['USERPROFILE']
1300
- orig_home_drive, orig_home_path = ENV['HOMEDRIVE'], ENV['HOMEPATH']
1301
-
1302
- # prepare the environment
1303
- ENV.delete('HOME')
1304
- ENV.delete('USERPROFILE')
1305
- ENV['HOMEDRIVE'] = 'Z:'
1306
- ENV['HOMEPATH'] = "\\Users\\RubyUser"
1307
-
1308
- assert_equal 'Z:/Users/RubyUser', Gem.user_home
1309
-
1310
- ensure
1311
- ENV['HOME'] = orig_home
1312
- ENV['USERPROFILE'] = orig_user_profile
1313
- ENV['HOMEDRIVE'] = orig_home_drive
1314
- ENV['HOMEPATH'] = orig_home_path
1315
- end
1316
- end
1317
-
1318
1399
  def test_self_vendor_dir
1319
1400
  expected =
1320
1401
  File.join RbConfig::CONFIG['vendordir'], 'gems',
@@ -1340,7 +1421,6 @@ class TestGem < Gem::TestCase
1340
1421
  end
1341
1422
 
1342
1423
  def test_load_plugins
1343
- skip 'Insecure operation - chdir' if RUBY_VERSION <= "1.8.7"
1344
1424
  plugin_path = File.join "lib", "rubygems_plugin.rb"
1345
1425
 
1346
1426
  Dir.chdir @tempdir do
@@ -1395,8 +1475,8 @@ class TestGem < Gem::TestCase
1395
1475
  write_file File.join(@tempdir, 'lib', "g.rb") { |fp| fp.puts "" }
1396
1476
  write_file File.join(@tempdir, 'lib', 'm.rb') { |fp| fp.puts "" }
1397
1477
 
1398
- g = new_spec 'g', '1', nil, "lib/g.rb"
1399
- m = new_spec 'm', '1', nil, "lib/m.rb"
1478
+ g = util_spec 'g', '1', nil, "lib/g.rb"
1479
+ m = util_spec 'm', '1', nil, "lib/m.rb"
1400
1480
 
1401
1481
  install_gem g, :install_dir => Gem.dir
1402
1482
  m0 = install_gem m, :install_dir => Gem.dir
@@ -1451,8 +1531,8 @@ class TestGem < Gem::TestCase
1451
1531
  write_file File.join(@tempdir, 'lib', "g.rb") { |fp| fp.puts "" }
1452
1532
  write_file File.join(@tempdir, 'lib', 'm.rb') { |fp| fp.puts "" }
1453
1533
 
1454
- g = new_spec 'g', '1', nil, "lib/g.rb"
1455
- m = new_spec 'm', '1', nil, "lib/m.rb"
1534
+ g = util_spec 'g', '1', nil, "lib/g.rb"
1535
+ m = util_spec 'm', '1', nil, "lib/m.rb"
1456
1536
 
1457
1537
  install_gem g, :install_dir => Gem.dir
1458
1538
  install_gem m, :install_dir => Gem.dir
@@ -1469,9 +1549,9 @@ class TestGem < Gem::TestCase
1469
1549
  def test_auto_activation_of_specific_gemdeps_file
1470
1550
  util_clear_gems
1471
1551
 
1472
- a = new_spec "a", "1", nil, "lib/a.rb"
1473
- b = new_spec "b", "1", nil, "lib/b.rb"
1474
- c = new_spec "c", "1", nil, "lib/c.rb"
1552
+ a = util_spec "a", "1", nil, "lib/a.rb"
1553
+ b = util_spec "b", "1", nil, "lib/b.rb"
1554
+ c = util_spec "c", "1", nil, "lib/c.rb"
1475
1555
 
1476
1556
  install_specs a, b, c
1477
1557
 
@@ -1491,12 +1571,11 @@ class TestGem < Gem::TestCase
1491
1571
  end
1492
1572
 
1493
1573
  def test_auto_activation_of_used_gemdeps_file
1494
- skip 'Insecure operation - chdir' if RUBY_VERSION <= "1.8.7"
1495
1574
  util_clear_gems
1496
1575
 
1497
- a = new_spec "a", "1", nil, "lib/a.rb"
1498
- b = new_spec "b", "1", nil, "lib/b.rb"
1499
- c = new_spec "c", "1", nil, "lib/c.rb"
1576
+ a = util_spec "a", "1", nil, "lib/a.rb"
1577
+ b = util_spec "b", "1", nil, "lib/b.rb"
1578
+ c = util_spec "c", "1", nil, "lib/c.rb"
1500
1579
 
1501
1580
  install_specs a, b, c
1502
1581
 
@@ -1518,7 +1597,7 @@ class TestGem < Gem::TestCase
1518
1597
 
1519
1598
  if Gem::USE_BUNDLER_FOR_GEMDEPS
1520
1599
  BUNDLER_LIB_PATH = File.expand_path $LOAD_PATH.find {|lp| File.file?(File.join(lp, "bundler.rb")) }.dup.untaint
1521
- BUNDLER_FULL_NAME = "bundler-#{Bundler::VERSION}"
1600
+ BUNDLER_FULL_NAME = "bundler-#{Bundler::VERSION}".freeze
1522
1601
  end
1523
1602
 
1524
1603
  def add_bundler_full_name(names)
@@ -1531,9 +1610,9 @@ class TestGem < Gem::TestCase
1531
1610
  def test_looks_for_gemdeps_files_automatically_on_start
1532
1611
  util_clear_gems
1533
1612
 
1534
- a = new_spec "a", "1", nil, "lib/a.rb"
1535
- b = new_spec "b", "1", nil, "lib/b.rb"
1536
- c = new_spec "c", "1", nil, "lib/c.rb"
1613
+ a = util_spec "a", "1", nil, "lib/a.rb"
1614
+ b = util_spec "b", "1", nil, "lib/b.rb"
1615
+ c = util_spec "c", "1", nil, "lib/c.rb"
1537
1616
 
1538
1617
  install_specs a, b, c
1539
1618
 
@@ -1548,12 +1627,7 @@ class TestGem < Gem::TestCase
1548
1627
  path = File.join @tempdir, "gem.deps.rb"
1549
1628
  cmd = [Gem.ruby.dup.untaint, "-I#{LIB_PATH.untaint}",
1550
1629
  "-I#{BUNDLER_LIB_PATH.untaint}", "-rrubygems"]
1551
- if RUBY_VERSION < '1.9'
1552
- cmd << "-e 'puts Gem.loaded_specs.values.map(&:full_name).sort'"
1553
- cmd = cmd.join(' ')
1554
- else
1555
- cmd << "-eputs Gem.loaded_specs.values.map(&:full_name).sort"
1556
- end
1630
+ cmd << "-eputs Gem.loaded_specs.values.map(&:full_name).sort"
1557
1631
 
1558
1632
  File.open path, "w" do |f|
1559
1633
  f.puts "gem 'a'"
@@ -1572,9 +1646,9 @@ class TestGem < Gem::TestCase
1572
1646
  def test_looks_for_gemdeps_files_automatically_on_start_in_parent_dir
1573
1647
  util_clear_gems
1574
1648
 
1575
- a = new_spec "a", "1", nil, "lib/a.rb"
1576
- b = new_spec "b", "1", nil, "lib/b.rb"
1577
- c = new_spec "c", "1", nil, "lib/c.rb"
1649
+ a = util_spec "a", "1", nil, "lib/a.rb"
1650
+ b = util_spec "b", "1", nil, "lib/b.rb"
1651
+ c = util_spec "c", "1", nil, "lib/c.rb"
1578
1652
 
1579
1653
  install_specs a, b, c
1580
1654
 
@@ -1591,12 +1665,7 @@ class TestGem < Gem::TestCase
1591
1665
  path = File.join @tempdir, "gem.deps.rb"
1592
1666
  cmd = [Gem.ruby.dup.untaint, "-Csub1", "-I#{LIB_PATH.untaint}",
1593
1667
  "-I#{BUNDLER_LIB_PATH.untaint}", "-rrubygems"]
1594
- if RUBY_VERSION < '1.9'
1595
- cmd << "-e 'puts Gem.loaded_specs.values.map(&:full_name).sort'"
1596
- cmd = cmd.join(' ')
1597
- else
1598
- cmd << "-eputs Gem.loaded_specs.values.map(&:full_name).sort"
1599
- end
1668
+ cmd << "-eputs Gem.loaded_specs.values.map(&:full_name).sort"
1600
1669
 
1601
1670
  File.open path, "w" do |f|
1602
1671
  f.puts "gem 'a'"
@@ -1644,7 +1713,7 @@ class TestGem < Gem::TestCase
1644
1713
 
1645
1714
  def test_default_gems_use_full_paths
1646
1715
  begin
1647
- if defined?(RUBY_ENGINE) then
1716
+ if defined?(RUBY_ENGINE)
1648
1717
  engine = RUBY_ENGINE
1649
1718
  Object.send :remove_const, :RUBY_ENGINE
1650
1719
  end
@@ -1657,7 +1726,7 @@ class TestGem < Gem::TestCase
1657
1726
  end
1658
1727
 
1659
1728
  begin
1660
- if defined?(RUBY_ENGINE) then
1729
+ if defined?(RUBY_ENGINE)
1661
1730
  engine = RUBY_ENGINE
1662
1731
  Object.send :remove_const, :RUBY_ENGINE
1663
1732
  end
@@ -1731,7 +1800,6 @@ class TestGem < Gem::TestCase
1731
1800
  end
1732
1801
 
1733
1802
  def test_use_gemdeps_automatic
1734
- skip 'Insecure operation - chdir' if RUBY_VERSION <= "1.8.7"
1735
1803
  rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], '-'
1736
1804
 
1737
1805
  spec = util_spec 'a', 1
@@ -1752,7 +1820,6 @@ class TestGem < Gem::TestCase
1752
1820
  end
1753
1821
 
1754
1822
  def test_use_gemdeps_automatic_missing
1755
- skip 'Insecure operation - chdir' if RUBY_VERSION <= "1.8.7"
1756
1823
  rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], '-'
1757
1824
 
1758
1825
  Gem.use_gemdeps
@@ -1781,7 +1848,6 @@ class TestGem < Gem::TestCase
1781
1848
  end
1782
1849
 
1783
1850
  def test_use_gemdeps_missing_gem
1784
- skip 'Insecure operation - read' if RUBY_VERSION <= "1.8.7"
1785
1851
  rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], 'x'
1786
1852
 
1787
1853
  File.open 'x', 'w' do |io|
@@ -1794,19 +1860,20 @@ class TestGem < Gem::TestCase
1794
1860
  else
1795
1861
  platform = " #{platform}"
1796
1862
  end
1797
- expected = if Gem::USE_BUNDLER_FOR_GEMDEPS
1798
- <<-EXPECTED
1863
+ expected =
1864
+ if Gem::USE_BUNDLER_FOR_GEMDEPS
1865
+ <<-EXPECTED
1799
1866
  Could not find gem 'a#{platform}' in any of the gem sources listed in your Gemfile.
1800
1867
  You may need to `gem install -g` to install missing gems
1801
1868
 
1802
- EXPECTED
1803
- else
1804
- <<-EXPECTED
1869
+ EXPECTED
1870
+ else
1871
+ <<-EXPECTED
1805
1872
  Unable to resolve dependency: user requested 'a (>= 0)'
1806
1873
  You may need to `gem install -g` to install missing gems
1807
1874
 
1808
- EXPECTED
1809
- end
1875
+ EXPECTED
1876
+ end
1810
1877
 
1811
1878
  assert_output nil, expected do
1812
1879
  Gem.use_gemdeps
@@ -1816,7 +1883,6 @@ You may need to `gem install -g` to install missing gems
1816
1883
  end if Gem::USE_BUNDLER_FOR_GEMDEPS
1817
1884
 
1818
1885
  def test_use_gemdeps_specific
1819
- skip 'Insecure operation - read' if RUBY_VERSION <= "1.8.7"
1820
1886
  rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], 'x'
1821
1887
 
1822
1888
  spec = util_spec 'a', 1
@@ -1836,6 +1902,13 @@ You may need to `gem install -g` to install missing gems
1836
1902
  ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
1837
1903
  end
1838
1904
 
1905
+ def test_operating_system_defaults
1906
+ operating_system_defaults = Gem.operating_system_defaults
1907
+
1908
+ assert operating_system_defaults != nil
1909
+ assert operating_system_defaults.is_a? Hash
1910
+ end
1911
+
1839
1912
  def test_platform_defaults
1840
1913
  platform_defaults = Gem.platform_defaults
1841
1914
 
@@ -1843,13 +1916,13 @@ You may need to `gem install -g` to install missing gems
1843
1916
  assert platform_defaults.is_a? Hash
1844
1917
  end
1845
1918
 
1846
- def ruby_install_name name
1919
+ def ruby_install_name(name)
1847
1920
  orig_RUBY_INSTALL_NAME = RbConfig::CONFIG['ruby_install_name']
1848
1921
  RbConfig::CONFIG['ruby_install_name'] = name
1849
1922
 
1850
1923
  yield
1851
1924
  ensure
1852
- if orig_RUBY_INSTALL_NAME then
1925
+ if orig_RUBY_INSTALL_NAME
1853
1926
  RbConfig::CONFIG['ruby_install_name'] = orig_RUBY_INSTALL_NAME
1854
1927
  else
1855
1928
  RbConfig::CONFIG.delete 'ruby_install_name'
@@ -3,6 +3,8 @@ require 'rubygems/test_case'
3
3
 
4
4
  class TestGemBundlerVersionFinder < Gem::TestCase
5
5
  def setup
6
+ super
7
+
6
8
  @argv = ARGV.dup
7
9
  @env = ENV.to_hash.clone
8
10
  ENV.delete("BUNDLER_VERSION")
@@ -13,6 +15,8 @@ class TestGemBundlerVersionFinder < Gem::TestCase
13
15
  ARGV.replace @argv
14
16
  ENV.replace @env
15
17
  $0 = @dollar_0
18
+
19
+ super
16
20
  end
17
21
 
18
22
  def bvf
@@ -251,4 +251,3 @@ ERROR: Possible alternatives: non_existent_with_hint
251
251
  end
252
252
 
253
253
  end
254
-