rubygems-update 3.2.30 → 3.4.10

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 (641) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1666 -994
  3. data/CONTRIBUTING.md +71 -15
  4. data/Manifest.txt +93 -37
  5. data/POLICIES.md +65 -16
  6. data/README.md +28 -13
  7. data/UPGRADING.md +5 -81
  8. data/bin/gem +2 -10
  9. data/bin/update_rubygems +5 -5
  10. data/bundler/CHANGELOG.md +647 -1
  11. data/bundler/README.md +3 -6
  12. data/bundler/UPGRADING.md +11 -4
  13. data/bundler/bundler.gemspec +8 -10
  14. data/bundler/exe/bundle +7 -11
  15. data/bundler/exe/bundler +1 -1
  16. data/bundler/lib/bundler/.document +1 -0
  17. data/bundler/lib/bundler/build_metadata.rb +3 -3
  18. data/bundler/lib/bundler/cli/add.rb +1 -1
  19. data/bundler/lib/bundler/cli/binstubs.rb +5 -1
  20. data/bundler/lib/bundler/cli/check.rb +1 -1
  21. data/bundler/lib/bundler/cli/common.rb +4 -2
  22. data/bundler/lib/bundler/cli/config.rb +10 -1
  23. data/bundler/lib/bundler/cli/console.rb +2 -2
  24. data/bundler/lib/bundler/cli/doctor.rb +10 -3
  25. data/bundler/lib/bundler/cli/gem.rb +136 -42
  26. data/bundler/lib/bundler/cli/info.rb +17 -3
  27. data/bundler/lib/bundler/cli/init.rb +6 -2
  28. data/bundler/lib/bundler/cli/install.rb +15 -33
  29. data/bundler/lib/bundler/cli/lock.rb +8 -5
  30. data/bundler/lib/bundler/cli/open.rb +6 -4
  31. data/bundler/lib/bundler/cli/outdated.rb +13 -6
  32. data/bundler/lib/bundler/cli/platform.rb +2 -2
  33. data/bundler/lib/bundler/cli/show.rb +1 -1
  34. data/bundler/lib/bundler/cli/update.rb +8 -4
  35. data/bundler/lib/bundler/cli/viz.rb +1 -1
  36. data/bundler/lib/bundler/cli.rb +67 -21
  37. data/bundler/lib/bundler/compact_index_client/cache.rb +1 -10
  38. data/bundler/lib/bundler/compact_index_client/updater.rb +53 -44
  39. data/bundler/lib/bundler/compact_index_client.rb +0 -6
  40. data/bundler/lib/bundler/constants.rb +1 -1
  41. data/bundler/lib/bundler/current_ruby.rb +18 -6
  42. data/bundler/lib/bundler/definition.rb +259 -242
  43. data/bundler/lib/bundler/dependency.rb +24 -71
  44. data/bundler/lib/bundler/digest.rb +1 -1
  45. data/bundler/lib/bundler/dsl.rb +29 -46
  46. data/bundler/lib/bundler/endpoint_specification.rb +15 -13
  47. data/bundler/lib/bundler/env.rb +2 -2
  48. data/bundler/lib/bundler/environment_preserver.rb +7 -3
  49. data/bundler/lib/bundler/errors.rb +15 -15
  50. data/bundler/lib/bundler/feature_flag.rb +0 -1
  51. data/bundler/lib/bundler/fetcher/base.rb +6 -8
  52. data/bundler/lib/bundler/fetcher/compact_index.rb +18 -25
  53. data/bundler/lib/bundler/fetcher/dependency.rb +2 -6
  54. data/bundler/lib/bundler/fetcher/downloader.rb +2 -5
  55. data/bundler/lib/bundler/fetcher/index.rb +0 -26
  56. data/bundler/lib/bundler/fetcher.rb +22 -29
  57. data/bundler/lib/bundler/force_platform.rb +18 -0
  58. data/bundler/lib/bundler/friendly_errors.rb +21 -7
  59. data/bundler/lib/bundler/gem_helper.rb +4 -4
  60. data/bundler/lib/bundler/gem_helpers.rb +9 -2
  61. data/bundler/lib/bundler/gem_version_promoter.rb +53 -98
  62. data/bundler/lib/bundler/graph.rb +3 -3
  63. data/bundler/lib/bundler/index.rb +13 -51
  64. data/bundler/lib/bundler/injector.rb +18 -4
  65. data/bundler/lib/bundler/inline.rb +9 -21
  66. data/bundler/lib/bundler/installer/gem_installer.rb +13 -5
  67. data/bundler/lib/bundler/installer/parallel_installer.rb +3 -33
  68. data/bundler/lib/bundler/installer/standalone.rb +42 -11
  69. data/bundler/lib/bundler/installer.rb +20 -44
  70. data/bundler/lib/bundler/lazy_specification.rb +72 -55
  71. data/bundler/lib/bundler/lockfile_generator.rb +3 -3
  72. data/bundler/lib/bundler/lockfile_parser.rb +28 -26
  73. data/bundler/lib/bundler/man/bundle-add.1 +21 -5
  74. data/bundler/lib/bundler/man/bundle-add.1.ronn +16 -4
  75. data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
  76. data/bundler/lib/bundler/man/bundle-cache.1 +7 -1
  77. data/bundler/lib/bundler/man/bundle-cache.1.ronn +7 -0
  78. data/bundler/lib/bundler/man/bundle-check.1 +1 -1
  79. data/bundler/lib/bundler/man/bundle-clean.1 +2 -2
  80. data/bundler/lib/bundler/man/bundle-clean.1.ronn +1 -1
  81. data/bundler/lib/bundler/man/bundle-config.1 +34 -15
  82. data/bundler/lib/bundler/man/bundle-config.1.ronn +31 -19
  83. data/bundler/lib/bundler/man/bundle-console.1 +53 -0
  84. data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
  85. data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
  86. data/bundler/lib/bundler/man/bundle-exec.1 +6 -6
  87. data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -6
  88. data/bundler/lib/bundler/man/bundle-gem.1 +37 -34
  89. data/bundler/lib/bundler/man/bundle-gem.1.ronn +21 -5
  90. data/bundler/lib/bundler/man/bundle-help.1 +13 -0
  91. data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
  92. data/bundler/lib/bundler/man/bundle-info.1 +1 -1
  93. data/bundler/lib/bundler/man/bundle-init.1 +5 -1
  94. data/bundler/lib/bundler/man/bundle-init.1.ronn +2 -0
  95. data/bundler/lib/bundler/man/bundle-inject.1 +5 -2
  96. data/bundler/lib/bundler/man/bundle-inject.1.ronn +3 -1
  97. data/bundler/lib/bundler/man/bundle-install.1 +6 -31
  98. data/bundler/lib/bundler/man/bundle-install.1.ronn +8 -31
  99. data/bundler/lib/bundler/man/bundle-list.1 +1 -1
  100. data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
  101. data/bundler/lib/bundler/man/bundle-open.1 +22 -2
  102. data/bundler/lib/bundler/man/bundle-open.1.ronn +9 -1
  103. data/bundler/lib/bundler/man/bundle-outdated.1 +3 -10
  104. data/bundler/lib/bundler/man/bundle-outdated.1.ronn +1 -10
  105. data/bundler/lib/bundler/man/bundle-platform.1 +16 -6
  106. data/bundler/lib/bundler/man/bundle-platform.1.ronn +14 -7
  107. data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
  108. data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
  109. data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
  110. data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
  111. data/bundler/lib/bundler/man/bundle-show.1 +1 -1
  112. data/bundler/lib/bundler/man/bundle-update.1 +2 -2
  113. data/bundler/lib/bundler/man/bundle-update.1.ronn +2 -1
  114. data/bundler/lib/bundler/man/bundle-version.1 +35 -0
  115. data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
  116. data/bundler/lib/bundler/man/bundle-viz.1 +4 -1
  117. data/bundler/lib/bundler/man/bundle-viz.1.ronn +2 -0
  118. data/bundler/lib/bundler/man/bundle.1 +15 -10
  119. data/bundler/lib/bundler/man/bundle.1.ronn +12 -7
  120. data/bundler/lib/bundler/man/gemfile.5 +117 -80
  121. data/bundler/lib/bundler/man/gemfile.5.ronn +105 -84
  122. data/bundler/lib/bundler/man/index.txt +4 -0
  123. data/bundler/lib/bundler/match_metadata.rb +13 -0
  124. data/bundler/lib/bundler/match_platform.rb +0 -1
  125. data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
  126. data/bundler/lib/bundler/mirror.rb +5 -7
  127. data/bundler/lib/bundler/plugin/api/source.rb +4 -9
  128. data/bundler/lib/bundler/plugin/index.rb +4 -4
  129. data/bundler/lib/bundler/plugin/installer/git.rb +0 -4
  130. data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -8
  131. data/bundler/lib/bundler/plugin/installer.rb +6 -3
  132. data/bundler/lib/bundler/plugin.rb +3 -1
  133. data/bundler/lib/bundler/process_lock.rb +1 -1
  134. data/bundler/lib/bundler/remote_specification.rb +7 -5
  135. data/bundler/lib/bundler/resolver/base.rb +109 -0
  136. data/bundler/lib/bundler/resolver/candidate.rb +94 -0
  137. data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
  138. data/bundler/lib/bundler/resolver/package.rb +72 -0
  139. data/bundler/lib/bundler/resolver/root.rb +25 -0
  140. data/bundler/lib/bundler/resolver/spec_group.rb +43 -71
  141. data/bundler/lib/bundler/resolver.rb +332 -308
  142. data/bundler/lib/bundler/ruby_dsl.rb +1 -1
  143. data/bundler/lib/bundler/ruby_version.rb +5 -18
  144. data/bundler/lib/bundler/rubygems_ext.rb +144 -25
  145. data/bundler/lib/bundler/rubygems_gem_installer.rb +32 -20
  146. data/bundler/lib/bundler/rubygems_integration.rb +24 -95
  147. data/bundler/lib/bundler/runtime.rb +2 -7
  148. data/bundler/lib/bundler/self_manager.rb +168 -0
  149. data/bundler/lib/bundler/settings.rb +5 -10
  150. data/bundler/lib/bundler/setup.rb +4 -1
  151. data/bundler/lib/bundler/shared_helpers.rb +17 -25
  152. data/bundler/lib/bundler/source/git/git_proxy.rb +219 -71
  153. data/bundler/lib/bundler/source/git.rb +23 -26
  154. data/bundler/lib/bundler/source/metadata.rb +3 -4
  155. data/bundler/lib/bundler/source/path/installer.rb +1 -22
  156. data/bundler/lib/bundler/source/path.rb +7 -7
  157. data/bundler/lib/bundler/source/rubygems.rb +91 -130
  158. data/bundler/lib/bundler/source/rubygems_aggregate.rb +1 -1
  159. data/bundler/lib/bundler/source.rb +4 -5
  160. data/bundler/lib/bundler/source_list.rb +19 -31
  161. data/bundler/lib/bundler/source_map.rb +15 -2
  162. data/bundler/lib/bundler/spec_set.rb +63 -35
  163. data/bundler/lib/bundler/stub_specification.rb +5 -3
  164. data/bundler/lib/bundler/templates/Executable +3 -5
  165. data/bundler/lib/bundler/templates/Executable.bundler +6 -11
  166. data/bundler/lib/bundler/templates/Executable.standalone +4 -4
  167. data/bundler/lib/bundler/templates/Gemfile +0 -2
  168. data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
  169. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +8 -2
  170. data/bundler/lib/bundler/templates/newgem/README.md.tt +7 -11
  171. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +27 -3
  172. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
  173. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
  174. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
  175. data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
  176. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +13 -3
  177. data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
  178. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +13 -4
  179. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +22 -16
  180. data/bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
  181. data/bundler/lib/bundler/templates/newgem/standard.yml.tt +3 -0
  182. data/bundler/lib/bundler/templates/newgem/test/minitest/{newgem_test.rb.tt → test_newgem.rb.tt} +1 -1
  183. data/bundler/lib/bundler/ui/shell.rb +36 -13
  184. data/bundler/lib/bundler/ui/silent.rb +21 -5
  185. data/bundler/lib/bundler/uri_normalizer.rb +23 -0
  186. data/bundler/lib/bundler/vendor/.document +1 -0
  187. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
  188. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
  189. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
  190. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1350 -408
  191. data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
  192. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
  193. data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
  194. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
  195. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
  196. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
  197. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
  198. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
  199. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
  200. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
  201. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
  202. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
  203. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
  204. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
  205. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
  206. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
  207. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +243 -0
  208. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
  209. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
  210. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +6 -6
  211. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +1 -2
  212. data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +6 -2
  213. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +6 -0
  214. data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +9 -4
  215. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +19 -1
  216. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +23 -5
  217. data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
  218. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
  219. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  220. data/bundler/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
  221. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +452 -0
  222. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +76 -91
  223. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
  224. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -2
  225. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +32 -13
  226. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -3
  227. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -2
  228. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +2 -2
  229. data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
  230. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -3
  231. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +14 -21
  232. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +11 -17
  233. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  234. data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +83 -0
  235. data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +23 -0
  236. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -3
  237. data/bundler/lib/bundler/vendored_persistent.rb +1 -33
  238. data/bundler/lib/bundler/{vendored_molinillo.rb → vendored_pub_grub.rb} +1 -1
  239. data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_tsort.rb} +1 -1
  240. data/bundler/lib/bundler/version.rb +5 -1
  241. data/bundler/lib/bundler/worker.rb +5 -7
  242. data/bundler/lib/bundler.rb +50 -77
  243. data/hide_lib_for_update/note.txt +0 -4
  244. data/lib/rubygems/available_set.rb +3 -3
  245. data/lib/rubygems/basic_specification.rb +12 -12
  246. data/lib/rubygems/bundler_version_finder.rb +14 -46
  247. data/lib/rubygems/command.rb +47 -39
  248. data/lib/rubygems/command_manager.rb +34 -13
  249. data/lib/rubygems/commands/build_command.rb +11 -8
  250. data/lib/rubygems/commands/cert_command.rb +39 -39
  251. data/lib/rubygems/commands/check_command.rb +20 -20
  252. data/lib/rubygems/commands/cleanup_command.rb +23 -23
  253. data/lib/rubygems/commands/contents_command.rb +13 -13
  254. data/lib/rubygems/commands/dependency_command.rb +35 -45
  255. data/lib/rubygems/commands/environment_command.rb +10 -7
  256. data/lib/rubygems/commands/exec_command.rb +248 -0
  257. data/lib/rubygems/commands/fetch_command.rb +32 -13
  258. data/lib/rubygems/commands/generate_index_command.rb +17 -17
  259. data/lib/rubygems/commands/help_command.rb +6 -6
  260. data/lib/rubygems/commands/info_command.rb +3 -3
  261. data/lib/rubygems/commands/install_command.rb +31 -24
  262. data/lib/rubygems/commands/list_command.rb +4 -4
  263. data/lib/rubygems/commands/lock_command.rb +4 -4
  264. data/lib/rubygems/commands/mirror_command.rb +3 -3
  265. data/lib/rubygems/commands/open_command.rb +9 -9
  266. data/lib/rubygems/commands/outdated_command.rb +5 -5
  267. data/lib/rubygems/commands/owner_command.rb +17 -12
  268. data/lib/rubygems/commands/pristine_command.rb +64 -49
  269. data/lib/rubygems/commands/push_command.rb +16 -16
  270. data/lib/rubygems/commands/query_command.rb +9 -9
  271. data/lib/rubygems/commands/rdoc_command.rb +26 -25
  272. data/lib/rubygems/commands/search_command.rb +4 -4
  273. data/lib/rubygems/commands/server_command.rb +16 -79
  274. data/lib/rubygems/commands/setup_command.rb +172 -173
  275. data/lib/rubygems/commands/signin_command.rb +9 -9
  276. data/lib/rubygems/commands/signout_command.rb +7 -7
  277. data/lib/rubygems/commands/sources_command.rb +22 -22
  278. data/lib/rubygems/commands/specification_command.rb +18 -18
  279. data/lib/rubygems/commands/stale_command.rb +2 -2
  280. data/lib/rubygems/commands/uninstall_command.rb +43 -40
  281. data/lib/rubygems/commands/unpack_command.rb +13 -13
  282. data/lib/rubygems/commands/update_command.rb +61 -72
  283. data/lib/rubygems/commands/which_command.rb +7 -7
  284. data/lib/rubygems/commands/yank_command.rb +11 -11
  285. data/lib/rubygems/compatibility.rb +4 -2
  286. data/lib/rubygems/config_file.rb +58 -25
  287. data/lib/rubygems/core_ext/kernel_gem.rb +1 -6
  288. data/lib/rubygems/core_ext/kernel_require.rb +108 -115
  289. data/lib/rubygems/core_ext/kernel_warn.rb +33 -37
  290. data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
  291. data/lib/rubygems/defaults.rb +32 -36
  292. data/lib/rubygems/dependency.rb +20 -17
  293. data/lib/rubygems/dependency_installer.rb +37 -37
  294. data/lib/rubygems/dependency_list.rb +7 -7
  295. data/lib/rubygems/deprecate.rb +55 -8
  296. data/lib/rubygems/doctor.rb +21 -21
  297. data/lib/rubygems/errors.rb +3 -6
  298. data/lib/rubygems/exceptions.rb +35 -7
  299. data/lib/rubygems/ext/build_error.rb +1 -1
  300. data/lib/rubygems/ext/builder.rb +51 -22
  301. data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +27 -0
  302. data/lib/rubygems/ext/cargo_builder.rb +360 -0
  303. data/lib/rubygems/ext/cmake_builder.rb +2 -2
  304. data/lib/rubygems/ext/configure_builder.rb +1 -1
  305. data/lib/rubygems/ext/ext_conf_builder.rb +35 -59
  306. data/lib/rubygems/ext/rake_builder.rb +3 -3
  307. data/lib/rubygems/ext.rb +7 -6
  308. data/lib/rubygems/gem_runner.rb +12 -16
  309. data/lib/rubygems/gemcutter_utilities.rb +60 -21
  310. data/lib/rubygems/indexer.rb +30 -28
  311. data/lib/rubygems/install_default_message.rb +2 -2
  312. data/lib/rubygems/install_message.rb +2 -2
  313. data/lib/rubygems/install_update_options.rb +70 -61
  314. data/lib/rubygems/installer.rb +135 -87
  315. data/lib/rubygems/installer_uninstaller_utils.rb +2 -2
  316. data/lib/rubygems/local_remote_options.rb +22 -24
  317. data/lib/rubygems/mock_gem_ui.rb +2 -2
  318. data/lib/rubygems/name_tuple.rb +6 -7
  319. data/lib/rubygems/optparse/.document +1 -0
  320. data/lib/rubygems/optparse/COPYING +56 -0
  321. data/lib/rubygems/optparse/lib/optionparser.rb +2 -0
  322. data/lib/rubygems/optparse/lib/optparse/ac.rb +54 -0
  323. data/lib/rubygems/optparse/lib/optparse/date.rb +18 -0
  324. data/lib/rubygems/optparse/lib/optparse/kwargs.rb +22 -0
  325. data/lib/rubygems/optparse/lib/optparse/shellwords.rb +7 -0
  326. data/lib/rubygems/optparse/lib/optparse/time.rb +11 -0
  327. data/lib/rubygems/optparse/lib/optparse/uri.rb +7 -0
  328. data/lib/rubygems/optparse/lib/optparse/version.rb +71 -0
  329. data/lib/rubygems/optparse/lib/optparse.rb +2308 -0
  330. data/lib/rubygems/optparse.rb +3 -0
  331. data/lib/rubygems/package/file_source.rb +2 -2
  332. data/lib/rubygems/package/old.rb +9 -9
  333. data/lib/rubygems/package/tar_header.rb +62 -62
  334. data/lib/rubygems/package/tar_reader/entry.rb +90 -9
  335. data/lib/rubygems/package/tar_reader.rb +1 -29
  336. data/lib/rubygems/package/tar_writer.rb +7 -7
  337. data/lib/rubygems/package.rb +77 -60
  338. data/lib/rubygems/package_task.rb +4 -4
  339. data/lib/rubygems/path_support.rb +1 -6
  340. data/lib/rubygems/platform.rb +94 -61
  341. data/lib/rubygems/psych_tree.rb +1 -1
  342. data/lib/rubygems/query_utils.rb +49 -51
  343. data/lib/rubygems/rdoc.rb +2 -2
  344. data/lib/rubygems/remote_fetcher.rb +27 -27
  345. data/lib/rubygems/request/connection_pools.rb +4 -4
  346. data/lib/rubygems/request/http_pool.rb +1 -1
  347. data/lib/rubygems/request.rb +24 -24
  348. data/lib/rubygems/request_set/gem_dependency_api.rb +122 -123
  349. data/lib/rubygems/request_set/lockfile/parser.rb +26 -26
  350. data/lib/rubygems/request_set/lockfile/tokenizer.rb +4 -4
  351. data/lib/rubygems/request_set/lockfile.rb +9 -9
  352. data/lib/rubygems/request_set.rb +18 -18
  353. data/lib/rubygems/requirement.rb +15 -15
  354. data/lib/rubygems/resolver/activation_request.rb +3 -3
  355. data/lib/rubygems/resolver/api_set.rb +4 -4
  356. data/lib/rubygems/resolver/api_specification.rb +6 -6
  357. data/lib/rubygems/resolver/best_set.rb +5 -5
  358. data/lib/rubygems/resolver/conflict.rb +10 -10
  359. data/lib/rubygems/resolver/dependency_request.rb +2 -2
  360. data/lib/rubygems/resolver/git_set.rb +2 -2
  361. data/lib/rubygems/resolver/git_specification.rb +6 -6
  362. data/lib/rubygems/resolver/index_set.rb +3 -3
  363. data/lib/rubygems/resolver/index_specification.rb +6 -5
  364. data/lib/rubygems/resolver/installed_specification.rb +4 -4
  365. data/lib/rubygems/resolver/installer_set.rb +21 -26
  366. data/lib/rubygems/resolver/local_specification.rb +2 -2
  367. data/lib/rubygems/resolver/lock_set.rb +4 -4
  368. data/lib/rubygems/resolver/lock_specification.rb +4 -4
  369. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +3 -3
  370. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
  371. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  372. data/lib/rubygems/resolver/molinillo.rb +1 -1
  373. data/lib/rubygems/resolver/specification.rb +1 -1
  374. data/lib/rubygems/resolver/stats.rb +1 -1
  375. data/lib/rubygems/resolver/vendor_set.rb +1 -1
  376. data/lib/rubygems/resolver/vendor_specification.rb +3 -3
  377. data/lib/rubygems/resolver.rb +40 -40
  378. data/lib/rubygems/s3_uri_signer.rb +6 -6
  379. data/lib/rubygems/safe_yaml.rb +10 -10
  380. data/lib/rubygems/security/policies.rb +47 -47
  381. data/lib/rubygems/security/policy.rb +19 -21
  382. data/lib/rubygems/security/signer.rb +5 -5
  383. data/lib/rubygems/security/trust_dir.rb +4 -4
  384. data/lib/rubygems/security.rb +37 -43
  385. data/lib/rubygems/security_option.rb +7 -7
  386. data/lib/rubygems/source/git.rb +25 -24
  387. data/lib/rubygems/source/installed.rb +1 -1
  388. data/lib/rubygems/source/local.rb +2 -2
  389. data/lib/rubygems/source/specific_file.rb +1 -1
  390. data/lib/rubygems/source.rb +27 -32
  391. data/lib/rubygems/source_list.rb +5 -9
  392. data/lib/rubygems/spec_fetcher.rb +37 -37
  393. data/lib/rubygems/specification.rb +265 -211
  394. data/lib/rubygems/specification_policy.rb +49 -30
  395. data/lib/rubygems/stub_specification.rb +24 -27
  396. data/lib/rubygems/text.rb +22 -21
  397. data/lib/rubygems/tsort/.document +1 -0
  398. data/lib/rubygems/tsort/LICENSE.txt +22 -0
  399. data/lib/rubygems/tsort/lib/tsort.rb +452 -0
  400. data/lib/rubygems/tsort.rb +3 -0
  401. data/lib/rubygems/uninstaller.rb +29 -26
  402. data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
  403. data/lib/rubygems/update_suggestion.rb +69 -0
  404. data/lib/rubygems/uri.rb +45 -30
  405. data/lib/rubygems/uri_formatter.rb +1 -1
  406. data/lib/rubygems/user_interaction.rb +42 -28
  407. data/lib/rubygems/util/licenses.rb +4 -2
  408. data/lib/rubygems/util.rb +12 -16
  409. data/lib/rubygems/validator.rb +6 -6
  410. data/lib/rubygems/version.rb +28 -17
  411. data/lib/rubygems/version_option.rb +5 -5
  412. data/lib/rubygems.rb +129 -117
  413. data/rubygems-update.gemspec +3 -3
  414. data/setup.rb +11 -16
  415. data/test/rubygems/alternate_cert.pem +14 -14
  416. data/test/rubygems/alternate_cert_32.pem +15 -15
  417. data/test/rubygems/alternate_key.pem +25 -25
  418. data/test/rubygems/bundler_test_gem.rb +419 -0
  419. data/test/rubygems/child_cert.pem +15 -16
  420. data/test/rubygems/child_cert_32.pem +15 -16
  421. data/test/rubygems/child_key.pem +25 -25
  422. data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
  423. data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
  424. data/test/rubygems/encrypted_private_key.pem +26 -26
  425. data/test/rubygems/expired_cert.pem +15 -15
  426. data/test/rubygems/future_cert.pem +15 -15
  427. data/test/rubygems/future_cert_32.pem +15 -15
  428. data/test/rubygems/grandchild_cert.pem +15 -16
  429. data/test/rubygems/grandchild_cert_32.pem +15 -16
  430. data/test/rubygems/grandchild_key.pem +25 -25
  431. data/test/rubygems/helper.rb +237 -207
  432. data/test/rubygems/installer_test_case.rb +13 -13
  433. data/test/rubygems/invalid_issuer_cert.pem +16 -16
  434. data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
  435. data/test/rubygems/invalid_key.pem +25 -25
  436. data/test/rubygems/invalid_signer_cert.pem +15 -15
  437. data/test/rubygems/invalid_signer_cert_32.pem +15 -15
  438. data/test/rubygems/invalidchild_cert.pem +15 -16
  439. data/test/rubygems/invalidchild_cert_32.pem +15 -16
  440. data/test/rubygems/invalidchild_key.pem +25 -25
  441. data/test/rubygems/package/tar_test_case.rb +52 -17
  442. data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
  443. data/test/rubygems/plugin/exception/rubygems_plugin.rb +1 -1
  444. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
  445. data/test/rubygems/private_key.pem +25 -25
  446. data/test/rubygems/public_cert.pem +16 -16
  447. data/test/rubygems/public_cert_32.pem +15 -15
  448. data/test/rubygems/public_key.pem +7 -7
  449. data/test/rubygems/rubygems_plugin.rb +2 -2
  450. data/test/rubygems/simple_gem.rb +1 -1
  451. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +4 -4
  452. data/test/rubygems/test_bundled_ca.rb +11 -11
  453. data/test/rubygems/test_config.rb +5 -5
  454. data/test/rubygems/test_deprecate.rb +3 -3
  455. data/test/rubygems/test_exit.rb +17 -0
  456. data/test/rubygems/test_gem.rb +367 -757
  457. data/test/rubygems/test_gem_available_set.rb +21 -21
  458. data/test/rubygems/test_gem_bundler_version_finder.rb +27 -47
  459. data/test/rubygems/test_gem_command.rb +45 -45
  460. data/test/rubygems/test_gem_command_manager.rb +124 -27
  461. data/test/rubygems/test_gem_commands_build_command.rb +73 -63
  462. data/test/rubygems/test_gem_commands_cert_command.rb +105 -107
  463. data/test/rubygems/test_gem_commands_check_command.rb +4 -4
  464. data/test/rubygems/test_gem_commands_cleanup_command.rb +40 -40
  465. data/test/rubygems/test_gem_commands_contents_command.rb +28 -28
  466. data/test/rubygems/test_gem_commands_dependency_command.rb +36 -36
  467. data/test/rubygems/test_gem_commands_environment_command.rb +38 -14
  468. data/test/rubygems/test_gem_commands_exec_command.rb +851 -0
  469. data/test/rubygems/test_gem_commands_fetch_command.rb +159 -26
  470. data/test/rubygems/test_gem_commands_generate_index_command.rb +7 -7
  471. data/test/rubygems/test_gem_commands_help_command.rb +13 -13
  472. data/test/rubygems/test_gem_commands_info_command.rb +28 -2
  473. data/test/rubygems/test_gem_commands_install_command.rb +200 -132
  474. data/test/rubygems/test_gem_commands_list_command.rb +4 -4
  475. data/test/rubygems/test_gem_commands_lock_command.rb +10 -10
  476. data/test/rubygems/test_gem_commands_mirror.rb +2 -2
  477. data/test/rubygems/test_gem_commands_open_command.rb +5 -5
  478. data/test/rubygems/test_gem_commands_outdated_command.rb +9 -9
  479. data/test/rubygems/test_gem_commands_owner_command.rb +126 -45
  480. data/test/rubygems/test_gem_commands_pristine_command.rb +141 -92
  481. data/test/rubygems/test_gem_commands_push_command.rb +85 -59
  482. data/test/rubygems/test_gem_commands_query_command.rb +73 -73
  483. data/test/rubygems/test_gem_commands_search_command.rb +2 -2
  484. data/test/rubygems/test_gem_commands_server_command.rb +6 -48
  485. data/test/rubygems/test_gem_commands_setup_command.rb +169 -92
  486. data/test/rubygems/test_gem_commands_signin_command.rb +154 -26
  487. data/test/rubygems/test_gem_commands_signout_command.rb +3 -3
  488. data/test/rubygems/test_gem_commands_sources_command.rb +74 -25
  489. data/test/rubygems/test_gem_commands_specification_command.rb +32 -32
  490. data/test/rubygems/test_gem_commands_stale_command.rb +4 -4
  491. data/test/rubygems/test_gem_commands_uninstall_command.rb +99 -82
  492. data/test/rubygems/test_gem_commands_unpack_command.rb +31 -31
  493. data/test/rubygems/test_gem_commands_update_command.rb +202 -91
  494. data/test/rubygems/test_gem_commands_which_command.rb +6 -6
  495. data/test/rubygems/test_gem_commands_yank_command.rb +43 -43
  496. data/test/rubygems/test_gem_config_file.rb +93 -81
  497. data/test/rubygems/test_gem_dependency.rb +78 -80
  498. data/test/rubygems/test_gem_dependency_installer.rb +165 -165
  499. data/test/rubygems/test_gem_dependency_list.rb +47 -47
  500. data/test/rubygems/test_gem_dependency_resolution_error.rb +4 -4
  501. data/test/rubygems/test_gem_doctor.rb +26 -26
  502. data/test/rubygems/test_gem_ext_builder.rb +60 -62
  503. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +1 -0
  504. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +8 -0
  505. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +233 -0
  506. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +10 -0
  507. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +27 -0
  508. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +1 -0
  509. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +1 -0
  510. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +247 -0
  511. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +10 -0
  512. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +8 -0
  513. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +51 -0
  514. data/test/rubygems/test_gem_ext_cargo_builder.rb +166 -0
  515. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +33 -0
  516. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +60 -0
  517. data/test/rubygems/test_gem_ext_cmake_builder.rb +17 -15
  518. data/test/rubygems/test_gem_ext_configure_builder.rb +13 -13
  519. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +53 -50
  520. data/test/rubygems/test_gem_ext_rake_builder.rb +15 -15
  521. data/test/rubygems/test_gem_gem_runner.rb +13 -8
  522. data/test/rubygems/test_gem_gemcutter_utilities.rb +71 -65
  523. data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -4
  524. data/test/rubygems/test_gem_indexer.rb +90 -67
  525. data/test/rubygems/test_gem_install_update_options.rb +18 -18
  526. data/test/rubygems/test_gem_installer.rb +511 -327
  527. data/test/rubygems/test_gem_local_remote_options.rb +10 -10
  528. data/test/rubygems/test_gem_name_tuple.rb +4 -4
  529. data/test/rubygems/test_gem_package.rb +246 -236
  530. data/test/rubygems/test_gem_package_old.rb +13 -13
  531. data/test/rubygems/test_gem_package_tar_header.rb +47 -47
  532. data/test/rubygems/test_gem_package_tar_reader.rb +55 -8
  533. data/test/rubygems/test_gem_package_tar_reader_entry.rb +161 -16
  534. data/test/rubygems/test_gem_package_tar_writer.rb +76 -76
  535. data/test/rubygems/test_gem_package_task.rb +18 -18
  536. data/test/rubygems/test_gem_path_support.rb +15 -19
  537. data/test/rubygems/test_gem_platform.rb +335 -214
  538. data/test/rubygems/test_gem_rdoc.rb +14 -14
  539. data/test/rubygems/test_gem_remote_fetcher.rb +169 -154
  540. data/test/rubygems/test_gem_request.rb +65 -59
  541. data/test/rubygems/test_gem_request_connection_pools.rb +29 -29
  542. data/test/rubygems/test_gem_request_set.rb +100 -100
  543. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +209 -211
  544. data/test/rubygems/test_gem_request_set_lockfile.rb +86 -86
  545. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +58 -58
  546. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +62 -62
  547. data/test/rubygems/test_gem_requirement.rb +47 -42
  548. data/test/rubygems/test_gem_resolver.rb +173 -106
  549. data/test/rubygems/test_gem_resolver_activation_request.rb +6 -6
  550. data/test/rubygems/test_gem_resolver_api_set.rb +33 -33
  551. data/test/rubygems/test_gem_resolver_api_specification.rb +47 -47
  552. data/test/rubygems/test_gem_resolver_best_set.rb +22 -22
  553. data/test/rubygems/test_gem_resolver_composed_set.rb +1 -1
  554. data/test/rubygems/test_gem_resolver_conflict.rb +12 -12
  555. data/test/rubygems/test_gem_resolver_dependency_request.rb +15 -15
  556. data/test/rubygems/test_gem_resolver_git_set.rb +21 -21
  557. data/test/rubygems/test_gem_resolver_git_specification.rb +21 -21
  558. data/test/rubygems/test_gem_resolver_index_set.rb +12 -12
  559. data/test/rubygems/test_gem_resolver_index_specification.rb +16 -16
  560. data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -5
  561. data/test/rubygems/test_gem_resolver_installer_set.rb +79 -35
  562. data/test/rubygems/test_gem_resolver_local_specification.rb +7 -7
  563. data/test/rubygems/test_gem_resolver_lock_set.rb +12 -12
  564. data/test/rubygems/test_gem_resolver_lock_specification.rb +17 -17
  565. data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -1
  566. data/test/rubygems/test_gem_resolver_specification.rb +8 -8
  567. data/test/rubygems/test_gem_resolver_vendor_set.rb +6 -6
  568. data/test/rubygems/test_gem_resolver_vendor_specification.rb +10 -10
  569. data/test/rubygems/test_gem_security.rb +69 -69
  570. data/test/rubygems/test_gem_security_policy.rb +72 -72
  571. data/test/rubygems/test_gem_security_signer.rb +34 -34
  572. data/test/rubygems/test_gem_security_trust_dir.rb +6 -6
  573. data/test/rubygems/test_gem_silent_ui.rb +38 -32
  574. data/test/rubygems/test_gem_source.rb +44 -44
  575. data/test/rubygems/test_gem_source_fetch_problem.rb +9 -9
  576. data/test/rubygems/test_gem_source_git.rb +69 -62
  577. data/test/rubygems/test_gem_source_installed.rb +16 -16
  578. data/test/rubygems/test_gem_source_list.rb +5 -5
  579. data/test/rubygems/test_gem_source_local.rb +14 -14
  580. data/test/rubygems/test_gem_source_lock.rb +31 -31
  581. data/test/rubygems/test_gem_source_specific_file.rb +17 -17
  582. data/test/rubygems/test_gem_source_subpath_problem.rb +7 -7
  583. data/test/rubygems/test_gem_source_vendor.rb +13 -13
  584. data/test/rubygems/test_gem_spec_fetcher.rb +72 -72
  585. data/test/rubygems/test_gem_specification.rb +560 -493
  586. data/test/rubygems/test_gem_stream_ui.rb +20 -20
  587. data/test/rubygems/test_gem_stub_specification.rb +32 -48
  588. data/test/rubygems/test_gem_text.rb +7 -1
  589. data/test/rubygems/test_gem_uninstaller.rb +113 -113
  590. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -3
  591. data/test/rubygems/test_gem_update_suggestion.rb +208 -0
  592. data/test/rubygems/test_gem_uri.rb +4 -4
  593. data/test/rubygems/test_gem_uri_formatter.rb +14 -14
  594. data/test/rubygems/test_gem_util.rb +23 -23
  595. data/test/rubygems/test_gem_validator.rb +8 -8
  596. data/test/rubygems/test_gem_version.rb +27 -16
  597. data/test/rubygems/test_gem_version_option.rb +15 -15
  598. data/test/rubygems/test_kernel.rb +42 -60
  599. data/test/rubygems/test_project_sanity.rb +2 -2
  600. data/test/rubygems/test_remote_fetch_error.rb +6 -6
  601. data/test/rubygems/test_require.rb +132 -174
  602. data/test/rubygems/test_rubygems.rb +42 -12
  603. data/test/rubygems/utilities.rb +59 -37
  604. data/test/rubygems/wrong_key_cert.pem +15 -15
  605. data/test/rubygems/wrong_key_cert_32.pem +15 -15
  606. data/test/test_changelog_generator.rb +1 -0
  607. metadata +97 -41
  608. data/bundler/lib/bundler/dep_proxy.rb +0 -55
  609. data/bundler/lib/bundler/gemdeps.rb +0 -29
  610. data/bundler/lib/bundler/psyched_yaml.rb +0 -22
  611. data/bundler/lib/bundler/templates/gems.rb +0 -8
  612. data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
  613. data/bundler/lib/bundler/vendor/molinillo/LICENSE +0 -9
  614. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
  615. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
  616. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
  617. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
  618. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
  619. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
  620. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
  621. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
  622. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
  623. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
  624. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
  625. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
  626. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -143
  627. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
  628. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
  629. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
  630. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
  631. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
  632. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
  633. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
  634. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
  635. data/bundler/lib/bundler/version_ranges.rb +0 -122
  636. data/lib/rubygems/psych_additions.rb +0 -10
  637. data/lib/rubygems/server.rb +0 -882
  638. data/test/rubygems/bogussources.rb +0 -9
  639. data/test/rubygems/data/null-type.gemspec.rz +0 -0
  640. data/test/rubygems/test_gem_server.rb +0 -608
  641. /data/bundler/lib/bundler/templates/newgem/ext/newgem/{extconf.rb.tt → extconf-c.rb.tt} +0 -0
