rubygems-update 3.4.22 → 3.5.1

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 (540) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +105 -2
  3. data/Manifest.txt +46 -221
  4. data/README.md +1 -3
  5. data/bundler/CHANGELOG.md +63 -0
  6. data/bundler/bundler.gemspec +4 -2
  7. data/bundler/exe/bundle +1 -10
  8. data/bundler/lib/bundler/build_metadata.rb +3 -3
  9. data/bundler/lib/bundler/capistrano.rb +1 -1
  10. data/bundler/lib/bundler/checksum.rb +254 -0
  11. data/bundler/lib/bundler/ci_detector.rb +75 -0
  12. data/bundler/lib/bundler/cli/add.rb +3 -3
  13. data/bundler/lib/bundler/cli/binstubs.rb +4 -4
  14. data/bundler/lib/bundler/cli/cache.rb +1 -1
  15. data/bundler/lib/bundler/cli/check.rb +1 -1
  16. data/bundler/lib/bundler/cli/common.rb +9 -1
  17. data/bundler/lib/bundler/cli/config.rb +8 -7
  18. data/bundler/lib/bundler/cli/console.rb +3 -2
  19. data/bundler/lib/bundler/cli/doctor.rb +2 -2
  20. data/bundler/lib/bundler/cli/exec.rb +1 -1
  21. data/bundler/lib/bundler/cli/gem.rb +28 -23
  22. data/bundler/lib/bundler/cli/info.rb +2 -13
  23. data/bundler/lib/bundler/cli/install.rb +5 -4
  24. data/bundler/lib/bundler/cli/issue.rb +1 -1
  25. data/bundler/lib/bundler/cli/lock.rb +4 -4
  26. data/bundler/lib/bundler/cli/open.rb +1 -1
  27. data/bundler/lib/bundler/cli/outdated.rb +6 -6
  28. data/bundler/lib/bundler/cli/plugin.rb +7 -14
  29. data/bundler/lib/bundler/cli/pristine.rb +38 -30
  30. data/bundler/lib/bundler/cli/show.rb +2 -2
  31. data/bundler/lib/bundler/cli/update.rb +5 -5
  32. data/bundler/lib/bundler/cli.rb +215 -263
  33. data/bundler/lib/bundler/compact_index_client/cache.rb +29 -9
  34. data/bundler/lib/bundler/compact_index_client/cache_file.rb +153 -0
  35. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +7 -3
  36. data/bundler/lib/bundler/compact_index_client/updater.rb +79 -81
  37. data/bundler/lib/bundler/compact_index_client.rb +14 -7
  38. data/bundler/lib/bundler/constants.rb +1 -1
  39. data/bundler/lib/bundler/current_ruby.rb +5 -21
  40. data/bundler/lib/bundler/definition.rb +42 -15
  41. data/bundler/lib/bundler/dependency.rb +16 -12
  42. data/bundler/lib/bundler/digest.rb +2 -2
  43. data/bundler/lib/bundler/dsl.rb +46 -30
  44. data/bundler/lib/bundler/endpoint_specification.rb +5 -1
  45. data/bundler/lib/bundler/env.rb +1 -3
  46. data/bundler/lib/bundler/errors.rb +43 -0
  47. data/bundler/lib/bundler/fetcher/base.rb +3 -1
  48. data/bundler/lib/bundler/fetcher/compact_index.rb +4 -4
  49. data/bundler/lib/bundler/fetcher/downloader.rb +13 -11
  50. data/bundler/lib/bundler/fetcher/gem_remote_fetcher.rb +16 -0
  51. data/bundler/lib/bundler/fetcher/index.rb +1 -1
  52. data/bundler/lib/bundler/fetcher.rb +28 -25
  53. data/bundler/lib/bundler/friendly_errors.rb +5 -5
  54. data/bundler/lib/bundler/gem_helper.rb +1 -1
  55. data/bundler/lib/bundler/gem_helpers.rb +5 -2
  56. data/bundler/lib/bundler/graph.rb +9 -9
  57. data/bundler/lib/bundler/index.rb +1 -2
  58. data/bundler/lib/bundler/injector.rb +1 -1
  59. data/bundler/lib/bundler/inline.rb +3 -3
  60. data/bundler/lib/bundler/installer/gem_installer.rb +5 -5
  61. data/bundler/lib/bundler/installer/parallel_installer.rb +16 -8
  62. data/bundler/lib/bundler/installer/standalone.rb +2 -3
  63. data/bundler/lib/bundler/installer.rb +9 -9
  64. data/bundler/lib/bundler/lazy_specification.rb +24 -17
  65. data/bundler/lib/bundler/lockfile_generator.rb +9 -0
  66. data/bundler/lib/bundler/lockfile_parser.rb +81 -10
  67. data/bundler/lib/bundler/man/bundle-add.1 +3 -26
  68. data/bundler/lib/bundler/man/bundle-binstubs.1 +4 -16
  69. data/bundler/lib/bundler/man/bundle-cache.1 +3 -24
  70. data/bundler/lib/bundler/man/bundle-check.1 +3 -12
  71. data/bundler/lib/bundler/man/bundle-clean.1 +3 -10
  72. data/bundler/lib/bundler/man/bundle-config.1 +20 -211
  73. data/bundler/lib/bundler/man/bundle-config.1.ronn +6 -0
  74. data/bundler/lib/bundler/man/bundle-console.1 +4 -22
  75. data/bundler/lib/bundler/man/bundle-doctor.1 +4 -18
  76. data/bundler/lib/bundler/man/bundle-exec.1 +12 -73
  77. data/bundler/lib/bundler/man/bundle-gem.1 +13 -49
  78. data/bundler/lib/bundler/man/bundle-help.1 +3 -7
  79. data/bundler/lib/bundler/man/bundle-info.1 +3 -9
  80. data/bundler/lib/bundler/man/bundle-init.1 +3 -12
  81. data/bundler/lib/bundler/man/bundle-inject.1 +6 -19
  82. data/bundler/lib/bundler/man/bundle-install.1 +27 -125
  83. data/bundler/lib/bundler/man/bundle-install.1.ronn +1 -0
  84. data/bundler/lib/bundler/man/bundle-list.1 +4 -19
  85. data/bundler/lib/bundler/man/bundle-lock.1 +5 -29
  86. data/bundler/lib/bundler/man/bundle-open.1 +7 -27
  87. data/bundler/lib/bundler/man/bundle-outdated.1 +3 -55
  88. data/bundler/lib/bundler/man/bundle-outdated.1.ronn +1 -0
  89. data/bundler/lib/bundler/man/bundle-platform.1 +5 -27
  90. data/bundler/lib/bundler/man/bundle-plugin.1 +3 -29
  91. data/bundler/lib/bundler/man/bundle-pristine.1 +5 -16
  92. data/bundler/lib/bundler/man/bundle-remove.1 +4 -14
  93. data/bundler/lib/bundler/man/bundle-show.1 +3 -10
  94. data/bundler/lib/bundler/man/bundle-update.1 +18 -137
  95. data/bundler/lib/bundler/man/bundle-version.1 +3 -16
  96. data/bundler/lib/bundler/man/bundle-viz.1 +4 -16
  97. data/bundler/lib/bundler/man/bundle.1 +5 -44
  98. data/bundler/lib/bundler/man/gemfile.5 +24 -301
  99. data/bundler/lib/bundler/man/gemfile.5.ronn +4 -0
  100. data/bundler/lib/bundler/match_metadata.rb +4 -0
  101. data/bundler/lib/bundler/match_platform.rb +1 -1
  102. data/bundler/lib/bundler/plugin/api/source.rb +3 -2
  103. data/bundler/lib/bundler/plugin/installer.rb +1 -1
  104. data/bundler/lib/bundler/plugin.rb +3 -3
  105. data/bundler/lib/bundler/resolver/base.rb +1 -1
  106. data/bundler/lib/bundler/resolver/incompatibility.rb +1 -1
  107. data/bundler/lib/bundler/resolver/spec_group.rb +1 -4
  108. data/bundler/lib/bundler/resolver.rb +16 -16
  109. data/bundler/lib/bundler/ruby_dsl.rb +20 -12
  110. data/bundler/lib/bundler/ruby_version.rb +1 -1
  111. data/bundler/lib/bundler/rubygems_ext.rb +24 -50
  112. data/bundler/lib/bundler/rubygems_gem_installer.rb +6 -56
  113. data/bundler/lib/bundler/rubygems_integration.rb +25 -94
  114. data/bundler/lib/bundler/runtime.rb +2 -2
  115. data/bundler/lib/bundler/self_manager.rb +23 -7
  116. data/bundler/lib/bundler/settings.rb +27 -7
  117. data/bundler/lib/bundler/setup.rb +4 -1
  118. data/bundler/lib/bundler/shared_helpers.rb +35 -13
  119. data/bundler/lib/bundler/source/git/git_proxy.rb +15 -15
  120. data/bundler/lib/bundler/source/git.rb +4 -3
  121. data/bundler/lib/bundler/source/metadata.rb +15 -15
  122. data/bundler/lib/bundler/source/path.rb +7 -6
  123. data/bundler/lib/bundler/source/rubygems.rb +21 -14
  124. data/bundler/lib/bundler/source.rb +2 -0
  125. data/bundler/lib/bundler/spec_set.rb +38 -10
  126. data/bundler/lib/bundler/stub_specification.rb +1 -0
  127. data/bundler/lib/bundler/templates/Executable.bundler +1 -1
  128. data/bundler/lib/bundler/templates/newgem/README.md.tt +3 -3
  129. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +2 -6
  130. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +1 -1
  131. data/bundler/lib/bundler/templates/newgem/standard.yml.tt +1 -1
  132. data/bundler/lib/bundler/ui/shell.rb +1 -1
  133. data/bundler/lib/bundler/vendor/connection_pool/.document +1 -0
  134. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
  135. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +53 -6
  136. data/bundler/lib/bundler/vendor/fileutils/.document +1 -0
  137. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +8 -20
  138. data/bundler/lib/bundler/vendor/net-http-persistent/.document +1 -0
  139. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +3 -3
  140. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +2 -2
  141. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +1 -1
  142. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +34 -34
  143. data/bundler/lib/bundler/vendor/pub_grub/.document +1 -0
  144. data/bundler/lib/bundler/vendor/thor/.document +1 -0
  145. data/bundler/lib/bundler/vendor/tsort/.document +1 -0
  146. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +3 -0
  147. data/bundler/lib/bundler/vendor/uri/.document +1 -0
  148. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +256 -132
  149. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1 -0
  150. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +95 -31
  151. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  152. data/bundler/lib/bundler/vendored_net_http.rb +8 -0
  153. data/bundler/lib/bundler/vendored_persistent.rb +0 -4
  154. data/bundler/lib/bundler/vendored_timeout.rb +8 -0
  155. data/bundler/lib/bundler/version.rb +1 -1
  156. data/bundler/lib/bundler/vlad.rb +1 -1
  157. data/bundler/lib/bundler/yaml_serializer.rb +3 -3
  158. data/bundler/lib/bundler.rb +41 -32
  159. data/lib/rubygems/available_set.rb +4 -4
  160. data/lib/rubygems/basic_specification.rb +35 -37
  161. data/lib/rubygems/bundler_version_finder.rb +4 -4
  162. data/lib/rubygems/ci_detector.rb +75 -0
  163. data/lib/rubygems/command.rb +13 -15
  164. data/lib/rubygems/command_manager.rb +5 -4
  165. data/lib/rubygems/commands/build_command.rb +2 -2
  166. data/lib/rubygems/commands/cert_command.rb +1 -2
  167. data/lib/rubygems/commands/check_command.rb +4 -4
  168. data/lib/rubygems/commands/cleanup_command.rb +12 -14
  169. data/lib/rubygems/commands/contents_command.rb +4 -4
  170. data/lib/rubygems/commands/dependency_command.rb +4 -5
  171. data/lib/rubygems/commands/environment_command.rb +1 -3
  172. data/lib/rubygems/commands/exec_command.rb +1 -1
  173. data/lib/rubygems/commands/fetch_command.rb +2 -2
  174. data/lib/rubygems/commands/generate_index_command.rb +39 -74
  175. data/lib/rubygems/commands/help_command.rb +3 -3
  176. data/lib/rubygems/commands/info_command.rb +2 -2
  177. data/lib/rubygems/commands/install_command.rb +8 -16
  178. data/lib/rubygems/commands/list_command.rb +2 -2
  179. data/lib/rubygems/commands/lock_command.rb +1 -1
  180. data/lib/rubygems/commands/open_command.rb +1 -1
  181. data/lib/rubygems/commands/owner_command.rb +1 -1
  182. data/lib/rubygems/commands/pristine_command.rb +13 -15
  183. data/lib/rubygems/commands/push_command.rb +2 -2
  184. data/lib/rubygems/commands/query_command.rb +4 -5
  185. data/lib/rubygems/commands/rdoc_command.rb +2 -2
  186. data/lib/rubygems/commands/search_command.rb +2 -2
  187. data/lib/rubygems/commands/setup_command.rb +31 -34
  188. data/lib/rubygems/commands/sources_command.rb +12 -12
  189. data/lib/rubygems/commands/specification_command.rb +10 -10
  190. data/lib/rubygems/commands/stale_command.rb +1 -1
  191. data/lib/rubygems/commands/uninstall_command.rb +9 -10
  192. data/lib/rubygems/commands/unpack_command.rb +4 -4
  193. data/lib/rubygems/commands/update_command.rb +10 -12
  194. data/lib/rubygems/commands/which_command.rb +1 -1
  195. data/lib/rubygems/commands/yank_command.rb +1 -1
  196. data/lib/rubygems/compatibility.rb +5 -6
  197. data/lib/rubygems/config_file.rb +4 -4
  198. data/lib/rubygems/core_ext/kernel_gem.rb +0 -2
  199. data/lib/rubygems/core_ext/kernel_require.rb +19 -48
  200. data/lib/rubygems/core_ext/kernel_warn.rb +1 -1
  201. data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
  202. data/lib/rubygems/defaults.rb +15 -3
  203. data/lib/rubygems/dependency.rb +12 -14
  204. data/lib/rubygems/dependency_installer.rb +29 -30
  205. data/lib/rubygems/dependency_list.rb +1 -1
  206. data/lib/rubygems/deprecate.rb +16 -15
  207. data/lib/rubygems/doctor.rb +5 -5
  208. data/lib/rubygems/errors.rb +2 -6
  209. data/lib/rubygems/exceptions.rb +2 -1
  210. data/lib/rubygems/ext/builder.rb +15 -10
  211. data/lib/rubygems/ext/cargo_builder.rb +5 -5
  212. data/lib/rubygems/ext/ext_conf_builder.rb +1 -3
  213. data/lib/rubygems/gem_runner.rb +4 -4
  214. data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +3 -3
  215. data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +3 -3
  216. data/lib/rubygems/gemcutter_utilities.rb +18 -19
  217. data/lib/rubygems/install_update_options.rb +18 -19
  218. data/lib/rubygems/installer.rb +59 -33
  219. data/lib/rubygems/installer_uninstaller_utils.rb +0 -2
  220. data/lib/rubygems/local_remote_options.rb +7 -10
  221. data/lib/rubygems/name_tuple.rb +7 -9
  222. data/lib/rubygems/net/http.rb +3 -0
  223. data/lib/rubygems/net-http/.document +1 -0
  224. data/lib/rubygems/net-http/LICENSE.txt +22 -0
  225. data/lib/rubygems/net-http/lib/net/http/backward.rb +40 -0
  226. data/lib/rubygems/net-http/lib/net/http/exceptions.rb +34 -0
  227. data/lib/rubygems/net-http/lib/net/http/generic_request.rb +414 -0
  228. data/lib/rubygems/net-http/lib/net/http/header.rb +981 -0
  229. data/lib/rubygems/net-http/lib/net/http/proxy_delta.rb +17 -0
  230. data/lib/rubygems/net-http/lib/net/http/request.rb +88 -0
  231. data/lib/rubygems/net-http/lib/net/http/requests.rb +425 -0
  232. data/lib/rubygems/net-http/lib/net/http/response.rb +738 -0
  233. data/lib/rubygems/net-http/lib/net/http/responses.rb +1174 -0
  234. data/lib/rubygems/net-http/lib/net/http/status.rb +84 -0
  235. data/lib/rubygems/net-http/lib/net/http.rb +2496 -0
  236. data/lib/rubygems/net-http/lib/net/https.rb +23 -0
  237. data/lib/rubygems/net-protocol/.document +1 -0
  238. data/lib/rubygems/net-protocol/LICENSE.txt +22 -0
  239. data/lib/rubygems/net-protocol/lib/net/protocol.rb +544 -0
  240. data/lib/rubygems/optparse/lib/optparse.rb +39 -17
  241. data/lib/rubygems/package/old.rb +2 -2
  242. data/lib/rubygems/package/tar_header.rb +45 -39
  243. data/lib/rubygems/package/tar_reader/entry.rb +5 -4
  244. data/lib/rubygems/package/tar_reader.rb +5 -3
  245. data/lib/rubygems/package/tar_writer.rb +19 -17
  246. data/lib/rubygems/package.rb +27 -26
  247. data/lib/rubygems/package_task.rb +2 -2
  248. data/lib/rubygems/path_support.rb +9 -10
  249. data/lib/rubygems/platform.rb +60 -45
  250. data/lib/rubygems/query_utils.rb +7 -9
  251. data/lib/rubygems/remote_fetcher.rb +15 -15
  252. data/lib/rubygems/request/connection_pools.rb +3 -3
  253. data/lib/rubygems/request.rb +20 -17
  254. data/lib/rubygems/request_set/gem_dependency_api.rb +119 -122
  255. data/lib/rubygems/request_set/lockfile/parser.rb +9 -9
  256. data/lib/rubygems/request_set/lockfile/tokenizer.rb +20 -12
  257. data/lib/rubygems/request_set/lockfile.rb +6 -11
  258. data/lib/rubygems/request_set.rb +5 -5
  259. data/lib/rubygems/requirement.rb +7 -7
  260. data/lib/rubygems/resolv/.document +1 -0
  261. data/lib/rubygems/resolv/LICENSE.txt +22 -0
  262. data/lib/rubygems/resolv/lib/resolv.rb +3387 -0
  263. data/lib/rubygems/resolver/activation_request.rb +1 -3
  264. data/lib/rubygems/resolver/api_set/gem_parser.rb +7 -3
  265. data/lib/rubygems/resolver/best_set.rb +1 -1
  266. data/lib/rubygems/resolver/composed_set.rb +1 -1
  267. data/lib/rubygems/resolver/conflict.rb +4 -12
  268. data/lib/rubygems/resolver/index_set.rb +4 -4
  269. data/lib/rubygems/resolver/index_specification.rb +2 -2
  270. data/lib/rubygems/resolver/installer_set.rb +5 -6
  271. data/lib/rubygems/resolver/lock_set.rb +1 -1
  272. data/lib/rubygems/resolver/molinillo/.document +1 -0
  273. data/lib/rubygems/resolver.rb +3 -10
  274. data/lib/rubygems/s3_uri_signer.rb +6 -6
  275. data/lib/rubygems/safe_marshal/elements.rb +138 -0
  276. data/lib/rubygems/safe_marshal/reader.rb +306 -0
  277. data/lib/rubygems/safe_marshal/visitors/stream_printer.rb +31 -0
  278. data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +385 -0
  279. data/lib/rubygems/safe_marshal/visitors/visitor.rb +74 -0
  280. data/lib/rubygems/safe_marshal.rb +74 -0
  281. data/lib/rubygems/safe_yaml.rb +5 -28
  282. data/lib/rubygems/security/policies.rb +36 -38
  283. data/lib/rubygems/security/policy.rb +7 -11
  284. data/lib/rubygems/security/signer.rb +1 -1
  285. data/lib/rubygems/security/trust_dir.rb +3 -3
  286. data/lib/rubygems/security.rb +8 -22
  287. data/lib/rubygems/source/git.rb +1 -3
  288. data/lib/rubygems/source/installed.rb +0 -2
  289. data/lib/rubygems/source/local.rb +5 -8
  290. data/lib/rubygems/source/lock.rb +1 -3
  291. data/lib/rubygems/source/specific_file.rb +0 -1
  292. data/lib/rubygems/source/vendor.rb +0 -2
  293. data/lib/rubygems/source.rb +12 -12
  294. data/lib/rubygems/source_list.rb +4 -4
  295. data/lib/rubygems/spec_fetcher.rb +29 -29
  296. data/lib/rubygems/specification.rb +125 -138
  297. data/lib/rubygems/specification_policy.rb +55 -25
  298. data/lib/rubygems/stub_specification.rb +4 -5
  299. data/lib/rubygems/text.rb +1 -2
  300. data/lib/rubygems/timeout/.document +1 -0
  301. data/lib/rubygems/timeout/LICENSE.txt +22 -0
  302. data/lib/rubygems/timeout/lib/timeout.rb +199 -0
  303. data/lib/rubygems/timeout.rb +3 -0
  304. data/lib/rubygems/tsort/lib/tsort.rb +3 -0
  305. data/lib/rubygems/uninstaller.rb +7 -9
  306. data/lib/rubygems/update_suggestion.rb +5 -18
  307. data/lib/rubygems/uri_formatter.rb +1 -1
  308. data/lib/rubygems/user_interaction.rb +15 -21
  309. data/lib/rubygems/util/licenses.rb +65 -35
  310. data/lib/rubygems/util/list.rb +3 -1
  311. data/lib/rubygems/util.rb +2 -4
  312. data/lib/rubygems/validator.rb +5 -3
  313. data/lib/rubygems/version.rb +34 -28
  314. data/lib/rubygems/version_option.rb +2 -5
  315. data/lib/rubygems/yaml_serializer.rb +3 -3
  316. data/lib/rubygems.rb +37 -37
  317. data/rubygems-update.gemspec +4 -4
  318. data/setup.rb +2 -2
  319. metadata +50 -225
  320. data/lib/rubygems/indexer.rb +0 -428
  321. data/lib/rubygems/mock_gem_ui.rb +0 -86
  322. data/test/rubygems/alternate_cert.pem +0 -19
  323. data/test/rubygems/alternate_cert_32.pem +0 -19
  324. data/test/rubygems/alternate_key.pem +0 -27
  325. data/test/rubygems/bad_rake.rb +0 -3
  326. data/test/rubygems/bundler_test_gem.rb +0 -424
  327. data/test/rubygems/ca_cert.pem +0 -77
  328. data/test/rubygems/child_cert.pem +0 -19
  329. data/test/rubygems/child_cert_32.pem +0 -19
  330. data/test/rubygems/child_key.pem +0 -27
  331. data/test/rubygems/client.pem +0 -107
  332. data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
  333. data/test/rubygems/data/gem-private_key.pem +0 -27
  334. data/test/rubygems/data/gem-public_cert.pem +0 -20
  335. data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
  336. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  337. data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
  338. data/test/rubygems/encrypted_private_key.pem +0 -30
  339. data/test/rubygems/expired_cert.pem +0 -19
  340. data/test/rubygems/fake_certlib/openssl.rb +0 -9
  341. data/test/rubygems/foo/discover.rb +0 -1
  342. data/test/rubygems/future_cert.pem +0 -19
  343. data/test/rubygems/future_cert_32.pem +0 -19
  344. data/test/rubygems/good_rake.rb +0 -3
  345. data/test/rubygems/grandchild_cert.pem +0 -19
  346. data/test/rubygems/grandchild_cert_32.pem +0 -19
  347. data/test/rubygems/grandchild_key.pem +0 -27
  348. data/test/rubygems/helper.rb +0 -1649
  349. data/test/rubygems/installer_test_case.rb +0 -248
  350. data/test/rubygems/invalid_client.pem +0 -49
  351. data/test/rubygems/invalid_issuer_cert.pem +0 -20
  352. data/test/rubygems/invalid_issuer_cert_32.pem +0 -20
  353. data/test/rubygems/invalid_key.pem +0 -27
  354. data/test/rubygems/invalid_signer_cert.pem +0 -19
  355. data/test/rubygems/invalid_signer_cert_32.pem +0 -19
  356. data/test/rubygems/invalidchild_cert.pem +0 -19
  357. data/test/rubygems/invalidchild_cert_32.pem +0 -19
  358. data/test/rubygems/invalidchild_key.pem +0 -27
  359. data/test/rubygems/multifactor_auth_utilities.rb +0 -111
  360. data/test/rubygems/package/tar_test_case.rb +0 -175
  361. data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
  362. data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
  363. data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
  364. data/test/rubygems/plugin/exception/rubygems_plugin.rb +0 -4
  365. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -5
  366. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +0 -4
  367. data/test/rubygems/private3072_key.pem +0 -40
  368. data/test/rubygems/private_ec_key.pem +0 -9
  369. data/test/rubygems/private_key.pem +0 -27
  370. data/test/rubygems/public3072_cert.pem +0 -25
  371. data/test/rubygems/public_cert.pem +0 -20
  372. data/test/rubygems/public_cert_32.pem +0 -19
  373. data/test/rubygems/public_key.pem +0 -9
  374. data/test/rubygems/rubygems/commands/crash_command.rb +0 -5
  375. data/test/rubygems/rubygems_plugin.rb +0 -24
  376. data/test/rubygems/sff/discover.rb +0 -1
  377. data/test/rubygems/simple_gem.rb +0 -68
  378. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -9
  379. data/test/rubygems/specifications/foo-0.0.1-x86-mswin32.gemspec +0 -0
  380. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +0 -14
  381. data/test/rubygems/ssl_cert.pem +0 -80
  382. data/test/rubygems/ssl_key.pem +0 -27
  383. data/test/rubygems/test_bundled_ca.rb +0 -61
  384. data/test/rubygems/test_config.rb +0 -28
  385. data/test/rubygems/test_deprecate.rb +0 -158
  386. data/test/rubygems/test_exit.rb +0 -17
  387. data/test/rubygems/test_gem.rb +0 -1799
  388. data/test/rubygems/test_gem_available_set.rb +0 -130
  389. data/test/rubygems/test_gem_bundler_version_finder.rb +0 -127
  390. data/test/rubygems/test_gem_command.rb +0 -403
  391. data/test/rubygems/test_gem_command_manager.rb +0 -400
  392. data/test/rubygems/test_gem_commands_build_command.rb +0 -739
  393. data/test/rubygems/test_gem_commands_cert_command.rb +0 -866
  394. data/test/rubygems/test_gem_commands_check_command.rb +0 -68
  395. data/test/rubygems/test_gem_commands_cleanup_command.rb +0 -292
  396. data/test/rubygems/test_gem_commands_contents_command.rb +0 -271
  397. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -228
  398. data/test/rubygems/test_gem_commands_environment_command.rb +0 -169
  399. data/test/rubygems/test_gem_commands_exec_command.rb +0 -857
  400. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -258
  401. data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -81
  402. data/test/rubygems/test_gem_commands_help_command.rb +0 -94
  403. data/test/rubygems/test_gem_commands_info_command.rb +0 -70
  404. data/test/rubygems/test_gem_commands_install_command.rb +0 -1573
  405. data/test/rubygems/test_gem_commands_list_command.rb +0 -33
  406. data/test/rubygems/test_gem_commands_lock_command.rb +0 -67
  407. data/test/rubygems/test_gem_commands_mirror.rb +0 -20
  408. data/test/rubygems/test_gem_commands_open_command.rb +0 -101
  409. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -50
  410. data/test/rubygems/test_gem_commands_owner_command.rb +0 -503
  411. data/test/rubygems/test_gem_commands_pristine_command.rb +0 -708
  412. data/test/rubygems/test_gem_commands_push_command.rb +0 -603
  413. data/test/rubygems/test_gem_commands_query_command.rb +0 -858
  414. data/test/rubygems/test_gem_commands_search_command.rb +0 -16
  415. data/test/rubygems/test_gem_commands_server_command.rb +0 -20
  416. data/test/rubygems/test_gem_commands_setup_command.rb +0 -474
  417. data/test/rubygems/test_gem_commands_signin_command.rb +0 -259
  418. data/test/rubygems/test_gem_commands_signout_command.rb +0 -30
  419. data/test/rubygems/test_gem_commands_sources_command.rb +0 -534
  420. data/test/rubygems/test_gem_commands_specification_command.rb +0 -277
  421. data/test/rubygems/test_gem_commands_stale_command.rb +0 -43
  422. data/test/rubygems/test_gem_commands_uninstall_command.rb +0 -542
  423. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -224
  424. data/test/rubygems/test_gem_commands_update_command.rb +0 -836
  425. data/test/rubygems/test_gem_commands_which_command.rb +0 -85
  426. data/test/rubygems/test_gem_commands_yank_command.rb +0 -299
  427. data/test/rubygems/test_gem_config_file.rb +0 -551
  428. data/test/rubygems/test_gem_dependency.rb +0 -398
  429. data/test/rubygems/test_gem_dependency_installer.rb +0 -1190
  430. data/test/rubygems/test_gem_dependency_list.rb +0 -265
  431. data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -27
  432. data/test/rubygems/test_gem_doctor.rb +0 -195
  433. data/test/rubygems/test_gem_ext_builder.rb +0 -337
  434. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +0 -1
  435. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +0 -10
  436. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +0 -249
  437. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +0 -10
  438. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +0 -27
  439. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +0 -3
  440. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +0 -1
  441. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +0 -249
  442. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +0 -10
  443. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +0 -10
  444. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +0 -51
  445. data/test/rubygems/test_gem_ext_cargo_builder.rb +0 -167
  446. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +0 -34
  447. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +0 -60
  448. data/test/rubygems/test_gem_ext_cmake_builder.rb +0 -84
  449. data/test/rubygems/test_gem_ext_configure_builder.rb +0 -80
  450. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -229
  451. data/test/rubygems/test_gem_ext_rake_builder.rb +0 -113
  452. data/test/rubygems/test_gem_gem_runner.rb +0 -119
  453. data/test/rubygems/test_gem_gemcutter_utilities.rb +0 -361
  454. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -60
  455. data/test/rubygems/test_gem_indexer.rb +0 -381
  456. data/test/rubygems/test_gem_install_update_options.rb +0 -208
  457. data/test/rubygems/test_gem_installer.rb +0 -2512
  458. data/test/rubygems/test_gem_local_remote_options.rb +0 -133
  459. data/test/rubygems/test_gem_name_tuple.rb +0 -43
  460. data/test/rubygems/test_gem_package.rb +0 -1306
  461. data/test/rubygems/test_gem_package_old.rb +0 -91
  462. data/test/rubygems/test_gem_package_tar_header.rb +0 -226
  463. data/test/rubygems/test_gem_package_tar_reader.rb +0 -150
  464. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -350
  465. data/test/rubygems/test_gem_package_tar_writer.rb +0 -331
  466. data/test/rubygems/test_gem_package_task.rb +0 -118
  467. data/test/rubygems/test_gem_path_support.rb +0 -139
  468. data/test/rubygems/test_gem_platform.rb +0 -497
  469. data/test/rubygems/test_gem_rdoc.rb +0 -137
  470. data/test/rubygems/test_gem_remote_fetcher.rb +0 -1227
  471. data/test/rubygems/test_gem_request.rb +0 -547
  472. data/test/rubygems/test_gem_request_connection_pools.rb +0 -152
  473. data/test/rubygems/test_gem_request_set.rb +0 -672
  474. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +0 -853
  475. data/test/rubygems/test_gem_request_set_lockfile.rb +0 -469
  476. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +0 -544
  477. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +0 -307
  478. data/test/rubygems/test_gem_requirement.rb +0 -505
  479. data/test/rubygems/test_gem_resolver.rb +0 -859
  480. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -43
  481. data/test/rubygems/test_gem_resolver_api_set.rb +0 -210
  482. data/test/rubygems/test_gem_resolver_api_specification.rb +0 -167
  483. data/test/rubygems/test_gem_resolver_best_set.rb +0 -159
  484. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -44
  485. data/test/rubygems/test_gem_resolver_conflict.rb +0 -82
  486. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -83
  487. data/test/rubygems/test_gem_resolver_git_set.rb +0 -188
  488. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -114
  489. data/test/rubygems/test_gem_resolver_index_set.rb +0 -88
  490. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -93
  491. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -47
  492. data/test/rubygems/test_gem_resolver_installer_set.rb +0 -320
  493. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -44
  494. data/test/rubygems/test_gem_resolver_lock_set.rb +0 -62
  495. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -98
  496. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -19
  497. data/test/rubygems/test_gem_resolver_specification.rb +0 -63
  498. data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -82
  499. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -82
  500. data/test/rubygems/test_gem_security.rb +0 -341
  501. data/test/rubygems/test_gem_security_policy.rb +0 -535
  502. data/test/rubygems/test_gem_security_signer.rb +0 -218
  503. data/test/rubygems/test_gem_security_trust_dir.rb +0 -99
  504. data/test/rubygems/test_gem_silent_ui.rb +0 -123
  505. data/test/rubygems/test_gem_source.rb +0 -254
  506. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -37
  507. data/test/rubygems/test_gem_source_git.rb +0 -310
  508. data/test/rubygems/test_gem_source_installed.rb +0 -35
  509. data/test/rubygems/test_gem_source_list.rb +0 -119
  510. data/test/rubygems/test_gem_source_local.rb +0 -107
  511. data/test/rubygems/test_gem_source_lock.rb +0 -113
  512. data/test/rubygems/test_gem_source_specific_file.rb +0 -76
  513. data/test/rubygems/test_gem_source_subpath_problem.rb +0 -50
  514. data/test/rubygems/test_gem_source_vendor.rb +0 -30
  515. data/test/rubygems/test_gem_spec_fetcher.rb +0 -338
  516. data/test/rubygems/test_gem_specification.rb +0 -3856
  517. data/test/rubygems/test_gem_stream_ui.rb +0 -255
  518. data/test/rubygems/test_gem_stub_specification.rb +0 -278
  519. data/test/rubygems/test_gem_text.rb +0 -103
  520. data/test/rubygems/test_gem_uninstaller.rb +0 -675
  521. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -31
  522. data/test/rubygems/test_gem_update_suggestion.rb +0 -209
  523. data/test/rubygems/test_gem_uri.rb +0 -41
  524. data/test/rubygems/test_gem_uri_formatter.rb +0 -27
  525. data/test/rubygems/test_gem_util.rb +0 -91
  526. data/test/rubygems/test_gem_validator.rb +0 -42
  527. data/test/rubygems/test_gem_version.rb +0 -305
  528. data/test/rubygems/test_gem_version_option.rb +0 -165
  529. data/test/rubygems/test_kernel.rb +0 -124
  530. data/test/rubygems/test_project_sanity.rb +0 -49
  531. data/test/rubygems/test_remote_fetch_error.rb +0 -20
  532. data/test/rubygems/test_require.rb +0 -732
  533. data/test/rubygems/test_rubygems.rb +0 -76
  534. data/test/rubygems/test_webauthn_listener.rb +0 -143
  535. data/test/rubygems/test_webauthn_listener_response.rb +0 -93
  536. data/test/rubygems/test_webauthn_poller.rb +0 -124
  537. data/test/rubygems/utilities.rb +0 -436
  538. data/test/rubygems/wrong_key_cert.pem +0 -19
  539. data/test/rubygems/wrong_key_cert_32.pem +0 -19
  540. data/test/test_changelog_generator.rb +0 -17
