rubygems-update 2.7.11 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rubygems-update might be problematic. Click here for more details.

Files changed (350) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +66 -0
  3. data/.travis.yml +22 -18
  4. data/CONTRIBUTING.md +141 -0
  5. data/History.txt +289 -19
  6. data/MAINTAINERS.txt +1 -0
  7. data/Manifest.txt +16 -11
  8. data/POLICIES.md +92 -0
  9. data/README.md +47 -26
  10. data/Rakefile +47 -207
  11. data/{UPGRADING.rdoc → UPGRADING.md} +31 -32
  12. data/appveyor.yml +20 -45
  13. data/bin/gem +1 -2
  14. data/bin/update_rubygems +2 -3
  15. data/bundler/CHANGELOG.md +54 -0
  16. data/bundler/bundler.gemspec +7 -1
  17. data/bundler/lib/bundler.rb +26 -8
  18. data/bundler/lib/bundler/build_metadata.rb +2 -2
  19. data/bundler/lib/bundler/cli.rb +63 -21
  20. data/bundler/lib/bundler/cli/add.rb +15 -5
  21. data/bundler/lib/bundler/cli/binstubs.rb +8 -2
  22. data/bundler/lib/bundler/cli/doctor.rb +47 -1
  23. data/bundler/lib/bundler/cli/install.rb +8 -5
  24. data/bundler/lib/bundler/cli/list.rb +41 -5
  25. data/bundler/lib/bundler/cli/outdated.rb +7 -1
  26. data/bundler/lib/bundler/cli/pristine.rb +4 -0
  27. data/bundler/lib/bundler/cli/remove.rb +18 -0
  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.rb +29 -6
  35. data/bundler/lib/bundler/installer/parallel_installer.rb +5 -0
  36. data/bundler/lib/bundler/plugin.rb +10 -3
  37. data/bundler/lib/bundler/plugin/events.rb +61 -0
  38. data/bundler/lib/bundler/resolver.rb +2 -2
  39. data/bundler/lib/bundler/runtime.rb +8 -2
  40. data/bundler/lib/bundler/settings.rb +24 -3
  41. data/bundler/lib/bundler/settings/validator.rb +23 -0
  42. data/bundler/lib/bundler/shared_helpers.rb +19 -3
  43. data/bundler/lib/bundler/source.rb +9 -9
  44. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +1 -0
  45. data/bundler/lib/bundler/version.rb +1 -1
  46. data/bundler/man/bundle-add.ronn +13 -2
  47. data/bundler/man/bundle-config.ronn +21 -0
  48. data/bundler/man/bundle-install.ronn +1 -1
  49. data/bundler/man/bundle-list.ronn +19 -1
  50. data/bundler/man/bundle-outdated.ronn +4 -0
  51. data/bundler/man/bundle-remove.ronn +23 -0
  52. data/bundler/man/bundle-update.ronn +1 -1
  53. data/lib/rubygems.rb +70 -96
  54. data/lib/rubygems/available_set.rb +1 -1
  55. data/lib/rubygems/basic_specification.rb +12 -12
  56. data/lib/rubygems/bundler_version_finder.rb +3 -3
  57. data/lib/rubygems/command.rb +22 -15
  58. data/lib/rubygems/command_manager.rb +20 -11
  59. data/lib/rubygems/commands/build_command.rb +27 -8
  60. data/lib/rubygems/commands/cert_command.rb +45 -24
  61. data/lib/rubygems/commands/check_command.rb +1 -1
  62. data/lib/rubygems/commands/cleanup_command.rb +14 -7
  63. data/lib/rubygems/commands/contents_command.rb +14 -15
  64. data/lib/rubygems/commands/dependency_command.rb +17 -17
  65. data/lib/rubygems/commands/environment_command.rb +20 -1
  66. data/lib/rubygems/commands/fetch_command.rb +2 -3
  67. data/lib/rubygems/commands/generate_index_command.rb +2 -3
  68. data/lib/rubygems/commands/help_command.rb +12 -13
  69. data/lib/rubygems/commands/info_command.rb +33 -0
  70. data/lib/rubygems/commands/install_command.rb +21 -17
  71. data/lib/rubygems/commands/list_command.rb +0 -1
  72. data/lib/rubygems/commands/lock_command.rb +3 -4
  73. data/lib/rubygems/commands/open_command.rb +16 -10
  74. data/lib/rubygems/commands/owner_command.rb +20 -11
  75. data/lib/rubygems/commands/pristine_command.rb +23 -16
  76. data/lib/rubygems/commands/push_command.rb +17 -8
  77. data/lib/rubygems/commands/query_command.rb +24 -24
  78. data/lib/rubygems/commands/rdoc_command.rb +3 -4
  79. data/lib/rubygems/commands/search_command.rb +0 -1
  80. data/lib/rubygems/commands/server_command.rb +1 -2
  81. data/lib/rubygems/commands/setup_command.rb +78 -38
  82. data/lib/rubygems/commands/signin_command.rb +2 -1
  83. data/lib/rubygems/commands/signout_command.rb +2 -2
  84. data/lib/rubygems/commands/sources_command.rb +11 -12
  85. data/lib/rubygems/commands/specification_command.rb +7 -7
  86. data/lib/rubygems/commands/uninstall_command.rb +41 -19
  87. data/lib/rubygems/commands/unpack_command.rb +16 -7
  88. data/lib/rubygems/commands/update_command.rb +28 -23
  89. data/lib/rubygems/commands/which_command.rb +4 -5
  90. data/lib/rubygems/commands/yank_command.rb +1 -2
  91. data/lib/rubygems/compatibility.rb +1 -21
  92. data/lib/rubygems/config_file.rb +36 -36
  93. data/lib/rubygems/core_ext/kernel_require.rb +6 -6
  94. data/lib/rubygems/core_ext/kernel_warn.rb +45 -0
  95. data/lib/rubygems/defaults.rb +31 -12
  96. data/lib/rubygems/dependency.rb +14 -14
  97. data/lib/rubygems/dependency_installer.rb +29 -31
  98. data/lib/rubygems/dependency_list.rb +8 -9
  99. data/lib/rubygems/deprecate.rb +2 -3
  100. data/lib/rubygems/doctor.rb +5 -6
  101. data/lib/rubygems/errors.rb +3 -3
  102. data/lib/rubygems/exceptions.rb +11 -4
  103. data/lib/rubygems/ext.rb +0 -1
  104. data/lib/rubygems/ext/build_error.rb +0 -1
  105. data/lib/rubygems/ext/builder.rb +50 -23
  106. data/lib/rubygems/ext/cmake_builder.rb +2 -2
  107. data/lib/rubygems/ext/configure_builder.rb +2 -3
  108. data/lib/rubygems/ext/ext_conf_builder.rb +8 -7
  109. data/lib/rubygems/ext/rake_builder.rb +16 -18
  110. data/lib/rubygems/gem_runner.rb +2 -2
  111. data/lib/rubygems/gemcutter_utilities.rb +40 -13
  112. data/lib/rubygems/indexer.rb +19 -12
  113. data/lib/rubygems/install_default_message.rb +0 -1
  114. data/lib/rubygems/install_message.rb +0 -1
  115. data/lib/rubygems/install_update_options.rb +2 -28
  116. data/lib/rubygems/installer.rb +95 -75
  117. data/lib/rubygems/installer_test_case.rb +0 -14
  118. data/lib/rubygems/local_remote_options.rb +5 -4
  119. data/lib/rubygems/mock_gem_ui.rb +3 -4
  120. data/lib/rubygems/name_tuple.rb +4 -4
  121. data/lib/rubygems/package.rb +90 -73
  122. data/lib/rubygems/package/digest_io.rb +3 -4
  123. data/lib/rubygems/package/file_source.rb +3 -4
  124. data/lib/rubygems/package/io_source.rb +1 -2
  125. data/lib/rubygems/package/old.rb +8 -16
  126. data/lib/rubygems/package/source.rb +0 -1
  127. data/lib/rubygems/package/tar_header.rb +2 -2
  128. data/lib/rubygems/package/tar_reader.rb +2 -4
  129. data/lib/rubygems/package/tar_reader/entry.rb +20 -4
  130. data/lib/rubygems/package/tar_test_case.rb +2 -8
  131. data/lib/rubygems/package/tar_writer.rb +13 -15
  132. data/lib/rubygems/package_task.rb +0 -1
  133. data/lib/rubygems/path_support.rb +16 -6
  134. data/lib/rubygems/platform.rb +4 -5
  135. data/lib/rubygems/psych_tree.rb +1 -1
  136. data/lib/rubygems/rdoc.rb +0 -311
  137. data/lib/rubygems/remote_fetcher.rb +34 -48
  138. data/lib/rubygems/request.rb +16 -15
  139. data/lib/rubygems/request/connection_pools.rb +24 -13
  140. data/lib/rubygems/request/http_pool.rb +3 -4
  141. data/lib/rubygems/request/https_pool.rb +1 -3
  142. data/lib/rubygems/request_set.rb +52 -25
  143. data/lib/rubygems/request_set/gem_dependency_api.rb +36 -40
  144. data/lib/rubygems/request_set/lockfile.rb +12 -12
  145. data/lib/rubygems/request_set/lockfile/parser.rb +18 -29
  146. data/lib/rubygems/request_set/lockfile/tokenizer.rb +9 -9
  147. data/lib/rubygems/requirement.rb +16 -16
  148. data/lib/rubygems/resolver.rb +10 -15
  149. data/lib/rubygems/resolver/activation_request.rb +6 -6
  150. data/lib/rubygems/resolver/api_set.rb +5 -6
  151. data/lib/rubygems/resolver/api_specification.rb +2 -3
  152. data/lib/rubygems/resolver/best_set.rb +5 -6
  153. data/lib/rubygems/resolver/composed_set.rb +5 -6
  154. data/lib/rubygems/resolver/conflict.rb +5 -5
  155. data/lib/rubygems/resolver/current_set.rb +1 -2
  156. data/lib/rubygems/resolver/dependency_request.rb +4 -4
  157. data/lib/rubygems/resolver/git_set.rb +5 -6
  158. data/lib/rubygems/resolver/git_specification.rb +4 -5
  159. data/lib/rubygems/resolver/index_set.rb +5 -6
  160. data/lib/rubygems/resolver/index_specification.rb +3 -4
  161. data/lib/rubygems/resolver/installed_specification.rb +3 -4
  162. data/lib/rubygems/resolver/installer_set.rb +12 -12
  163. data/lib/rubygems/resolver/local_specification.rb +1 -2
  164. data/lib/rubygems/resolver/lock_set.rb +5 -6
  165. data/lib/rubygems/resolver/lock_specification.rb +7 -8
  166. data/lib/rubygems/resolver/requirement_list.rb +1 -1
  167. data/lib/rubygems/resolver/set.rb +2 -2
  168. data/lib/rubygems/resolver/source_set.rb +4 -5
  169. data/lib/rubygems/resolver/spec_specification.rb +1 -2
  170. data/lib/rubygems/resolver/specification.rb +10 -7
  171. data/lib/rubygems/resolver/stats.rb +1 -1
  172. data/lib/rubygems/resolver/vendor_set.rb +4 -5
  173. data/lib/rubygems/resolver/vendor_specification.rb +2 -3
  174. data/lib/rubygems/safe_yaml.rb +18 -10
  175. data/lib/rubygems/security.rb +21 -22
  176. data/lib/rubygems/security/policies.rb +1 -2
  177. data/lib/rubygems/security/policy.rb +25 -25
  178. data/lib/rubygems/security/signer.rb +72 -24
  179. data/lib/rubygems/security/trust_dir.rb +10 -10
  180. data/lib/rubygems/server.rb +21 -21
  181. data/lib/rubygems/source.rb +16 -25
  182. data/lib/rubygems/source/git.rb +9 -10
  183. data/lib/rubygems/source/installed.rb +3 -4
  184. data/lib/rubygems/source/local.rb +7 -7
  185. data/lib/rubygems/source/lock.rb +4 -4
  186. data/lib/rubygems/source/specific_file.rb +5 -5
  187. data/lib/rubygems/source/vendor.rb +2 -3
  188. data/lib/rubygems/source_list.rb +2 -2
  189. data/lib/rubygems/source_local.rb +0 -1
  190. data/lib/rubygems/spec_fetcher.rb +5 -6
  191. data/lib/rubygems/specification.rb +199 -536
  192. data/lib/rubygems/specification_policy.rb +407 -0
  193. data/lib/rubygems/ssl_certs/{rubygems.org → index.rubygems.org}/GlobalSignRootCA.pem +0 -0
  194. data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +23 -0
  195. data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +25 -0
  196. data/lib/rubygems/stub_specification.rb +11 -15
  197. data/lib/rubygems/test_case.rb +141 -66
  198. data/lib/rubygems/test_utilities.rb +20 -35
  199. data/lib/rubygems/text.rb +6 -6
  200. data/lib/rubygems/uninstaller.rb +37 -26
  201. data/lib/rubygems/uri_formatter.rb +1 -2
  202. data/lib/rubygems/user_interaction.rb +38 -93
  203. data/lib/rubygems/util.rb +20 -14
  204. data/lib/rubygems/util/licenses.rb +27 -1
  205. data/lib/rubygems/util/list.rb +1 -1
  206. data/lib/rubygems/validator.rb +4 -5
  207. data/lib/rubygems/version.rb +15 -15
  208. data/lib/rubygems/version_option.rb +2 -3
  209. data/rubygems-update.gemspec +43 -0
  210. data/setup.rb +2 -8
  211. data/test/rubygems/rubygems_plugin.rb +0 -1
  212. data/test/rubygems/simple_gem.rb +1 -1
  213. data/test/rubygems/test_bundled_ca.rb +4 -7
  214. data/test/rubygems/test_config.rb +7 -2
  215. data/test/rubygems/test_gem.rb +161 -130
  216. data/test/rubygems/test_gem_command.rb +0 -1
  217. data/test/rubygems/test_gem_command_manager.rb +8 -3
  218. data/test/rubygems/test_gem_commands_build_command.rb +219 -15
  219. data/test/rubygems/test_gem_commands_cert_command.rb +69 -8
  220. data/test/rubygems/test_gem_commands_check_command.rb +1 -1
  221. data/test/rubygems/test_gem_commands_cleanup_command.rb +27 -1
  222. data/test/rubygems/test_gem_commands_contents_command.rb +1 -2
  223. data/test/rubygems/test_gem_commands_dependency_command.rb +33 -34
  224. data/test/rubygems/test_gem_commands_environment_command.rb +1 -0
  225. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -1
  226. data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -1
  227. data/test/rubygems/test_gem_commands_help_command.rb +7 -4
  228. data/test/rubygems/test_gem_commands_info_command.rb +44 -0
  229. data/test/rubygems/test_gem_commands_install_command.rb +79 -12
  230. data/test/rubygems/test_gem_commands_lock_command.rb +0 -1
  231. data/test/rubygems/test_gem_commands_open_command.rb +29 -0
  232. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -1
  233. data/test/rubygems/test_gem_commands_owner_command.rb +93 -57
  234. data/test/rubygems/test_gem_commands_pristine_command.rb +65 -30
  235. data/test/rubygems/test_gem_commands_push_command.rb +39 -0
  236. data/test/rubygems/test_gem_commands_query_command.rb +102 -100
  237. data/test/rubygems/test_gem_commands_search_command.rb +0 -1
  238. data/test/rubygems/test_gem_commands_server_command.rb +0 -1
  239. data/test/rubygems/test_gem_commands_setup_command.rb +39 -8
  240. data/test/rubygems/test_gem_commands_signin_command.rb +1 -1
  241. data/test/rubygems/test_gem_commands_sources_command.rb +0 -1
  242. data/test/rubygems/test_gem_commands_specification_command.rb +2 -3
  243. data/test/rubygems/test_gem_commands_stale_command.rb +3 -2
  244. data/test/rubygems/test_gem_commands_uninstall_command.rb +81 -7
  245. data/test/rubygems/test_gem_commands_unpack_command.rb +17 -1
  246. data/test/rubygems/test_gem_commands_update_command.rb +19 -2
  247. data/test/rubygems/test_gem_commands_which_command.rb +0 -1
  248. data/test/rubygems/test_gem_commands_yank_command.rb +0 -1
  249. data/test/rubygems/test_gem_config_file.rb +4 -2
  250. data/test/rubygems/test_gem_dependency.rb +0 -1
  251. data/test/rubygems/test_gem_dependency_installer.rb +8 -5
  252. data/test/rubygems/test_gem_dependency_list.rb +6 -7
  253. data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -1
  254. data/test/rubygems/test_gem_doctor.rb +1 -2
  255. data/test/rubygems/test_gem_ext_builder.rb +10 -23
  256. data/test/rubygems/test_gem_ext_cmake_builder.rb +5 -4
  257. data/test/rubygems/test_gem_ext_configure_builder.rb +3 -3
  258. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +8 -9
  259. data/test/rubygems/test_gem_ext_rake_builder.rb +20 -5
  260. data/test/rubygems/test_gem_gem_runner.rb +0 -1
  261. data/test/rubygems/test_gem_gemcutter_utilities.rb +32 -6
  262. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -1
  263. data/test/rubygems/test_gem_indexer.rb +1 -2
  264. data/test/rubygems/test_gem_install_update_options.rb +1 -20
  265. data/test/rubygems/test_gem_installer.rb +69 -203
  266. data/test/rubygems/test_gem_local_remote_options.rb +3 -3
  267. data/test/rubygems/test_gem_name_tuple.rb +0 -1
  268. data/test/rubygems/test_gem_package.rb +59 -50
  269. data/test/rubygems/test_gem_package_old.rb +0 -1
  270. data/test/rubygems/test_gem_package_tar_header.rb +1 -2
  271. data/test/rubygems/test_gem_package_tar_reader.rb +0 -1
  272. data/test/rubygems/test_gem_package_tar_reader_entry.rb +11 -0
  273. data/test/rubygems/test_gem_package_tar_writer.rb +40 -7
  274. data/test/rubygems/test_gem_package_task.rb +2 -2
  275. data/test/rubygems/test_gem_path_support.rb +28 -11
  276. data/test/rubygems/test_gem_platform.rb +4 -5
  277. data/test/rubygems/test_gem_rdoc.rb +1 -2
  278. data/test/rubygems/test_gem_remote_fetcher.rb +111 -130
  279. data/test/rubygems/test_gem_request.rb +5 -5
  280. data/test/rubygems/test_gem_request_connection_pools.rb +24 -3
  281. data/test/rubygems/test_gem_request_set.rb +5 -5
  282. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +2 -7
  283. data/test/rubygems/test_gem_request_set_lockfile.rb +1 -2
  284. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +4 -9
  285. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +1 -1
  286. data/test/rubygems/test_gem_requirement.rb +18 -4
  287. data/test/rubygems/test_gem_resolver.rb +13 -17
  288. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -1
  289. data/test/rubygems/test_gem_resolver_api_set.rb +0 -1
  290. data/test/rubygems/test_gem_resolver_api_specification.rb +0 -1
  291. data/test/rubygems/test_gem_resolver_best_set.rb +0 -1
  292. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -1
  293. data/test/rubygems/test_gem_resolver_conflict.rb +0 -1
  294. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -1
  295. data/test/rubygems/test_gem_resolver_git_set.rb +0 -1
  296. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -1
  297. data/test/rubygems/test_gem_resolver_index_set.rb +0 -1
  298. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -1
  299. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -1
  300. data/test/rubygems/test_gem_resolver_installer_set.rb +2 -3
  301. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -1
  302. data/test/rubygems/test_gem_resolver_lock_set.rb +0 -1
  303. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -1
  304. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -1
  305. data/test/rubygems/test_gem_resolver_specification.rb +1 -2
  306. data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -1
  307. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -1
  308. data/test/rubygems/test_gem_security.rb +1 -3
  309. data/test/rubygems/test_gem_security_policy.rb +4 -5
  310. data/test/rubygems/test_gem_security_signer.rb +4 -3
  311. data/test/rubygems/test_gem_security_trust_dir.rb +1 -2
  312. data/test/rubygems/test_gem_server.rb +4 -4
  313. data/test/rubygems/test_gem_source.rb +0 -13
  314. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -1
  315. data/test/rubygems/test_gem_source_git.rb +0 -1
  316. data/test/rubygems/test_gem_source_installed.rb +0 -1
  317. data/test/rubygems/test_gem_source_lock.rb +0 -1
  318. data/test/rubygems/test_gem_source_vendor.rb +0 -1
  319. data/test/rubygems/test_gem_spec_fetcher.rb +0 -1
  320. data/test/rubygems/test_gem_specification.rb +334 -198
  321. data/test/rubygems/test_gem_stream_ui.rb +13 -30
  322. data/test/rubygems/test_gem_stub_specification.rb +0 -2
  323. data/test/rubygems/test_gem_text.rb +4 -5
  324. data/test/rubygems/test_gem_uninstaller.rb +21 -1
  325. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -1
  326. data/test/rubygems/test_gem_uri_formatter.rb +0 -1
  327. data/test/rubygems/test_gem_util.rb +6 -11
  328. data/test/rubygems/test_gem_validator.rb +0 -1
  329. data/test/rubygems/test_gem_version.rb +11 -11
  330. data/test/rubygems/test_gem_version_option.rb +0 -1
  331. data/test/rubygems/test_remote_fetch_error.rb +0 -1
  332. data/test/rubygems/test_require.rb +67 -52
  333. data/util/CL2notes +1 -2
  334. data/util/ci +15 -12
  335. data/util/create_certs.rb +6 -7
  336. data/util/create_encrypted_key.rb +0 -1
  337. data/util/patch_with_prs.rb +1 -1
  338. data/util/rubocop +8 -0
  339. data/util/update_bundled_ca_certificates.rb +15 -14
  340. data/util/update_changelog.rb +1 -1
  341. metadata +67 -59
  342. data/.autotest +0 -71
  343. data/.document +0 -5
  344. data/CONTRIBUTING.rdoc +0 -130
  345. data/CVE-2013-4287.txt +0 -35
  346. data/CVE-2013-4363.txt +0 -45
  347. data/CVE-2015-3900.txt +0 -40
  348. data/POLICIES.rdoc +0 -74
  349. data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +0 -21
  350. data/test/rubygems/fix_openssl_warnings.rb +0 -13