@@ -1,15 +1,15 @@
1
1
  # frozen_string_literal: true
2
- require_relative 'helper'
2
+ require_relative "helper"
3
3
 
4
- require 'webrick'
5
- require 'webrick/https' if Gem::HAVE_OPENSSL
4
+ require "webrick"
5
+ require "webrick/https" if Gem::HAVE_OPENSSL
6
6
 
7
7
  unless Gem::HAVE_OPENSSL
8
- warn 'Skipping Gem::RemoteFetcher tests. openssl not found.'
8
+ warn "Skipping Gem::RemoteFetcher tests. openssl not found."
9
9
  end
10
10
 
11
- require 'rubygems/remote_fetcher'
12
- require 'rubygems/package'
11
+ require "rubygems/remote_fetcher"
12
+ require "rubygems/package"
13
13
 
14
14
  # = Testing Proxy Settings
15
15
  #
@@ -28,7 +28,7 @@ require 'rubygems/package'
28
28
  class TestGemRemoteFetcher < Gem::TestCase
29
29
  include Gem::DefaultUserInteraction
30
30
 
31
- SERVER_DATA = <<-EOY.freeze
31
+ SERVER_DATA = <<-EOY
32
32
  --- !ruby/object:Gem::Cache
33
33
  gems:
34
34
  rake-0.4.11: !ruby/object:Gem::Specification