@@ -1,739 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "helper"
4
- require "rubygems/commands/build_command"
5
- require "rubygems/package"
6
-
7
- class TestGemCommandsBuildCommand < Gem::TestCase
8
- CERT_FILE = cert_path "public3072"
9
- SIGNING_KEY = key_path "private3072"
10
-
11
- EXPIRED_CERT_FILE = cert_path "expired"
12
- PRIVATE_KEY_FILE = key_path "private"
13
-
14
- def setup
15
- super
16
-
17
- readme_file = File.join(@tempdir, "README.md")
18
-
19
- begin
20
- umask_orig = File.umask(2)
21
- File.open readme_file, "w" do |f|
22
- f.write "My awesome gem"
23
- end
24
- ensure
25
- File.umask(umask_orig)
26
- end
27
-
28
- @gem = util_spec "some_gem" do |s|
29
- s.license = "AGPL-3.0"
30
- s.files = ["README.md"]
31
- end
32
-
33
- @cmd = Gem::Commands::BuildCommand.new
34
- end
35
-
36
- def test_handle_options
37
- @cmd.handle_options %w[--force --strict]
38
-
39
- assert @cmd.options[:force]
40
- assert @cmd.options[:strict]
41
- assert @cmd.handles?(%W[--platform #{Gem::Platform.local}])
42
- assert_includes Gem.platforms, Gem::Platform.local
43
- end
44
-
45
- def test_handle_deprecated_options
46
- use_ui @ui do
47
- @cmd.handle_options %w[-C ./test/dir]
48
- end
49
-
50
- assert_equal "WARNING: The \"-C\" option has been deprecated and will be removed in Rubygems 4.0. " \
51
- "-C is a global flag now. Use `gem -C PATH build GEMSPEC_FILE [options]` instead\n",
52
- @ui.error
53
- end
54
-
55
- def test_options_filename
56
- gemspec_file = File.join(@tempdir, @gem.spec_name)
57
-
58
- File.open gemspec_file, "w" do |gs|
59
- gs.write @gem.to_ruby
60
- end
61
-
62
- @cmd.options[:args] = [gemspec_file]
63
- @cmd.options[:output] = "test.gem"
64
-
65
- use_ui @ui do
66
- Dir.chdir @tempdir do
67
- @cmd.execute
68
- end
69
- end
70
-
71
- file = File.join(@tempdir, File::SEPARATOR, "test.gem")
72
- assert File.exist?(file)
73
-
74
- output = @ui.output.split "\n"
75
- assert_equal " Successfully built RubyGem", output.shift
76
- assert_equal " Name: some_gem", output.shift
77
- assert_equal " Version: 2", output.shift
78
- assert_equal " File: test.gem", output.shift
79
- assert_equal [], output
80
- end
81
-
82
- def test_handle_options_defaults
83
- @cmd.handle_options []
84
-
85
- refute @cmd.options[:force]
86
- refute @cmd.options[:strict]
87
- assert_nil @cmd.options[:output]
88
- end
89
-
90
- def test_execute
91
- gemspec_file = File.join(@tempdir, @gem.spec_name)
92
-
93
- File.open gemspec_file, "w" do |gs|
94
- gs.write @gem.to_ruby
95
- end
96
-
97
- @cmd.options[:args] = [gemspec_file]
98
-
99
- util_test_build_gem @gem
100
- end
101
-
102
- def test_execute_platform
103
- gemspec_file = File.join(@tempdir, @gem.spec_name)
104
-
105
- File.open gemspec_file, "w" do |gs|
106
- gs.write @gem.to_ruby
107
- end
108
-
109
- @cmd.options[:args] = [gemspec_file]
110
-
111
- platforms = Gem.platforms.dup
112
- begin
113
- Gem.platforms << Gem::Platform.new("java")
114
-
115
- spec = util_test_build_gem @gem, suffix: "java"
116
- ensure
117
- Gem.platforms.replace(platforms)
118
- end
119
- assert_match spec.platform, "java"
120
- end
121
-
122
- def test_execute_bad_name
123
- [".", "-", "_"].each do |special_char|
124
- gem = util_spec "some_gem_with_bad_name" do |s|
125
- s.name = "#{special_char}bad_gem_name"
126
- s.license = "AGPL-3.0"
127
- s.files = ["README.md"]
128
- end
129
-
130
- gemspec_file = File.join(@tempdir, gem.spec_name)
131
-
132
- File.open gemspec_file, "w" do |gs|
133
- gs.write gem.to_ruby
134
- end
135
-
136
- @cmd.options[:args] = [gemspec_file]
137
-
138
- use_ui @ui do
139
- Dir.chdir @tempdir do
140
- assert_raise Gem::InvalidSpecificationException do
141
- @cmd.execute
142
- end
143
- end
144
- end
145
- end
146
- end
147
-
148
- def test_execute_strict_without_warnings
149
- gemspec_file = File.join(@tempdir, @gem.spec_name)
150
-
151
- File.open gemspec_file, "w" do |gs|
152
- gs.write @gem.to_ruby
153
- end
154
-
155
- @cmd.options[:strict] = true
156
- @cmd.options[:args] = [gemspec_file]
157
-
158
- util_test_build_gem @gem
159
- end
160
-
161
- def test_execute_rubyforge_project_warning
162
- rubyforge_gemspec = File.expand_path File.join("specifications", "rubyforge-0.0.1.gemspec"), __dir__
163
-
164
- @cmd.options[:args] = [rubyforge_gemspec]
165
-
166
- use_ui @ui do
167
- Dir.chdir @tempdir do
168
- @cmd.execute
169
- end
170
- end
171
-
172
- error = @ui.error.split("\n")
173
- assert_equal "WARNING: rubyforge_project= is deprecated and ignored. Please remove this from your gemspec to ensure that your gem continues to build in the future.", error.shift
174
- assert_equal "WARNING: See https://guides.rubygems.org/specification-reference/ for help", error.shift
175
- assert_equal [], error
176
- end
177
-
178
- def test_execute_strict_with_warnings
179
- bad_gem = util_spec "some_bad_gem" do |s|
180
- s.files = ["README.md"]
181
- end
182
-
183
- gemspec_file = File.join(@tempdir, bad_gem.spec_name)
184
-
185
- File.open gemspec_file, "w" do |gs|
186
- gs.write bad_gem.to_ruby
187
- end
188
-
189
- @cmd.options[:args] = [gemspec_file]
190
- @cmd.options[:strict] = true
191
-
192
- use_ui @ui do
193
- Dir.chdir @tempdir do
194
- assert_raise Gem::InvalidSpecificationException do
195
- @cmd.execute
196
- end
197
- end
198
- end
199
-
200
- error = @ui.error.split "\n"
201
- assert_equal "WARNING: licenses is empty, but is recommended. Use a license identifier from", error.shift
202
- assert_equal "http://spdx.org/licenses or 'Nonstandard' for a nonstandard license,", error.shift
203
- assert_equal "or set it to nil if you don't want to specify a license.", error.shift
204
- assert_equal "WARNING: See https://guides.rubygems.org/specification-reference/ for help", error.shift
205
- assert_equal [], error
206
-
207
- gem_file = File.join @tempdir, File.basename(@gem.cache_file)
208
- refute File.exist?(gem_file)
209
- end
210
-
211
- def test_execute_bad_spec
212
- @gem.date = "2010-11-08"
213
-
214
- gemspec_file = File.join(@tempdir, @gem.spec_name)
215
-
216
- File.open gemspec_file, "w" do |gs|
217
- gs.write @gem.to_ruby.sub(/11-08/, "11-8")
218
- end
219
-
220
- @cmd.options[:args] = [gemspec_file]
221
-
222
- out, err = use_ui @ui do
223
- capture_output do
224
- assert_raise Gem::MockGemUi::TermError do
225
- @cmd.execute
226
- end
227
- end
228
- end
229
-
230
- assert_equal "", out
231
- assert_match(/invalid date format in specification/, err)
232
-
233
- assert_equal "", @ui.output
234
- assert_equal "ERROR: Error loading gemspec. Aborting.\n", @ui.error
235
- end
236
-
237
- def test_execute_missing_file
238
- @cmd.options[:args] = %w[some_gem]
239
- use_ui @ui do
240
- assert_raise Gem::MockGemUi::TermError do
241
- @cmd.execute
242
- end
243
- end
244
-
245
- assert_equal "", @ui.output
246
- assert_equal "ERROR: Couldn't find a gemspec file matching 'some_gem' in #{@tempdir}\n", @ui.error
247
- end
248
-
249
- def test_execute_outside_dir
250
- gemspec_dir = File.join @tempdir, "build_command_gem"
251
- gemspec_file = File.join gemspec_dir, @gem.spec_name
252
- readme_file = File.join gemspec_dir, "README.md"
253
-
254
- FileUtils.mkdir_p gemspec_dir
255
-
256
- File.open readme_file, "w" do |f|
257
- f.write "My awesome gem"
258
- end
259
-
260
- File.open gemspec_file, "w" do |gs|
261
- gs.write @gem.to_ruby
262
- end
263
-
264
- @cmd.options[:build_path] = gemspec_dir
265
- @cmd.options[:args] = [gemspec_file]
266
-
267
- use_ui @ui do
268
- @cmd.execute
269
- end
270
-
271
- output = @ui.output.split "\n"
272
- assert_equal " Successfully built RubyGem", output.shift
273
- assert_equal " Name: some_gem", output.shift
274
- assert_equal " Version: 2", output.shift
275
- assert_equal " File: some_gem-2.gem", output.shift
276
- assert_equal [], output
277
-
278
- gem_file = File.join gemspec_dir, File.basename(@gem.cache_file)
279
- assert File.exist?(gem_file)
280
-
281
- spec = Gem::Package.new(gem_file).spec
282
-
283
- assert_equal "some_gem", spec.name
284
- assert_equal "this is a summary", spec.summary
285
- end
286
-
287
- def test_execute_outside_dir_with_glob_argument
288
- gemspec_dir = File.join @tempdir, "build_command_gem"
289
- gemspec_file = File.join gemspec_dir, @gem.spec_name
290
- readme_file = File.join gemspec_dir, "README.md"
291
-
292
- FileUtils.mkdir_p gemspec_dir
293
-
294
- File.open readme_file, "w" do |f|
295
- f.write "My awesome gem"
296
- end
297
-
298
- File.open gemspec_file, "w" do |gs|
299
- gs.write @gem.to_ruby
300
- end
301
-
302
- @cmd.options[:build_path] = gemspec_dir
303
- @cmd.options[:args] = ["*.gemspec"]
304
-
305
- use_ui @ui do
306
- @cmd.execute
307
- end
308
-
309
- output = @ui.output.split "\n"
310
- assert_equal " Successfully built RubyGem", output.shift
311
- assert_equal " Name: some_gem", output.shift
312
- assert_equal " Version: 2", output.shift
313
- assert_equal " File: some_gem-2.gem", output.shift
314
- assert_equal [], output
315
-
316
- gem_file = File.join gemspec_dir, File.basename(@gem.cache_file)
317
- assert File.exist?(gem_file)
318
-
319
- spec = Gem::Package.new(gem_file).spec
320
-
321
- assert_equal "some_gem", spec.name
322
- assert_equal "this is a summary", spec.summary
323
- end
324
-
325
- def test_execute_outside_dir_no_gemspec_present
326
- gemspec_dir = File.join @tempdir, "build_command_gem"
327
- gemspec_file = File.join @tempdir, @gem.spec_name
328
- readme_file = File.join gemspec_dir, "README.md"
329
-
330
- FileUtils.mkdir_p gemspec_dir
331
-
332
- File.open readme_file, "w" do |f|
333
- f.write "My awesome gem"
334
- end
335
-
336
- File.open gemspec_file, "w" do |gs|
337
- gs.write @gem.to_ruby
338
- end
339
-
340
- @cmd.options[:build_path] = gemspec_dir
341
- @cmd.options[:args] = ["*.gemspec"]
342
-
343
- use_ui @ui do
344
- assert_raise Gem::MockGemUi::TermError do
345
- @cmd.execute
346
- end
347
- end
348
-
349
- assert_equal "", @ui.output
350
- assert_equal "ERROR: Couldn't find a gemspec file matching '*.gemspec' in #{gemspec_dir}\n", @ui.error
351
-
352
- gem_file = File.join gemspec_dir, File.basename(@gem.cache_file)
353
- refute File.exist?(gem_file)
354
- end
355
-
356
- def test_execute_outside_dir_without_gem_name
357
- gemspec_dir = File.join(@tempdir, "build_command_gem")
358
- gemspec_file = File.join(gemspec_dir, @gem.spec_name)
359
-
360
- readme_file = File.join gemspec_dir, "README.md"
361
-
362
- FileUtils.mkdir_p(gemspec_dir)
363
-
364
- File.open readme_file, "w" do |f|
365
- f.write "My awesome gem"
366
- end
367
-
368
- File.open(gemspec_file, "w") do |gs|
369
- gs.write(@gem.to_ruby)
370
- end
371
-
372
- @cmd.options[:build_path] = gemspec_dir
373
- @cmd.options[:args] = []
374
-
375
- use_ui @ui do
376
- Dir.chdir(gemspec_dir) do
377
- @cmd.execute
378
- end
379
- end
380
-
381
- output = @ui.output.split("\n")
382
- assert_equal " Successfully built RubyGem", output.shift
383
- assert_equal " Name: some_gem", output.shift
384
- assert_equal " Version: 2", output.shift
385
- assert_equal " File: some_gem-2.gem", output.shift
386
- assert_equal [], output
387
-
388
- gem_file = File.join gemspec_dir, File.basename(@gem.cache_file)
389
- assert File.exist?(gem_file)
390
-
391
- spec = Gem::Package.new(gem_file).spec
392
-
393
- assert_equal "some_gem", spec.name
394
- assert_equal "this is a summary", spec.summary
395
- end
396
-
397
- def test_execute_outside_dir_with_external_gemspec
398
- gemspec_dir = File.join @tempdir, "gemspec_dir"
399
- gemspec_file = File.join gemspec_dir, @gem.spec_name
400
-
401
- gemcode_dir = File.join @tempdir, "build_command_gem"
402
- readme_file = File.join gemcode_dir, "README.md"
403
-
404
- FileUtils.mkdir_p gemspec_dir
405
- FileUtils.mkdir_p gemcode_dir
406
-
407
- File.open readme_file, "w" do |f|
408
- f.write "My awesome gem in nested directory"
409
- end
410
-
411
- File.open gemspec_file, "w" do |gs|
412
- gs.write @gem.to_ruby
413
- end
414
-
415
- @cmd.options[:build_path] = gemcode_dir
416
- @cmd.options[:args] = [gemspec_file]
417
-
418
- use_ui @ui do
419
- @cmd.execute
420
- end
421
-
422
- output = @ui.output.split "\n"
423
- assert_equal " Successfully built RubyGem", output.shift
424
- assert_equal " Name: some_gem", output.shift
425
- assert_equal " Version: 2", output.shift
426
- assert_equal " File: some_gem-2.gem", output.shift
427
- assert_equal [], output
428
-
429
- gem_file = File.join gemcode_dir, File.basename(@gem.cache_file)
430
- assert File.exist?(gem_file)
431
-
432
- spec = Gem::Package.new(gem_file).spec
433
-
434
- assert_equal "some_gem", spec.name
435
- assert_equal "this is a summary", spec.summary
436
- end
437
-
438
- def test_execute_outside_dir_with_external_relative_gemspec
439
- gemspec_dir = File.join @tempdir, "gemspec_dir"
440
- gemspec_file = File.join gemspec_dir, @gem.spec_name
441
-
442
- gemcode_dir = File.join @tempdir, "build_command_gem"
443
- readme_file = File.join gemcode_dir, "README.md"
444
-
445
- FileUtils.mkdir_p gemspec_dir
446
- FileUtils.mkdir_p gemcode_dir
447
-
448
- File.open readme_file, "w" do |f|
449
- f.write "My awesome gem in nested directory"
450
- end
451
-
452
- File.open gemspec_file, "w" do |gs|
453
- gs.write @gem.to_ruby
454
- end
455
-
456
- @cmd.options[:build_path] = gemcode_dir
457
- @cmd.options[:args] = [File.join("..", "gemspec_dir", @gem.spec_name)]
458
-
459
- use_ui @ui do
460
- @cmd.execute
461
- end
462
-
463
- output = @ui.output.split "\n"
464
- assert_equal " Successfully built RubyGem", output.shift
465
- assert_equal " Name: some_gem", output.shift
466
- assert_equal " Version: 2", output.shift
467
- assert_equal " File: some_gem-2.gem", output.shift
468
- assert_equal [], output
469
-
470
- gem_file = File.join gemcode_dir, File.basename(@gem.cache_file)
471
- assert File.exist?(gem_file)
472
-
473
- spec = Gem::Package.new(gem_file).spec
474
-
475
- assert_equal "some_gem", spec.name
476
- assert_equal "this is a summary", spec.summary
477
- end
478
-
479
- def test_can_find_gemspecs_without_dot_gemspec
480
- gemspec_file = File.join(@tempdir, @gem.name)
481
-
482
- File.open gemspec_file + ".gemspec", "w" do |gs|
483
- gs.write @gem.to_ruby
484
- end
485
-
486
- @cmd.options[:args] = [gemspec_file]
487
-
488
- util_test_build_gem @gem
489
- end
490
-
491
- def test_execute_without_gem_name
492
- some_gem = util_spec "some_gem"
493
- gemspec_dir = File.join(@tempdir, "build_command_gem")
494
- gemspec_file = File.join(gemspec_dir, some_gem.spec_name)
495
-
496
- FileUtils.mkdir_p(gemspec_dir)
497
-
498
- File.open(gemspec_file, "w") do |gs|
499
- gs.write(some_gem.to_ruby)
500
- end
501
-
502
- @cmd.options[:args] = []
503
-
504
- use_ui @ui do
505
- Dir.chdir(gemspec_dir) do
506
- @cmd.execute
507
- end
508
- end
509
-
510
- output = @ui.output.split("\n")
511
- assert_equal " Successfully built RubyGem", output.shift
512
- assert_equal " Name: some_gem", output.shift
513
- assert_equal " Version: 2", output.shift
514
- assert_equal " File: some_gem-2.gem", output.shift
515
- assert_equal [], output
516
-
517
- some_gem = File.join(gemspec_dir, File.basename(some_gem.cache_file))
518
- assert File.exist?(some_gem)
519
- end
520
-
521
- def test_execute_multiple_gemspec_without_gem_name
522
- some_gem = util_spec "some_gem"
523
- another_gem = util_spec "another_gem"
524
- gemspec_dir = File.join(@tempdir, "build_command_gem")
525
- gemspec_file = File.join(gemspec_dir, some_gem.spec_name)
526
- another_gemspec_file = File.join(gemspec_dir, another_gem.spec_name)
527
-
528
- FileUtils.mkdir_p(gemspec_dir)
529
-
530
- File.open(gemspec_file, "w") do |gs|
531
- gs.write(some_gem.to_ruby)
532
- end
533
-
534
- File.open(another_gemspec_file, "w") do |gs|
535
- gs.write(another_gem.to_ruby)
536
- end
537
-
538
- @cmd.options[:args] = []
539
-
540
- use_ui @ui do
541
- Dir.chdir(gemspec_dir) do
542
- assert_raise Gem::MockGemUi::TermError do
543
- @cmd.execute
544
- end
545
- end
546
- end
547
-
548
- gemspecs = ["another_gem-2.gemspec", "some_gem-2.gemspec"]
549
- assert_equal "", @ui.output
550
- assert_equal @ui.error, "ERROR: Multiple gemspecs found: #{gemspecs}, please specify one\n"
551
-
552
- expected_gem = File.join(gemspec_dir, File.basename(another_gem.cache_file))
553
- refute File.exist?(expected_gem)
554
- end
555
-
556
- def util_test_build_gem(gem, suffix: nil)
557
- use_ui @ui do
558
- Dir.chdir @tempdir do
559
- @cmd.execute
560
- end
561
- end
562
- suffix &&= "-#{suffix}"
563
- gem_file = "some_gem-2#{suffix}.gem"
564
- output = @ui.output.split "\n"
565
- assert_equal " Successfully built RubyGem", output.shift
566
- assert_equal " Name: some_gem", output.shift
567
- assert_equal " Version: 2", output.shift
568
- assert_equal " File: #{gem_file}", output.shift
569
- assert_equal [], output
570
-
571
- gem_file = File.join(@tempdir, gem_file)
572
- assert File.exist?(gem_file)
573
-
574
- spec = Gem::Package.new(gem_file).spec
575
-
576
- assert_equal "some_gem", spec.name
577
- assert_equal "this is a summary", spec.summary
578
- spec
579
- end
580
-
581
- def test_execute_force
582
- gemspec_file = File.join(@tempdir, @gem.spec_name)
583
-
584
- @gem.send :remove_instance_variable, :@rubygems_version
585
-
586
- File.open gemspec_file, "w" do |gs|
587
- gs.write @gem.to_ruby
588
- end
589
-
590
- @cmd.options[:args] = [gemspec_file]
591
- @cmd.options[:force] = true
592
-
593
- util_test_build_gem @gem
594
- end
595
-
596
- def test_build_signed_gem
597
- pend "openssl is missing" unless Gem::HAVE_OPENSSL && !java_platform?
598
-
599
- trust_dir = Gem::Security.trust_dir
600
-
601
- spec = util_spec "some_gem" do |s|
602
- s.signing_key = SIGNING_KEY
603
- s.cert_chain = [CERT_FILE]
604
- end
605
-
606
- gemspec_file = File.join(@tempdir, spec.spec_name)
607
-
608
- File.open gemspec_file, "w" do |gs|
609
- gs.write spec.to_ruby
610
- end
611
-
612
- @cmd.options[:args] = [gemspec_file]
613
-
614
- util_test_build_gem spec
615
-
616
- trust_dir.trust_cert OpenSSL::X509::Certificate.new(File.read(CERT_FILE))
617
-
618
- gem = Gem::Package.new(File.join(@tempdir, spec.file_name),
619
- Gem::Security::HighSecurity)
620
- assert gem.verify
621
- end
622
-
623
- def test_build_signed_gem_with_cert_expiration_length_days
624
- pend "openssl is missing" unless Gem::HAVE_OPENSSL && !java_platform?
625
-
626
- gem_path = File.join Gem.user_home, ".gem"
627
- Dir.mkdir gem_path
628
-
629
- Gem::Security.trust_dir
630
-
631
- tmp_expired_cert_file = File.join gem_path, "gem-public_cert.pem"
632
- File.write(tmp_expired_cert_file, File.read(EXPIRED_CERT_FILE))
633
-
634
- tmp_private_key_file = File.join gem_path, "gem-private_key.pem"
635
- File.write(tmp_private_key_file, File.read(PRIVATE_KEY_FILE))
636
-
637
- spec = util_spec "some_gem" do |s|
638
- s.signing_key = tmp_private_key_file
639
- s.cert_chain = [tmp_expired_cert_file]
640
- end
641
-
642
- gemspec_file = File.join(@tempdir, spec.spec_name)
643
-
644
- File.open gemspec_file, "w" do |gs|
645
- gs.write spec.to_ruby
646
- end
647
-
648
- @cmd.options[:args] = [gemspec_file]
649
-
650
- Gem.configuration.cert_expiration_length_days = 28
651
-
652
- use_ui @ui do
653
- Dir.chdir @tempdir do
654
- @cmd.execute
655
- end
656
- end
657
-
658
- re_signed_cert = OpenSSL::X509::Certificate.new(File.read(tmp_expired_cert_file))
659
- cert_days_to_expire = (re_signed_cert.not_after - re_signed_cert.not_before).to_i / (24 * 60 * 60)
660
-
661
- gem_file = File.join @tempdir, File.basename(spec.cache_file)
662
-
663
- assert File.exist?(gem_file)
664
- assert_equal(28, cert_days_to_expire)
665
- end
666
-
667
- def test_build_auto_resign_cert
668
- pend "openssl is missing" unless Gem::HAVE_OPENSSL && !java_platform?
669
-
670
- gem_path = File.join Gem.user_home, ".gem"
671
- Dir.mkdir gem_path
672
-
673
- Gem::Security.trust_dir
674
-
675
- tmp_expired_cert_file = File.join gem_path, "gem-public_cert.pem"
676
- File.write(tmp_expired_cert_file, File.read(EXPIRED_CERT_FILE))
677
-
678
- tmp_private_key_file = File.join gem_path, "gem-private_key.pem"
679
- File.write(tmp_private_key_file, File.read(PRIVATE_KEY_FILE))
680
-
681
- spec = util_spec "some_gem" do |s|
682
- s.signing_key = tmp_private_key_file
683
- s.cert_chain = [tmp_expired_cert_file]
684
- end
685
-
686
- gemspec_file = File.join(@tempdir, spec.spec_name)
687
-
688
- File.open gemspec_file, "w" do |gs|
689
- gs.write spec.to_ruby
690
- end
691
-
692
- @cmd.options[:args] = [gemspec_file]
693
-
694
- Gem.configuration.cert_expiration_length_days = 28
695
-
696
- use_ui @ui do
697
- Dir.chdir @tempdir do
698
- @cmd.execute
699
- end
700
- end
701
-
702
- output = @ui.output.split "\n"
703
- assert_equal "INFO: Your certificate has expired, trying to re-sign it...", output.shift
704
- assert_equal "INFO: Your cert: #{tmp_expired_cert_file } has been auto re-signed with the key: #{tmp_private_key_file}", output.shift
705
- assert_match(/INFO: Your expired cert will be located at: .+\Wgem-public_cert\.pem\.expired\.[0-9]+/, output.shift)
706
- end
707
-
708
- def test_build_is_reproducible
709
- epoch = ENV["SOURCE_DATE_EPOCH"]
710
- new_epoch = Time.now.to_i.to_s
711
- ENV["SOURCE_DATE_EPOCH"] = new_epoch
712
-
713
- gem_file = File.basename(@gem.cache_file)
714
-
715
- gemspec_file = File.join(@tempdir, @gem.spec_name)
716
- File.write(gemspec_file, @gem.to_ruby)
717
- @cmd.options[:args] = [gemspec_file]
718
-
719
- util_test_build_gem @gem
720
-
721
- build1_contents = File.read(gem_file)
722
-
723
- # Guarantee the time has changed.
724
- sleep 1 if Time.now.to_i == new_epoch
725
-
726
- ENV["SOURCE_DATE_EPOCH"] = new_epoch
727
-
728
- @ui = Gem::MockGemUi.new
729
- @cmd.options[:args] = [gemspec_file]
730
-
731
- util_test_build_gem @gem
732
-
733
- build2_contents = File.read(gem_file)
734
-
735
- assert_equal build1_contents, build2_contents
736
- ensure
737
- ENV["SOURCE_DATE_EPOCH"] = epoch
738
- end
739
- end