@@ -53,11 +53,11 @@ require 'rubygems'
53
53
 
54
54
  version = \">= 0.a\"
55
55
 
56
- if ARGV.first
57
- str = ARGV.first
58
- str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding
59
- if str =~ /\\A_(.*)_\\z/ and Gem::Version.correct?($1) then
60
- version = $1
56
+ str = ARGV.first
57
+ if str
58
+ str = str.b[/\\A_(.*)_\\z/, 1]
59
+ if str and Gem::Version.correct?(str)
60
+ version = str
61
61
  ARGV.shift
62
62
  end
63
63
  end
@@ -121,7 +121,7 @@ end
121
121
  ensure
122
122
  Object.const_set :RUBY_FRAMEWORK_VERSION, orig_RUBY_FRAMEWORK_VERSION if
123
123
  orig_RUBY_FRAMEWORK_VERSION
124
- if orig_bindir then
124
+ if orig_bindir
125
125
  RbConfig::CONFIG['bindir'] = orig_bindir
126
126
  else
127
127
  RbConfig::CONFIG.delete 'bindir'
@@ -141,7 +141,7 @@ end
141
141
  end
142
142
 
143
143
  File.open File.join(util_inst_bindir, 'executable'), 'w' do |io|
144
- io.write <<-EXEC
144
+ io.write <<-EXEC
145
145
  #!/usr/local/bin/ruby