@@ -69,7 +69,7 @@ gems:
69
69
  dependencies: []
70
70
  EOY
71
71
 
72
- PROXY_DATA = SERVER_DATA.gsub(/0.4.11/, '0.4.2')
72
+ PROXY_DATA = SERVER_DATA.gsub(/0.4.11/, "0.4.2")
73
73
 
74
74
  # Generated via:
75
75
  # x = OpenSSL::PKey::DH.new(2048) # wait a while...
@@ -104,11 +104,11 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
104
104
  @cache_dir = File.join @gemhome, "cache"
105
105
 
106
106
  # TODO: why does the remote fetcher need it written to disk?
107
- @a1, @a1_gem = util_gem 'a', '1' do |s|
108
- s.executables << 'a_bin'
107
+ @a1, @a1_gem = util_gem "a", "1" do |s|
108
+ s.executables << "a_bin"
109
109
  end
110
110
 
111
- @a1.loaded_from = File.join(@gemhome, 'specifications', @a1.full_name)
111
+ @a1.loaded_from = File.join(@gemhome, "specifications", @a1.full_name)
112
112
 
113
113
  Gem::RemoteFetcher.fetcher = nil
114
114
  @stub_ui = Gem::MockGemUi.new
@@ -130,7 +130,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
130
130
  end
131
131
 
132
132
  def test_self_fetcher_with_proxy
133
- proxy_uri = 'http://proxy.example.com'
133
+ proxy_uri = "http://proxy.example.com"
134
134
  Gem.configuration[:http_proxy] = proxy_uri
135
135
  Gem::RemoteFetcher.fetcher = nil
136
136
 
@@ -149,39 +149,54 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
149
149
  @fetcher.fetch_path("gems.example.com/yaml", nil, true)
150
150
  end
151
151
 
152
- assert_equal 'uri scheme is invalid: nil', e.message
152
+ assert_equal "uri scheme is invalid: nil", e.message
153
153
  end
154
154
 
155
155
  def test_no_proxy
156
156
  use_ui @stub_ui do
157
157
  assert_data_from_server @fetcher.fetch_path(@server_uri)
158
158
  response = @fetcher.fetch_path(@server_uri, nil, true)
159
- assert_equal SERVER_DATA.size, response['content-length'].to_i
159
+ assert_equal SERVER_DATA.size, response["content-length"].to_i
160
160
  end
161
161
  end
162
162
 
163
163
  def test_cache_update_path
164
- uri = URI 'http://example/file'
165
- path = File.join @tempdir, 'file'
164
+ uri = URI "http://example/file"
165
+ path = File.join @tempdir, "file"
166
166
 