146
146
  #
147
147
  # This file was generated by RubyGems
@@ -250,7 +250,7 @@ gem 'other', version
250
250
 
251
251
  expected = @installer.bin_dir
252
252
 
253
- if Gem.win_platform? then
253
+ if Gem.win_platform?
254
254
  expected = expected.downcase.gsub(File::SEPARATOR, File::ALT_SEPARATOR)
255
255
  end
256
256
 
@@ -336,6 +336,9 @@ gem 'other', version
336
336
  bin_dir = Gem.win_platform? ? File.expand_path(ENV["WINDIR"]).upcase :
337
337
  "/usr/bin"
338
338
 
339
+ old_path = ENV["PATH"]
340
+ ENV["PATH"] = [ENV["PATH"], bin_dir].compact.join(File::PATH_SEPARATOR)
341
+
339
342
  options = {
340
343
  :bin_dir => bin_dir,
341
344
  :install_dir => "/non/existent"
@@ -350,6 +353,9 @@ gem 'other', version
350
353
  end
351
354
 
352
355
  assert_equal "", @ui.error
356
+
357
+ ensure
358
+ ENV["PATH"] = old_path
353
359
  end
354
360
 
355
361
  def test_generate_bin_script
@@ -482,7 +488,7 @@ gem 'other', version
482
488
  real_exec = File.join @spec.gem_dir, 'bin', 'executable'
483
489
 
484
490
  # fake --no-wrappers for previous install
485
- unless Gem.win_platform? then
491
+ unless Gem.win_platform?
486
492
  FileUtils.mkdir_p File.dirname(installed_exec)
487
493
  FileUtils.ln_s real_exec, installed_exec
488
494
  end
@@ -890,8 +896,6 @@ gem 'other', version
890
896
  end
891
897
 
892
898
  def test_install_creates_binstub_that_dont_trust_encoding
893
- skip unless "".respond_to?(:force_encoding)
894
-
895
899
  Dir.mkdir util_inst_bindir
896
900
  util_setup_gem
897
901
  util_clear_gems
@@ -961,7 +965,7 @@ gem 'other', version
961
965
 
962
966
  def test_install_force
963
967
  use_ui @ui do
964
- installer = Gem::Installer.at old_ruby_required, :force => true
968
+ installer = Gem::Installer.at old_ruby_required('= 1.4.6'), :force => true
965
969
  installer.install
966
970
  end
967
971
 
@@ -1179,88 +1183,47 @@ gem 'other', version
1179
1183
  refute_path_exists File.join expected_extension_dir, 'gem_make.out'
1180
1184
  end
1181
1185
 
1182
- # ruby core repository needs to `depend` file for extension build.
1183
- # but 1.9.2 and earlier mkmf.rb does not create TOUCH file like depend.
1184
- if RUBY_VERSION < '1.9.3'
1185
- def test_find_lib_file_after_install
1186
-
1187
- @spec.extensions << "extconf.rb"
1188
- write_file File.join(@tempdir, "extconf.rb") do |io|
1189
- io.write <<-RUBY
1190
- require "mkmf"
1191
- create_makefile("#{@spec.name}")
1192
- RUBY
1193
- end
1194
-
1195
- write_file File.join(@tempdir, "a.c") do |io|
1196
- io.write <<-C
1197
- #include <ruby.h>
1198
- void Init_a() { }
1199
- C
1200
- end
1201
-
1202
- Dir.mkdir File.join(@tempdir, "lib")
1203
- write_file File.join(@tempdir, 'lib', "b.rb") do |io|
1204
- io.write "# b.rb"
1205
- end
1206
-
1207
- @spec.files += %w[extconf.rb lib/b.rb a.c]
1208
-
1209
- use_ui @ui do
1210
- path = Gem::Package.build @spec
1186
+ def test_find_lib_file_after_install
1187
+ @spec.extensions << "extconf.rb"
1188
+ write_file File.join(@tempdir, "extconf.rb") do |io|
1189
+ io.write <<-RUBY
1190
+ require "mkmf"
1211
1191
 
1212
- installer = Gem::Installer.at path
1213
- installer.install
1214
- end
1192
+ CONFIG['CC'] = '$(TOUCH) $@ ||'
1193
+ CONFIG['LDSHARED'] = '$(TOUCH) $@ ||'
1194
+ $ruby = '#{Gem.ruby}'
1215
1195
 
1216
- expected = File.join @spec.full_require_paths.find { |path|
1217
- File.exist? File.join path, 'b.rb'
1218
- }, 'b.rb'
1219
- assert_equal expected, @spec.matches_for_glob('b.rb').first
1196
+ create_makefile("#{@spec.name}")
1197
+ RUBY
1220
1198
  end
1221
- else
1222
- def test_find_lib_file_after_install
1223
- @spec.extensions << "extconf.rb"
1224
- write_file File.join(@tempdir, "extconf.rb") do |io|
1225
- io.write <<-RUBY
1226
- require "mkmf"
1227
1199
 
1228
- CONFIG['CC'] = '$(TOUCH) $@ ||'
1229
- CONFIG['LDSHARED'] = '$(TOUCH) $@ ||'
1230
- $ruby = '#{Gem.ruby}'
1200
+ write_file File.join(@tempdir, "depend")
1231
1201
 
1232
- create_makefile("#{@spec.name}")
1233
- RUBY
1234
- end
1235
-
1236
- write_file File.join(@tempdir, "depend")
1237
-
1238
- write_file File.join(@tempdir, "a.c") do |io|
1239
- io.write <<-C
1240
- #include <ruby.h>
1241
- void Init_a() { }
1242
- C
1243
- end
1244
-
1245
- Dir.mkdir File.join(@tempdir, "lib")
1246
- write_file File.join(@tempdir, 'lib', "b.rb") do |io|
1247
- io.write "# b.rb"
1248
- end
1202
+ write_file File.join(@tempdir, "a.c") do |io|
1203
+ io.write <<-C
1204
+ #include <ruby.h>
1205
+ void Init_a() { }
1206
+ C
1207
+ end
1249
1208
 
1250
- @spec.files += %w[extconf.rb lib/b.rb depend a.c]
1209
+ Dir.mkdir File.join(@tempdir, "lib")
1210
+ write_file File.join(@tempdir, 'lib', "b.rb") do |io|
1211
+ io.write "# b.rb"
1212
+ end
1251
1213
 
1252
- use_ui @ui do
1253
- path = Gem::Package.build @spec
1214
+ @spec.files += %w[extconf.rb lib/b.rb depend a.c]
1254
1215
 
1255
- installer = Gem::Installer.at path
1256
- installer.install
1257
- end
1216
+ use_ui @ui do
1217
+ path = Gem::Package.build @spec
1258
1218
 
1259
- expected = File.join @spec.full_require_paths.find { |path|
1260
- File.exist? File.join path, 'b.rb'
1261
- }, 'b.rb'
1262
- assert_equal expected, @spec.matches_for_glob('b.rb').first
1219
+ installer = Gem::Installer.at path
1220
+ installer.install
1263
1221
  end
1222
+
1223
+ expected = File.join @spec.full_require_paths.find { |path|
1224
+ File.exist? File.join path, 'b.rb'
1225
+ }, 'b.rb'
1226
+ assert_equal expected, @spec.matches_for_glob('b.rb').first
1264
1227
  end
1265
1228
 
1266
1229
  def test_install_extension_and_script
@@ -1302,13 +1265,6 @@ gem 'other', version
1302
1265
  end
1303
1266
 
1304
1267
  def test_install_extension_flat
1305
- skip '1.9.2 and earlier mkmf.rb does not create TOUCH' if
1306
- RUBY_VERSION < '1.9.3'
1307
-
1308
- if RUBY_VERSION == "1.9.3" and RUBY_PATCHLEVEL <= 194
1309
- skip "TOUCH was introduced into 1.9.3 after p194"
1310
- end
1311
-
1312
1268
  @spec.require_paths = ["."]
1313
1269
 
1314
1270
  @spec.extensions << "extconf.rb"
@@ -1424,16 +1380,32 @@ gem 'other', version
1424
1380
 
1425
1381
  def test_pre_install_checks_ruby_version
1426
1382
  use_ui @ui do
1427
- installer = Gem::Installer.at old_ruby_required
1383
+ installer = Gem::Installer.at old_ruby_required('= 1.4.6')
1428
1384
  e = assert_raises Gem::RuntimeRequirementNotMetError do
1429
1385
  installer.pre_install_checks
1430
1386
  end
1431
- rv = Gem.ruby_api_version
1387
+ rv = Gem.ruby_version
1432
1388
  assert_equal "old_ruby_required requires Ruby version = 1.4.6. The current ruby version is #{rv}.",
1433
1389
  e.message
1434
1390
  end
1435
1391
  end
1436
1392
 
1393
+ def test_pre_install_checks_ruby_version_with_prereleases
1394
+ util_set_RUBY_VERSION '2.6.0', -1, '63539', 'ruby 2.6.0preview2 (2018-05-31 trunk 63539) [x86_64-linux]'
1395
+
1396
+ installer = Gem::Installer.at old_ruby_required('>= 2.6.0.preview2')
1397
+ assert installer.pre_install_checks
1398
+
1399
+ installer = Gem::Installer.at old_ruby_required('> 2.6.0.preview2')
1400
+ e = assert_raises Gem::RuntimeRequirementNotMetError do
1401
+ assert installer.pre_install_checks
1402
+ end
1403
+ assert_equal "old_ruby_required requires Ruby version > 2.6.0.preview2. The current ruby version is 2.6.0.preview2.",
1404
+ e.message
1405
+ ensure
1406
+ util_restore_RUBY_VERSION
1407
+ end
1408
+
1437
1409
  def test_pre_install_checks_wrong_rubygems_version
1438
1410
  spec = util_spec 'old_rubygems_required', '1' do |s|
1439
1411
  s.required_rubygems_version = '< 0'
@@ -1459,7 +1431,7 @@ gem 'other', version
1459
1431
  def spec.full_name # so the spec is buildable
1460
1432
  "malicious-1"
1461
1433
  end
1462
- def spec.validate; end
1434
+ def spec.validate(packaging, strict); end
1463
1435
 
1464
1436
  util_build_gem spec
1465
1437
 
@@ -1474,112 +1446,6 @@ gem 'other', version
1474
1446
  end
1475
1447
  end
1476
1448
 
1477
- def test_pre_install_checks_malicious_name_before_eval
1478
- spec = util_spec "malicious\n::Object.const_set(:FROM_EVAL, true)#", '1'
1479
- def spec.full_name # so the spec is buildable
1480
- "malicious-1"
1481
- end
1482
- def spec.validate(*args); end
1483
-
1484
- util_build_gem spec
1485
-
1486
- gem = File.join(@gemhome, 'cache', spec.file_name)
1487
-
1488
- use_ui @ui do
1489
- @installer = Gem::Installer.at gem
1490
- e = assert_raises Gem::InstallError do
1491
- @installer.pre_install_checks
1492
- end
1493
- assert_equal "#<Gem::Specification name=malicious\n::Object.const_set(:FROM_EVAL, true)# version=1> has an invalid name", e.message
1494
- end
1495
- refute defined?(::Object::FROM_EVAL)
1496
- end
1497
-
1498
- def test_pre_install_checks_malicious_require_paths_before_eval
1499
- spec = util_spec "malicious", '1'
1500
- def spec.full_name # so the spec is buildable
1501
- "malicious-1"
1502
- end
1503
- def spec.validate(*args); end
1504
- spec.require_paths = ["malicious\n``"]
1505
-
1506
- util_build_gem spec
1507
-
1508
- gem = File.join(@gemhome, 'cache', spec.file_name)
1509
-
1510
- use_ui @ui do
1511
- @installer = Gem::Installer.at gem
1512
- e = assert_raises Gem::InstallError do
1513
- @installer.pre_install_checks
1514
- end
1515
- assert_equal "#<Gem::Specification name=malicious version=1> has an invalid require_paths", e.message
1516
- end
1517
- end
1518
-
1519
- def test_pre_install_checks_malicious_extensions_before_eval
1520
- spec = util_spec "malicious", '1'
1521
- def spec.full_name # so the spec is buildable
1522
- "malicious-1"
1523
- end
1524
- def spec.validate(*args); end
1525
- spec.extensions = ["malicious\n``"]
1526
-
1527
- util_build_gem spec
1528
-
1529
- gem = File.join(@gemhome, 'cache', spec.file_name)
1530
-
1531
- use_ui @ui do
1532
- @installer = Gem::Installer.at gem
1533
- e = assert_raises Gem::InstallError do
1534
- @installer.pre_install_checks
1535
- end
1536
- assert_equal "#<Gem::Specification name=malicious version=1> has an invalid extensions", e.message
1537
- end
1538
- end
1539
-
1540
- def test_pre_install_checks_malicious_specification_version_before_eval
1541
- spec = util_spec "malicious", '1'
1542
- def spec.full_name # so the spec is buildable
1543
- "malicious-1"
1544
- end
1545
- def spec.validate(*args); end
1546
- spec.specification_version = "malicious\n``"
1547
-
1548
- util_build_gem spec
1549
-
1550
- gem = File.join(@gemhome, 'cache', spec.file_name)
1551
-
1552
- use_ui @ui do
1553
- @installer = Gem::Installer.at gem
1554
- e = assert_raises Gem::InstallError do
1555
- @installer.pre_install_checks
1556
- end
1557
- assert_equal "#<Gem::Specification name=malicious version=1> has an invalid specification_version", e.message
1558
- end
1559
- end
1560
-
1561
- def test_pre_install_checks_malicious_dependencies_before_eval
1562
- spec = util_spec "malicious", '1'
1563
- def spec.full_name # so the spec is buildable
1564
- "malicious-1"
1565
- end
1566
- def spec.validate(*args); end
1567
- spec.add_dependency "b\nfoo", '> 5'
1568
-
1569
- util_build_gem spec
1570
-
1571
- gem = File.join(@gemhome, 'cache', spec.file_name)
1572
-
1573
- use_ui @ui do
1574
- @installer = Gem::Installer.at gem
1575
- @installer.ignore_dependencies = true
1576
- e = assert_raises Gem::InstallError do
1577
- @installer.pre_install_checks
1578
- end
1579
- assert_equal "#<Gem::Specification name=malicious version=1> has an invalid dependencies", e.message
1580
- end
1581
- end
1582
-
1583
1449
  def test_shebang
1584
1450
  util_make_exec @spec, "#!/usr/bin/ruby"
1585
1451
 
@@ -1870,9 +1736,9 @@ gem 'other', version
1870
1736
  assert_equal ['bin/executable'], default_spec.files
1871
1737
  end
1872
1738
 
1873
- def old_ruby_required
1739
+ def old_ruby_required(requirement)
1874
1740
  spec = util_spec 'old_ruby_required', '1' do |s|
1875
- s.required_ruby_version = '= 1.4.6'
1741
+ s.required_ruby_version = requirement
1876
1742
  end
1877
1743
 
1878
1744
  util_build_gem spec
@@ -1887,7 +1753,7 @@ gem 'other', version
1887
1753
  @installer = util_installer @spec, @gemhome
1888
1754
  end
1889
1755
 
1890
- def util_conflict_executable wrappers
1756
+ def util_conflict_executable(wrappers)
1891
1757
  conflict = quick_gem 'conflict' do |spec|
1892
1758
  util_make_exec spec
1893
1759
  end
@@ -44,8 +44,9 @@ class TestGemLocalRemoteOptions < Gem::TestCase
44
44
  spec_fetcher
45
45
 
46
46
  @cmd.add_local_remote_options
47
+ Gem.configuration.sources = nil
47
48
  @cmd.handle_options %W[--clear-sources]
48
- assert_equal Gem.default_sources, Gem.sources
49
+ assert_equal Gem.default_sources, Gem.sources.to_a
49
50
  end
50
51
 
51
52
  def test_local_eh
@@ -123,7 +124,7 @@ class TestGemLocalRemoteOptions < Gem::TestCase
123
124
 
124
125
  s1 = 'htp://more-gems.example.com'
125
126
 
126
- assert_raises OptionParser::InvalidArgument do
127
+ assert_raises ArgumentError do
127
128
  @cmd.handle_options %W[--source #{s1}]
128
129
  end
129
130
 
@@ -131,4 +132,3 @@ class TestGemLocalRemoteOptions < Gem::TestCase
131
132
  end
132
133
 
133
134
  end
134
-
@@ -42,4 +42,3 @@ class TestGemNameTuple < Gem::TestCase
42
42
  end
43
43
 
44
44
  end
45
-
@@ -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,22 @@ 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
+ ENV["SOURCE_DATE_EPOCH"] = "123456789"
109
+
110
+ spec = Gem::Specification.new 'build', '1'
111
+ spec.summary = 'build'
112
+ spec.authors = 'build'
113
+ spec.files = ['lib/code.rb']
114
+ spec.date = Time.at 0
115
+ spec.rubygems_version = Gem::Version.new '0'
116
+
117
+
118
+ package = Gem::Package.new spec.file_name
119
+
120
+ assert_equal Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc, package.build_time
121
+ end
122
+
107
123
  def test_add_files
108
124
  spec = Gem::Specification.new
109
125
  spec.files = %w[lib/code.rb lib/empty]
@@ -134,16 +150,23 @@ class TestGemPackage < Gem::Package::TarTestCase
134
150
  end
135
151
 
136
152
  def test_add_files_symlink
137
- skip 'symlink not supported' if Gem.win_platform?
138
-
139
153
  spec = Gem::Specification.new
140
- spec.files = %w[lib/code.rb lib/code_sym.rb]
154
+ spec.files = %w[lib/code.rb lib/code_sym.rb lib/code_sym2.rb]
141
155
 
142
156
  FileUtils.mkdir_p 'lib'
143
157
  File.open 'lib/code.rb', 'w' do |io| io.write '# lib/code.rb' end
144
158
 
145
159
  # NOTE: 'code.rb' is correct, because it's relative to lib/code_sym.rb
146
- File.symlink('code.rb', 'lib/code_sym.rb')
160
+ begin
161
+ File.symlink('code.rb', 'lib/code_sym.rb')
162
+ File.symlink('../lib/code.rb', 'lib/code_sym2.rb')
163
+ rescue Errno::EACCES => e
164
+ if win_platform?
165
+ skip "symlink - must be admin with no UAC on Windows"
166
+ else
167
+ raise e
168
+ end
169
+ end
147
170
 
148
171
  package = Gem::Package.new 'bogus.gem'
149
172
  package.spec = spec
@@ -167,7 +190,7 @@ class TestGemPackage < Gem::Package::TarTestCase
167
190
  end
168
191
 
169
192
  assert_equal %w[lib/code.rb], files
170
- assert_equal [{'lib/code_sym.rb' => 'lib/code.rb'}], symlinks
193
+ assert_equal [{'lib/code_sym.rb' => 'lib/code.rb'}, {'lib/code_sym2.rb' => '../lib/code.rb'}], symlinks
171
194
  end
172
195
 
173
196
  def test_build
@@ -299,6 +322,19 @@ class TestGemPackage < Gem::Package::TarTestCase
299
322
  assert_equal 'missing value for attribute summary', e.message
300
323
  end
301
324
 
325
+ def test_build_invalid_arguments
326
+ spec = Gem::Specification.new 'build', '1'
327
+
328
+ package = Gem::Package.new spec.file_name
329
+ package.spec = spec
330
+
331
+ e = assert_raises ArgumentError do
332
+ package.build true, true
333
+ end
334
+
335
+ assert_equal "skip_validation = true and strict_validation = true are incompatible", e.message
336
+ end
337
+
302
338
  def test_build_signed
303
339
  skip 'openssl is missing' unless defined?(OpenSSL::SSL)
304
340
 
@@ -435,8 +471,6 @@ class TestGemPackage < Gem::Package::TarTestCase
435
471
  end
436
472
 
437
473
  def test_extract_tar_gz_symlink_relative_path
438
- skip 'symlink not supported' if Gem.win_platform?
439
-
440
474
  package = Gem::Package.new @gem
441
475
 
442
476
  tgz_io = util_tar_gz do |tar|
@@ -445,7 +479,15 @@ class TestGemPackage < Gem::Package::TarTestCase
445
479
  tar.add_symlink 'lib/foo.rb', '../relative.rb', 0644
446
480
  end
447
481
 
448
- package.extract_tar_gz tgz_io, @destination
482
+ begin
483
+ package.extract_tar_gz tgz_io, @destination
484
+ rescue Errno::EACCES => e
485
+ if win_platform?
486
+ skip "symlink - must be admin with no UAC on Windows"
487
+ else
488
+ raise e
489
+ end
490
+ end
449
491
 
450
492
  extracted = File.join @destination, 'lib/foo.rb'
451
493
  assert_path_exists extracted
@@ -456,58 +498,26 @@ class TestGemPackage < Gem::Package::TarTestCase
456
498
  end
457
499
 
458
500
  def test_extract_symlink_parent
459
- skip 'symlink not supported' if Gem.win_platform?
460
-
461
- package = Gem::Package.new @gem
462
-
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
468
-
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
474
-
475
- e = assert_raises Gem::Package::PathError do
476
- package.extract_tar_gz tgz_io, destination_subdir
477
- end
478
-
479
- assert_equal("installing into parent path lib/link/outside.txt of " +
480
- "#{destination_subdir} is not allowed", e.message)
481
- end
482
-
483
- def test_extract_symlink_parent_doesnt_delete_user_dir
484
- skip if RUBY_VERSION <= "1.8.7"
485
-
486
501
  package = Gem::Package.new @gem
487
502
 
503
+ tgz_io = util_tar_gz do |tar|
504
+ tar.mkdir 'lib', 0755
505
+ tar.add_symlink 'lib/link', '../..', 0644
506
+ tar.add_file 'lib/link/outside.txt', 0644 do |io| io.write 'hi' end
507
+ end
508
+
488
509
  # Extract into a subdirectory of @destination; if this test fails it writes
489
510
  # a file outside destination_subdir, but we want the file to remain inside
490
511
  # @destination so it will be cleaned up.
491
512
  destination_subdir = File.join @destination, 'subdir'
492
513
  FileUtils.mkdir_p destination_subdir
493
514
 
494
- destination_user_dir = File.join @destination, 'user'
495
- destination_user_subdir = File.join destination_user_dir, 'dir'
496
- FileUtils.mkdir_p destination_user_subdir
497
-
498
- tgz_io = util_tar_gz do |tar|
499
- tar.add_symlink 'link', destination_user_dir, 16877
500
- tar.add_symlink 'link/dir', '.', 16877
501
- end
502
-
503
515
  e = assert_raises(Gem::Package::PathError, Errno::EACCES) do
504
516
  package.extract_tar_gz tgz_io, destination_subdir
505
517
  end
506
518
 
507
- assert_path_exists destination_user_subdir
508
-
509
519
  if Gem::Package::PathError === e
510
- assert_equal("installing into parent path #{destination_user_subdir} of " +
520
+ assert_equal("installing into parent path lib/link/outside.txt of " +
511
521
  "#{destination_subdir} is not allowed", e.message)
512
522
  elsif win_platform?
513
523
  skip "symlink - must be admin with no UAC on Windows"
@@ -615,7 +625,6 @@ class TestGemPackage < Gem::Package::TarTestCase
615
625
  end
616
626
 
617
627
  def test_install_location_extra_slash
618
- skip 'no File.realpath on 1.8' if RUBY_VERSION < '1.9'
619
628
  package = Gem::Package.new @gem
620
629
 
621
630
  file = 'foo//file.rb'.dup
@@ -788,7 +797,7 @@ class TestGemPackage < Gem::Package::TarTestCase
788
797
  e.message
789
798
  io
790
799
  end
791
- tf.close! if tf.respond_to? :close!
800
+ tf.close!
792
801
  end
793
802
 
794
803
  def test_verify_empty