167
- fetcher = util_fuck_with_fetcher 'hello'
167
+ fetcher = util_fuck_with_fetcher "hello"
168
168
 
169
169
  data = fetcher.cache_update_path uri, path
170
170
 
171
- assert_equal 'hello', data
171
+ assert_equal "hello", data
172
172
 
173
- assert_equal 'hello', File.read(path)
173
+ assert_equal "hello", File.read(path)
174
+ end
175
+
176
+ def test_cache_update_path_with_utf8_internal_encoding
177
+ with_internal_encoding("UTF-8") do
178
+ uri = URI "http://example/file"
179
+ path = File.join @tempdir, "file"
180
+ data = String.new("\xC8").force_encoding(Encoding::BINARY)
181
+
182
+ fetcher = util_fuck_with_fetcher data
183
+
184
+ written_data = fetcher.cache_update_path uri, path
185
+
186
+ assert_equal data, written_data
187
+ assert_equal data, File.binread(path)
188
+ end
174
189
  end
175
190
 
176
191
  def test_cache_update_path_no_update
177
- uri = URI 'http://example/file'
178
- path = File.join @tempdir, 'file'
192
+ uri = URI "http://example/file"
193
+ path = File.join @tempdir, "file"
179
194
 
180
- fetcher = util_fuck_with_fetcher 'hello'
195
+ fetcher = util_fuck_with_fetcher "hello"
181
196
 
182
197
  data = fetcher.cache_update_path uri, path, false
183
198
 
184
- assert_equal 'hello', data
199
+ assert_equal "hello", data
185
200
 
186
201
  assert_path_not_exist path
187
202
  end
@@ -204,7 +219,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
204
219
  @test_data
205
220
  end
206
221
 
207
- raise Gem::RemoteFetcher::FetchError.new("haha!", '')
222
+ raise Gem::RemoteFetcher::FetchError.new("haha!", "")
208
223
  end
209
224
  end
210
225
 
@@ -213,14 +228,14 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
213
228
 
214
229
  def test_download
215
230
  a1_data = nil
216
- File.open @a1_gem, 'rb' do |fp|
231
+ File.open @a1_gem, "rb" do |fp|
217
232
  a1_data = fp.read
218
233
  end
219
234
 
220
235
  fetcher = util_fuck_with_fetcher a1_data
221
236
 
222
237
  a1_cache_gem = @a1.cache_file
223
- assert_equal a1_cache_gem, fetcher.download(@a1, 'http://gems.example.com')
238
+ assert_equal a1_cache_gem, fetcher.download(@a1, "http://gems.example.com")
224
239
  assert_equal("http://gems.example.com/gems/a-1.gem",
225
240
  fetcher.instance_variable_get(:@test_arg).to_s)
226
241
  assert File.exist?(a1_cache_gem)
@@ -228,14 +243,14 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
228
243
 
229
244
  def test_download_with_auth
230
245
  a1_data = nil
231
- File.open @a1_gem, 'rb' do |fp|
246
+ File.open @a1_gem, "rb" do |fp|
232
247
  a1_data = fp.read
233
248
  end
234
249
 
235
250
  fetcher = util_fuck_with_fetcher a1_data
236
251
 
237
252
  a1_cache_gem = @a1.cache_file
238
- assert_equal a1_cache_gem, fetcher.download(@a1, 'http://user:password@gems.example.com')
253
+ assert_equal a1_cache_gem, fetcher.download(@a1, "http://user:password@gems.example.com")
239
254
  assert_equal("http://user:password@gems.example.com/gems/a-1.gem",
240
255
  fetcher.instance_variable_get(:@test_arg).to_s)
241
256
  assert File.exist?(a1_cache_gem)
@@ -243,14 +258,14 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
243
258
 
244
259
  def test_download_with_token
245
260
  a1_data = nil
246
- File.open @a1_gem, 'rb' do |fp|
261
+ File.open @a1_gem, "rb" do |fp|
247
262
  a1_data = fp.read
248
263
  end
249
264
 
250
265
  fetcher = util_fuck_with_fetcher a1_data
251
266
 
252
267
  a1_cache_gem = @a1.cache_file
253
- assert_equal a1_cache_gem, fetcher.download(@a1, 'http://token@gems.example.com')
268
+ assert_equal a1_cache_gem, fetcher.download(@a1, "http://token@gems.example.com")
254
269
  assert_equal("http://token@gems.example.com/gems/a-1.gem",
255
270
  fetcher.instance_variable_get(:@test_arg).to_s)
256
271
  assert File.exist?(a1_cache_gem)
@@ -258,14 +273,14 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
258
273
 
259
274
  def test_download_with_x_oauth_basic
260
275
  a1_data = nil
261
- File.open @a1_gem, 'rb' do |fp|
276
+ File.open @a1_gem, "rb" do |fp|
262
277
  a1_data = fp.read
263
278
  end
264
279
 
265
280
  fetcher = util_fuck_with_fetcher a1_data
266
281
 
267
282
  a1_cache_gem = @a1.cache_file
268
- assert_equal a1_cache_gem, fetcher.download(@a1, 'http://token:x-oauth-basic@gems.example.com')
283
+ assert_equal a1_cache_gem, fetcher.download(@a1, "http://token:x-oauth-basic@gems.example.com")
269
284
  assert_equal("http://token:x-oauth-basic@gems.example.com/gems/a-1.gem",
270
285
  fetcher.instance_variable_get(:@test_arg).to_s)
271
286
  assert File.exist?(a1_cache_gem)
@@ -273,14 +288,14 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
273
288
 
274
289
  def test_download_with_encoded_auth
275
290
  a1_data = nil
276
- File.open @a1_gem, 'rb' do |fp|
291
+ File.open @a1_gem, "rb" do |fp|
277
292
  a1_data = fp.read
278
293
  end
279
294
 
280
295
  fetcher = util_fuck_with_fetcher a1_data
281
296
 
282
297
  a1_cache_gem = @a1.cache_file
283
- assert_equal a1_cache_gem, fetcher.download(@a1, 'http://user:%25pas%25sword@gems.example.com')
298
+ assert_equal a1_cache_gem, fetcher.download(@a1, "http://user:%25pas%25sword@gems.example.com")
284
299
  assert_equal("http://user:%25pas%25sword@gems.example.com/gems/a-1.gem",
285
300
  fetcher.instance_variable_get(:@test_arg).to_s)
286
301
  assert File.exist?(a1_cache_gem)
@@ -291,7 +306,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
291
306
 
292
307
  inst = Gem::RemoteFetcher.fetcher
293
308
 
294
- assert_equal @a1.cache_file, inst.download(@a1, 'http://gems.example.com')
309
+ assert_equal @a1.cache_file, inst.download(@a1, "http://gems.example.com")
295
310
  end
296
311
 
297
312
  def test_download_local
@@ -307,7 +322,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
307
322
  end
308
323
 
309
324
  def test_download_local_space
310
- space_path = File.join @tempdir, 'space path'
325
+ space_path = File.join @tempdir, "space path"
311
326
  FileUtils.mkdir space_path
312
327
  FileUtils.mv @a1_gem, space_path
313
328
  local_path = File.join space_path, @a1.file_name
@@ -321,17 +336,17 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
321
336
  end
322
337
 
323
338
  def test_download_install_dir
324
- a1_data = File.open @a1_gem, 'rb' do |fp|
339
+ a1_data = File.open @a1_gem, "rb" do |fp|
325
340
  fp.read
326
341
  end
327
342
 
328
343
  fetcher = util_fuck_with_fetcher a1_data
329
344
 
330
- install_dir = File.join @tempdir, 'more_gems'
345
+ install_dir = File.join @tempdir, "more_gems"
331
346
 
332
347
  a1_cache_gem = File.join install_dir, "cache", @a1.file_name
333
348
  FileUtils.mkdir_p(File.dirname(a1_cache_gem))
334
- actual = fetcher.download(@a1, 'http://gems.example.com', install_dir)
349
+ actual = fetcher.download(@a1, "http://gems.example.com", install_dir)
335
350
 
336
351
  assert_equal a1_cache_gem, actual
337
352
  assert_equal("http://gems.example.com/gems/a-1.gem",
@@ -365,7 +380,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
365
380
  FileUtils.chmod 0555, @gemhome
366
381
 
367
382
  fetcher = util_fuck_with_fetcher File.read(@a1_gem)
368
- fetcher.download(@a1, 'http://gems.example.com')
383
+ fetcher.download(@a1, "http://gems.example.com")
369
384
  a1_cache_gem = File.join Gem.user_dir, "cache", @a1.file_name
370
385
  assert File.exist? a1_cache_gem
371
386
  ensure
@@ -375,16 +390,16 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
375
390
  end
376
391
 
377
392
  def test_download_platform_legacy
378
- original_platform = 'old-platform'
393
+ original_platform = "old-platform"
379
394
 
380
- e1, e1_gem = util_gem 'e', '1' do |s|
395
+ e1, e1_gem = util_gem "e", "1" do |s|
381
396
  s.platform = Gem::Platform::CURRENT
382
397
  s.instance_variable_set :@original_platform, original_platform
383
398
  end
384
- e1.loaded_from = File.join(@gemhome, 'specifications', e1.full_name)
399
+ e1.loaded_from = File.join(@gemhome, "specifications", e1.full_name)
385
400
 
386
401
  e1_data = nil
387
- File.open e1_gem, 'rb' do |fp|
402
+ File.open e1_gem, "rb" do |fp|
388
403
  e1_data = fp.read
389
404
  end
390
405
 
@@ -392,7 +407,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
392
407
 
393
408
  e1_cache_gem = e1.cache_file
394
409
 
395
- assert_equal e1_cache_gem, fetcher.download(e1, 'http://gems.example.com')
410
+ assert_equal e1_cache_gem, fetcher.download(e1, "http://gems.example.com")
396
411
 
397
412
  assert_equal("http://gems.example.com/gems/#{e1.original_name}.gem",
398
413
  fetcher.instance_variable_get(:@test_arg).to_s)
@@ -420,14 +435,14 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
420
435
  inst = Gem::RemoteFetcher.fetcher
421
436
 
422
437
  e = assert_raise ArgumentError do
423
- inst.download @a1, 'ftp://gems.rubyforge.org'
438
+ inst.download @a1, "ftp://gems.rubyforge.org"
424
439
  end
425
440
 
426
- assert_equal 'unsupported URI scheme ftp', e.message
441
+ assert_equal "unsupported URI scheme ftp", e.message
427
442
  end
428
443
 
429
444
  def test_download_to_cache
430
- @a2, @a2_gem = util_gem 'a', '2'
445
+ @a2, @a2_gem = util_gem "a", "2"
431
446
 
432
447
  util_setup_spec_fetcher @a1, @a2
433
448
  @fetcher.instance_variable_set :@a1, @a1
@@ -443,7 +458,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
443
458
  end
444
459
  end
445
460
 
446
- gem = Gem::RemoteFetcher.fetcher.download_to_cache dep 'a'
461
+ gem = Gem::RemoteFetcher.fetcher.download_to_cache dep "a"
447
462
 
448
463
  assert_equal @a2.file_name, File.basename(gem)
449
464
  end
@@ -453,10 +468,10 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
453
468
  @fetcher = fetcher
454
469
 
455
470
  def fetcher.fetch_http(uri, mtime, head = nil)
456
- Gem::Util.gzip 'foo'
471
+ Gem::Util.gzip "foo"
457
472
  end
458
473
 
459
- assert_equal 'foo', fetcher.fetch_path(@uri + 'foo.gz')
474
+ assert_equal "foo", fetcher.fetch_path(@uri + "foo.gz")
460
475
  end
461
476
 
462
477
  def test_fetch_path_gzip_unmodified
@@ -467,7 +482,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
467
482
  nil
468
483
  end
469
484
 
470
- assert_nil fetcher.fetch_path(@uri + 'foo.gz', Time.at(0))
485
+ assert_nil fetcher.fetch_path(@uri + "foo.gz", Time.at(0))
471
486
  end
472
487
 
473
488
  def test_fetch_path_io_error
@@ -478,7 +493,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
478
493
  raise EOFError
479
494
  end
480
495
 
481
- url = 'http://example.com/uri'
496
+ url = "http://example.com/uri"
482
497
 
483
498
  e = assert_raise Gem::RemoteFetcher::FetchError do
484
499
  fetcher.fetch_path url
@@ -496,7 +511,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
496
511
  raise SocketError
497
512
  end
498
513
 
499
- url = 'http://example.com/uri'
514
+ url = "http://example.com/uri"
500
515
 
501
516
  e = assert_raise Gem::RemoteFetcher::FetchError do
502
517
  fetcher.fetch_path url
@@ -511,10 +526,10 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
511
526
  @fetcher = fetcher
512
527
 
513
528
  def fetcher.fetch_http(uri, mtime = nil, head = nil)
514
- raise Errno::ECONNREFUSED, 'connect(2)'
529
+ raise Errno::ECONNREFUSED, "connect(2)"
515
530
  end
516
531
 
517
- url = 'http://example.com/uri'
532
+ url = "http://example.com/uri"
518
533
 
519
534
  e = assert_raise Gem::RemoteFetcher::FetchError do
520
535
  fetcher.fetch_path url
@@ -530,10 +545,10 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
530
545
  @fetcher = fetcher
531
546
 
532
547
  def fetcher.fetch_http(uri, mtime = nil, head = nil)
533
- raise Timeout::Error, 'timed out'
548
+ raise Timeout::Error, "timed out"
534
549
  end
535
550
 
536
- url = 'http://example.com/uri'
551
+ url = "http://example.com/uri"
537
552
 
538
553
  e = assert_raise Gem::RemoteFetcher::FetchError do
539
554
  fetcher.fetch_path url
@@ -549,10 +564,10 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
549
564
  @fetcher = fetcher
550
565
 
551
566
  def fetcher.fetch_http(uri, mtime = nil, head = nil)
552
- raise SocketError, 'getaddrinfo: nodename nor servname provided'
567
+ raise SocketError, "getaddrinfo: nodename nor servname provided"
553
568
  end
554
569
 
555
- url = 'http://example.com/uri'
570
+ url = "http://example.com/uri"
556
571
 
557
572
  e = assert_raise Gem::RemoteFetcher::FetchError do
558
573
  fetcher.fetch_path url
@@ -571,7 +586,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
571
586
  raise OpenSSL::SSL::SSLError
572
587
  end
573
588
 
574
- url = 'http://example.com/uri'
589
+ url = "http://example.com/uri"
575
590
 
576
591
  e = assert_raise Gem::RemoteFetcher::FetchError do
577
592
  fetcher.fetch_path url
@@ -594,7 +609,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
594
609
 
595
610
  def test_implicit_no_proxy
596
611
  use_ui @stub_ui do
597
- ENV['http_proxy'] = 'http://fakeurl:12345'
612
+ ENV["http_proxy"] = "http://fakeurl:12345"
598
613
  fetcher = Gem::RemoteFetcher.new :no_proxy
599
614
  @fetcher = fetcher
600
615
  assert_data_from_server fetcher.fetch_path(@server_uri)
@@ -603,7 +618,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
603
618
 
604
619
  def test_implicit_proxy
605
620
  use_ui @stub_ui do
606
- ENV['http_proxy'] = @proxy_uri
621
+ ENV["http_proxy"] = @proxy_uri
607
622
  fetcher = Gem::RemoteFetcher.new nil
608
623
  @fetcher = fetcher
609
624
  assert_data_from_proxy fetcher.fetch_path(@server_uri)
@@ -612,7 +627,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
612
627
 
613
628
  def test_implicit_upper_case_proxy
614
629
  use_ui @stub_ui do
615
- ENV['HTTP_PROXY'] = @proxy_uri
630
+ ENV["HTTP_PROXY"] = @proxy_uri
616
631
  fetcher = Gem::RemoteFetcher.new nil
617
632
  @fetcher = fetcher
618
633
  assert_data_from_proxy fetcher.fetch_path(@server_uri)
@@ -630,36 +645,36 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
630
645
  def test_fetch_http
631
646
  fetcher = Gem::RemoteFetcher.new nil
632
647
  @fetcher = fetcher
633
- url = 'http://gems.example.com/redirect'
648
+ url = "http://gems.example.com/redirect"
634
649
 
635
650
  def fetcher.request(uri, request_class, last_modified = nil)
636
- url = 'http://gems.example.com/redirect'
651
+ url = "http://gems.example.com/redirect"
637
652
  unless defined? @requested
638
653
  @requested = true
639
654
  res = Net::HTTPMovedPermanently.new nil, 301, nil
640
- res.add_field 'Location', url
655
+ res.add_field "Location", url
641
656
  res
642
657
  else
643
658
  res = Net::HTTPOK.new nil, 200, nil
644
- def res.body() 'real_path' end
659
+ def res.body() "real_path" end
645
660
  res
646
661
  end
647
662
  end
648
663
 
649
664
  data = fetcher.fetch_http URI.parse(url)
650
665
 
651
- assert_equal 'real_path', data
666
+ assert_equal "real_path", data
652
667
  end
653
668
 
654
669
  def test_fetch_http_redirects
655
670
  fetcher = Gem::RemoteFetcher.new nil
656
671
  @fetcher = fetcher
657
- url = 'http://gems.example.com/redirect'
672
+ url = "http://gems.example.com/redirect"
658
673
 
659
674
  def fetcher.request(uri, request_class, last_modified = nil)
660
- url = 'http://gems.example.com/redirect'
675
+ url = "http://gems.example.com/redirect"
661
676
  res = Net::HTTPMovedPermanently.new nil, 301, nil
662
- res.add_field 'Location', url
677
+ res.add_field "Location", url
663
678
  res
664
679
  end
665
680
 
@@ -673,7 +688,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
673
688
  def test_fetch_http_redirects_without_location
674
689
  fetcher = Gem::RemoteFetcher.new nil
675
690
  @fetcher = fetcher
676
- url = 'http://gems.example.com/redirect'
691
+ url = "http://gems.example.com/redirect"
677
692
 
678
693
  def fetcher.request(uri, request_class, last_modified = nil)
679
694
  res = Net::HTTPMovedPermanently.new nil, 301, nil
@@ -690,12 +705,12 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
690
705
  def test_fetch_http_with_additional_headers
691
706
  ENV["http_proxy"] = @proxy_uri
692
707
  ENV["no_proxy"] = URI::parse(@server_uri).host
693
- fetcher = Gem::RemoteFetcher.new nil, nil, {"X-Captain" => "murphy"}
708
+ fetcher = Gem::RemoteFetcher.new nil, nil, { "X-Captain" => "murphy" }
694
709
  @fetcher = fetcher
695
710
  assert_equal "murphy", fetcher.fetch_path(@server_uri)
696
711
  end
697
712
 
698
- def assert_fetch_s3(url, signature, token=nil, region='us-east-1', instance_profile_json=nil)
713
+ def assert_fetch_s3(url, signature, token=nil, region="us-east-1", instance_profile_json=nil)
699
714
  fetcher = Gem::RemoteFetcher.new nil
700
715
  @fetcher = fetcher
701
716
  $fetched_uri = nil
@@ -704,12 +719,12 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
704
719
  def fetcher.request(uri, request_class, last_modified = nil)
705
720
  $fetched_uri = uri
706
721
  res = Net::HTTPOK.new nil, 200, nil
707
- def res.body() 'success' end
722
+ def res.body() "success" end
708
723
  res
709
724
  end
710
725
 
711
726
  def fetcher.s3_uri_signer(uri)
712
- require 'json'
727
+ require "json"
713
728
  s3_uri_signer = Gem::S3URISigner.new(uri)
714
729
  def s3_uri_signer.ec2_metadata_credentials_json
715
730
  JSON.parse($instance_profile)
@@ -723,18 +738,18 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
723
738
  data = fetcher.fetch_s3 URI.parse(url)
724
739
 
725
740
  assert_equal "https://my-bucket.s3.#{region}.amazonaws.com/gems/specs.4.8.gz?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=testuser%2F20190624%2F#{region}%2Fs3%2Faws4_request&X-Amz-Date=20190624T050641Z&X-Amz-Expires=86400#{token ? "&X-Amz-Security-Token=" + token : ""}&X-Amz-SignedHeaders=host&X-Amz-Signature=#{signature}", $fetched_uri.to_s
726
- assert_equal 'success', data
741
+ assert_equal "success", data
727
742
  ensure
728
743
  $fetched_uri = nil
729
744
  end
730
745
 
731
746
  def test_fetch_s3_config_creds
732
747
  Gem.configuration[:s3_source] = {
733
- 'my-bucket' => {:id => 'testuser', :secret => 'testpass'},
748
+ "my-bucket" => { :id => "testuser", :secret => "testpass" },
734
749
  }
735
- url = 's3://my-bucket/gems/specs.4.8.gz'
750
+ url = "s3://my-bucket/gems/specs.4.8.gz"
736
751
  Time.stub :now, Time.at(1561353581) do
737
- assert_fetch_s3 url, '20f974027db2f3cd6193565327a7c73457a138efb1a63ea248d185ce6827d41b'
752
+ assert_fetch_s3 url, "20f974027db2f3cd6193565327a7c73457a138efb1a63ea248d185ce6827d41b"
738
753
  end
739
754
  ensure
740
755
  Gem.configuration[:s3_source] = nil
@@ -742,11 +757,11 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
742
757
 
743
758
  def test_fetch_s3_config_creds_with_region
744
759
  Gem.configuration[:s3_source] = {
745
- 'my-bucket' => {:id => 'testuser', :secret => 'testpass', :region => 'us-west-2'},
760
+ "my-bucket" => { :id => "testuser", :secret => "testpass", :region => "us-west-2" },
746
761
  }
747
- url = 's3://my-bucket/gems/specs.4.8.gz'
762
+ url = "s3://my-bucket/gems/specs.4.8.gz"
748
763
  Time.stub :now, Time.at(1561353581) do
749
- assert_fetch_s3 url, '4afc3010757f1fd143e769f1d1dabd406476a4fc7c120e9884fd02acbb8f26c9', nil, 'us-west-2'
764
+ assert_fetch_s3 url, "4afc3010757f1fd143e769f1d1dabd406476a4fc7c120e9884fd02acbb8f26c9", nil, "us-west-2"
750
765
  end
751
766
  ensure
752
767
  Gem.configuration[:s3_source] = nil
@@ -754,79 +769,79 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
754
769
 
755
770
  def test_fetch_s3_config_creds_with_token
756
771
  Gem.configuration[:s3_source] = {
757
- 'my-bucket' => {:id => 'testuser', :secret => 'testpass', :security_token => 'testtoken'},
772
+ "my-bucket" => { :id => "testuser", :secret => "testpass", :security_token => "testtoken" },
758
773
  }
759
- url = 's3://my-bucket/gems/specs.4.8.gz'
774
+ url = "s3://my-bucket/gems/specs.4.8.gz"
760
775
  Time.stub :now, Time.at(1561353581) do
761
- assert_fetch_s3 url, '935160a427ef97e7630f799232b8f208c4a4e49aad07d0540572a2ad5fe9f93c', 'testtoken'
776
+ assert_fetch_s3 url, "935160a427ef97e7630f799232b8f208c4a4e49aad07d0540572a2ad5fe9f93c", "testtoken"
762
777
  end
763
778
  ensure
764
779
  Gem.configuration[:s3_source] = nil
765
780
  end
766
781
 
767
782
  def test_fetch_s3_env_creds
768
- ENV['AWS_ACCESS_KEY_ID'] = 'testuser'
769
- ENV['AWS_SECRET_ACCESS_KEY'] = 'testpass'
770
- ENV['AWS_SESSION_TOKEN'] = nil
783
+ ENV["AWS_ACCESS_KEY_ID"] = "testuser"
784
+ ENV["AWS_SECRET_ACCESS_KEY"] = "testpass"
785
+ ENV["AWS_SESSION_TOKEN"] = nil
771
786
  Gem.configuration[:s3_source] = {
772
- 'my-bucket' => {:provider => 'env'},
787
+ "my-bucket" => { :provider => "env" },
773
788
  }
774
- url = 's3://my-bucket/gems/specs.4.8.gz'
789
+ url = "s3://my-bucket/gems/specs.4.8.gz"
775
790
  Time.stub :now, Time.at(1561353581) do
776
- assert_fetch_s3 url, '20f974027db2f3cd6193565327a7c73457a138efb1a63ea248d185ce6827d41b'
791
+ assert_fetch_s3 url, "20f974027db2f3cd6193565327a7c73457a138efb1a63ea248d185ce6827d41b"
777
792
  end
778
793
  ensure
779
- ENV.each_key {|key| ENV.delete(key) if key.start_with?('AWS') }
794
+ ENV.each_key {|key| ENV.delete(key) if key.start_with?("AWS") }
780
795
  Gem.configuration[:s3_source] = nil
781
796
  end
782
797
 
783
798
  def test_fetch_s3_env_creds_with_region
784
- ENV['AWS_ACCESS_KEY_ID'] = 'testuser'
785
- ENV['AWS_SECRET_ACCESS_KEY'] = 'testpass'
786
- ENV['AWS_SESSION_TOKEN'] = nil
799
+ ENV["AWS_ACCESS_KEY_ID"] = "testuser"
800
+ ENV["AWS_SECRET_ACCESS_KEY"] = "testpass"
801
+ ENV["AWS_SESSION_TOKEN"] = nil
787
802
  Gem.configuration[:s3_source] = {
788
- 'my-bucket' => {:provider => 'env', :region => 'us-west-2'},
803
+ "my-bucket" => { :provider => "env", :region => "us-west-2" },
789
804
  }
790
- url = 's3://my-bucket/gems/specs.4.8.gz'
805
+ url = "s3://my-bucket/gems/specs.4.8.gz"
791
806
  Time.stub :now, Time.at(1561353581) do
792
- assert_fetch_s3 url, '4afc3010757f1fd143e769f1d1dabd406476a4fc7c120e9884fd02acbb8f26c9', nil, 'us-west-2'
807
+ assert_fetch_s3 url, "4afc3010757f1fd143e769f1d1dabd406476a4fc7c120e9884fd02acbb8f26c9", nil, "us-west-2"
793
808
  end
794
809
  ensure
795
- ENV.each_key {|key| ENV.delete(key) if key.start_with?('AWS') }
810
+ ENV.each_key {|key| ENV.delete(key) if key.start_with?("AWS") }
796
811
  Gem.configuration[:s3_source] = nil
797
812
  end
798
813
 
799
814
  def test_fetch_s3_env_creds_with_token
800
- ENV['AWS_ACCESS_KEY_ID'] = 'testuser'
801
- ENV['AWS_SECRET_ACCESS_KEY'] = 'testpass'
802
- ENV['AWS_SESSION_TOKEN'] = 'testtoken'
815
+ ENV["AWS_ACCESS_KEY_ID"] = "testuser"
816
+ ENV["AWS_SECRET_ACCESS_KEY"] = "testpass"
817
+ ENV["AWS_SESSION_TOKEN"] = "testtoken"
803
818
  Gem.configuration[:s3_source] = {
804
- 'my-bucket' => {:provider => 'env'},
819
+ "my-bucket" => { :provider => "env" },
805
820
  }
806
- url = 's3://my-bucket/gems/specs.4.8.gz'
821
+ url = "s3://my-bucket/gems/specs.4.8.gz"
807
822
  Time.stub :now, Time.at(1561353581) do
808
- assert_fetch_s3 url, '935160a427ef97e7630f799232b8f208c4a4e49aad07d0540572a2ad5fe9f93c', 'testtoken'
823
+ assert_fetch_s3 url, "935160a427ef97e7630f799232b8f208c4a4e49aad07d0540572a2ad5fe9f93c", "testtoken"
809
824
  end
810
825
  ensure
811
- ENV.each_key {|key| ENV.delete(key) if key.start_with?('AWS') }
826
+ ENV.each_key {|key| ENV.delete(key) if key.start_with?("AWS") }
812
827
  Gem.configuration[:s3_source] = nil
813
828
  end
814
829
 
815
830
  def test_fetch_s3_url_creds
816
- url = 's3://testuser:testpass@my-bucket/gems/specs.4.8.gz'
831
+ url = "s3://testuser:testpass@my-bucket/gems/specs.4.8.gz"
817
832
  Time.stub :now, Time.at(1561353581) do
818
- assert_fetch_s3 url, '20f974027db2f3cd6193565327a7c73457a138efb1a63ea248d185ce6827d41b'
833
+ assert_fetch_s3 url, "20f974027db2f3cd6193565327a7c73457a138efb1a63ea248d185ce6827d41b"
819
834
  end
820
835
  end
821
836
 
822
837
  def test_fetch_s3_instance_profile_creds
823
838
  Gem.configuration[:s3_source] = {
824
- 'my-bucket' => {:provider => 'instance_profile'},
839
+ "my-bucket" => { :provider => "instance_profile" },
825
840
  }
826
841
 
827
- url = 's3://my-bucket/gems/specs.4.8.gz'
842
+ url = "s3://my-bucket/gems/specs.4.8.gz"
828
843
  Time.stub :now, Time.at(1561353581) do
829
- assert_fetch_s3 url, '20f974027db2f3cd6193565327a7c73457a138efb1a63ea248d185ce6827d41b', nil, 'us-east-1',
844
+ assert_fetch_s3 url, "20f974027db2f3cd6193565327a7c73457a138efb1a63ea248d185ce6827d41b", nil, "us-east-1",
830
845
  '{"AccessKeyId": "testuser", "SecretAccessKey": "testpass"}'
831
846
  end
832
847
  ensure
@@ -835,12 +850,12 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
835
850
 
836
851
  def test_fetch_s3_instance_profile_creds_with_region
837
852
  Gem.configuration[:s3_source] = {
838
- 'my-bucket' => {:provider => 'instance_profile', :region => 'us-west-2'},
853
+ "my-bucket" => { :provider => "instance_profile", :region => "us-west-2" },
839
854
  }
840
855
 
841
- url = 's3://my-bucket/gems/specs.4.8.gz'
856
+ url = "s3://my-bucket/gems/specs.4.8.gz"
842
857
  Time.stub :now, Time.at(1561353581) do
843
- assert_fetch_s3 url, '4afc3010757f1fd143e769f1d1dabd406476a4fc7c120e9884fd02acbb8f26c9', nil, 'us-west-2',
858
+ assert_fetch_s3 url, "4afc3010757f1fd143e769f1d1dabd406476a4fc7c120e9884fd02acbb8f26c9", nil, "us-west-2",
844
859
  '{"AccessKeyId": "testuser", "SecretAccessKey": "testpass"}'
845
860
  end
846
861
  ensure
@@ -849,12 +864,12 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
849
864
 
850
865
  def test_fetch_s3_instance_profile_creds_with_token
851
866
  Gem.configuration[:s3_source] = {
852
- 'my-bucket' => {:provider => 'instance_profile'},
867
+ "my-bucket" => { :provider => "instance_profile" },
853
868
  }
854
869
 
855
- url = 's3://my-bucket/gems/specs.4.8.gz'
870
+ url = "s3://my-bucket/gems/specs.4.8.gz"
856
871
  Time.stub :now, Time.at(1561353581) do
857
- assert_fetch_s3 url, '935160a427ef97e7630f799232b8f208c4a4e49aad07d0540572a2ad5fe9f93c', 'testtoken', 'us-east-1',
872
+ assert_fetch_s3 url, "935160a427ef97e7630f799232b8f208c4a4e49aad07d0540572a2ad5fe9f93c", "testtoken", "us-east-1",
858
873
  '{"AccessKeyId": "testuser", "SecretAccessKey": "testpass", "Token": "testtoken"}'
859
874
  end
860
875
  ensure
@@ -873,35 +888,35 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
873
888
  end
874
889
 
875
890
  def test_fetch_s3_no_source_key
876
- url = 's3://my-bucket/gems/specs.4.8.gz'
877
- refute_fetch_s3 url, 'no s3_source key exists in .gemrc'
891
+ url = "s3://my-bucket/gems/specs.4.8.gz"
892
+ refute_fetch_s3 url, "no s3_source key exists in .gemrc"
878
893
  end
879
894
 
880
895
  def test_fetch_s3_no_host
881
896
  Gem.configuration[:s3_source] = {
882
- 'my-bucket' => {:id => 'testuser', :secret => 'testpass'},
897
+ "my-bucket" => { :id => "testuser", :secret => "testpass" },
883
898
  }
884
899
 
885
- url = 's3://other-bucket/gems/specs.4.8.gz'
886
- refute_fetch_s3 url, 'no key for host other-bucket in s3_source in .gemrc'
900
+ url = "s3://other-bucket/gems/specs.4.8.gz"
901
+ refute_fetch_s3 url, "no key for host other-bucket in s3_source in .gemrc"
887
902
  ensure
888
903
  Gem.configuration[:s3_source] = nil
889
904
  end
890
905
 
891
906
  def test_fetch_s3_no_id
892
- Gem.configuration[:s3_source] = { 'my-bucket' => {:secret => 'testpass'} }
907
+ Gem.configuration[:s3_source] = { "my-bucket" => { :secret => "testpass" } }
893
908
 
894
- url = 's3://my-bucket/gems/specs.4.8.gz'
895
- refute_fetch_s3 url, 's3_source for my-bucket missing id or secret'
909
+ url = "s3://my-bucket/gems/specs.4.8.gz"
910
+ refute_fetch_s3 url, "s3_source for my-bucket missing id or secret"
896
911
  ensure
897
912
  Gem.configuration[:s3_source] = nil
898
913
  end
899
914
 
900
915
  def test_fetch_s3_no_secret
901
- Gem.configuration[:s3_source] = { 'my-bucket' => {:id => 'testuser'} }
916
+ Gem.configuration[:s3_source] = { "my-bucket" => { :id => "testuser" } }
902
917
 
903
- url = 's3://my-bucket/gems/specs.4.8.gz'
904
- refute_fetch_s3 url, 's3_source for my-bucket missing id or secret'
918
+ url = "s3://my-bucket/gems/specs.4.8.gz"
919
+ refute_fetch_s3 url, "s3_source for my-bucket missing id or secret"
905
920
  ensure
906
921
  Gem.configuration[:s3_source] = nil
907
922
  end
@@ -931,7 +946,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
931
946
  @fetcher = fetcher
932
947
 
933
948
  assert_throws :block_called do
934
- fetcher.request URI('http://example'), Net::HTTP::Get do |req|
949
+ fetcher.request URI("http://example"), Net::HTTP::Get do |req|
935
950
  assert_kind_of Net::HTTPGenericRequest, req
936
951
  throw :block_called
937
952
  end
@@ -949,7 +964,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
949
964
 
950
965
  def test_ssl_connection
951
966
  ssl_server = start_ssl_server
952
- temp_ca_cert = File.join(__dir__, 'ca_cert.pem')
967
+ temp_ca_cert = File.join(__dir__, "ca_cert.pem")
953
968
  with_configured_fetcher(":ssl_ca_cert: #{temp_ca_cert}") do |fetcher|
954
969
  fetcher.fetch_path("https://localhost:#{ssl_server.config[:Port]}/yaml")
955
970
  end
@@ -958,10 +973,10 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
958
973
  def test_ssl_client_cert_auth_connection
959
974
  ssl_server = start_ssl_server({
960
975
  :SSLVerifyClient =>
961
- OpenSSL::SSL::VERIFY_PEER | OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT})
976
+ OpenSSL::SSL::VERIFY_PEER | OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT })
962
977
 
963
- temp_ca_cert = File.join(__dir__, 'ca_cert.pem')
964
- temp_client_cert = File.join(__dir__, 'client.pem')
978
+ temp_ca_cert = File.join(__dir__, "ca_cert.pem")
979
+ temp_client_cert = File.join(__dir__, "client.pem")
965
980
 
966
981
  with_configured_fetcher(
967
982
  ":ssl_ca_cert: #{temp_ca_cert}\n" +
@@ -973,10 +988,10 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
973
988
  def test_do_not_allow_invalid_client_cert_auth_connection
974
989
  ssl_server = start_ssl_server({
975
990
  :SSLVerifyClient =>
976
- OpenSSL::SSL::VERIFY_PEER | OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT})
991
+ OpenSSL::SSL::VERIFY_PEER | OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT })
977
992
 
978
- temp_ca_cert = File.join(__dir__, 'ca_cert.pem')
979
- temp_client_cert = File.join(__dir__, 'invalid_client.pem')
993
+ temp_ca_cert = File.join(__dir__, "ca_cert.pem")
994
+ temp_client_cert = File.join(__dir__, "invalid_client.pem")
980
995
 
981
996
  with_configured_fetcher(
982
997
  ":ssl_ca_cert: #{temp_ca_cert}\n" +
@@ -1005,7 +1020,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
1005
1020
 
1006
1021
  def test_do_not_follow_insecure_redirect
1007
1022
  ssl_server = start_ssl_server
1008
- temp_ca_cert = File.join(__dir__, 'ca_cert.pem')
1023
+ temp_ca_cert = File.join(__dir__, "ca_cert.pem")
1009
1024
  expected_error_message =
1010
1025
  "redirecting to non-https resource: #{@server_uri} (https://localhost:#{ssl_server.config[:Port]}/insecure_redirect?to=#{@server_uri})"
1011
1026
 
@@ -1031,8 +1046,8 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
1031
1046
 
1032
1047
  def with_configured_fetcher(config_str = nil, &block)
1033
1048
  if config_str
1034
- temp_conf = File.join @tempdir, '.gemrc'
1035
- File.open temp_conf, 'w' do |fp|
1049
+ temp_conf = File.join @tempdir, ".gemrc"
1050
+ File.open temp_conf, "w" do |fp|
1036
1051
  fp.puts config_str
1037
1052
  end
1038
1053
  Gem.configuration = Gem::ConfigFile.new %W[--config-file #{temp_conf}]
@@ -1121,9 +1136,9 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
1121
1136
  :Logger => null_logger,
1122
1137
  :AccessLog => [],
1123
1138
  :SSLEnable => true,
1124
- :SSLCACertificateFile => File.join(__dir__, 'ca_cert.pem'),
1125
- :SSLCertificate => cert('ssl_cert.pem'),
1126
- :SSLPrivateKey => key('ssl_key.pem'),
1139
+ :SSLCACertificateFile => File.join(__dir__, "ca_cert.pem"),
1140
+ :SSLCertificate => cert("ssl_cert.pem"),
1141
+ :SSLPrivateKey => key("ssl_key.pem"),
1127
1142
  :SSLVerifyClient => nil,
1128
1143
  :SSLCertName => nil,
1129
1144
  }.merge(config))
@@ -1131,7 +1146,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
1131
1146
  res.body = "--- true\n"
1132
1147
  end
1133
1148
  server.mount_proc("/insecure_redirect") do |req, res|
1134
- res.set_redirect(WEBrick::HTTPStatus::MovedPermanently, req.query['to'])
1149
+ res.set_redirect(WEBrick::HTTPStatus::MovedPermanently, req.query["to"])
1135
1150
  end
1136
1151
  server.ssl_context.tmp_dh_callback = proc { TEST_KEY_DH2048 }
1137
1152
  t = Thread.new do
@@ -1159,10 +1174,10 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
1159
1174
  def start_server(data)
1160
1175
  null_logger = NilLog.new
1161
1176
  s = WEBrick::HTTPServer.new(
1162
- :Port => 0,
1163
- :DocumentRoot => nil,
1164
- :Logger => null_logger,
1165
- :AccessLog => null_logger
1177
+ :Port => 0,
1178
+ :DocumentRoot => nil,
1179
+ :Logger => null_logger,
1180
+ :AccessLog => null_logger
1166
1181
  )
1167
1182
  s.mount_proc("/kill") {|req, res| s.shutdown }
1168
1183
  s.mount_proc("/yaml") do |req, res|
@@ -1170,22 +1185,22 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
1170
1185
  res.body = req["X-Captain"]
1171
1186
  elsif @enable_yaml
1172
1187
  res.body = data
1173
- res['Content-Type'] = 'text/plain'
1174
- res['content-length'] = data.size
1188
+ res["Content-Type"] = "text/plain"
1189
+ res["content-length"] = data.size
1175
1190
  else
1176
1191
  res.status = "404"
1177
1192
  res.body = "<h1>NOT FOUND</h1>"
1178
- res['Content-Type'] = 'text/html'
1193
+ res["Content-Type"] = "text/html"
1179
1194
  end
1180
1195
  end
1181
1196
  s.mount_proc("/yaml.Z") do |req, res|
1182
1197
  if @enable_zip
1183
1198
  res.body = Zlib::Deflate.deflate(data)
1184
- res['Content-Type'] = 'text/plain'
1199
+ res["Content-Type"] = "text/plain"
1185
1200
  else
1186
1201
  res.status = "404"
1187
1202
  res.body = "<h1>NOT FOUND</h1>"
1188
- res['Content-Type'] = 'text/html'
1203
+ res["Content-Type"] = "text/html"
1189
1204
  end
1190
1205
  end
1191
1206
  th = Thread.new do