rubygems-update 3.3.18 → 3.4.19
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1429 -1064
- data/CONTRIBUTING.md +31 -8
- data/Manifest.txt +61 -36
- data/POLICIES.md +55 -20
- data/README.md +19 -6
- data/bundler/CHANGELOG.md +457 -1
- data/bundler/README.md +3 -6
- data/bundler/UPGRADING.md +11 -4
- data/bundler/bundler.gemspec +8 -10
- data/bundler/exe/bundle +5 -16
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/cli/add.rb +1 -1
- data/bundler/lib/bundler/cli/binstubs.rb +6 -2
- data/bundler/lib/bundler/cli/check.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +2 -0
- data/bundler/lib/bundler/cli/console.rb +2 -2
- data/bundler/lib/bundler/cli/doctor.rb +4 -6
- data/bundler/lib/bundler/cli/gem.rb +62 -40
- data/bundler/lib/bundler/cli/info.rb +1 -1
- data/bundler/lib/bundler/cli/init.rb +6 -2
- data/bundler/lib/bundler/cli/install.rb +8 -6
- data/bundler/lib/bundler/cli/lock.rb +8 -5
- data/bundler/lib/bundler/cli/open.rb +6 -4
- data/bundler/lib/bundler/cli/outdated.rb +14 -7
- data/bundler/lib/bundler/cli/platform.rb +7 -5
- data/bundler/lib/bundler/cli/viz.rb +1 -1
- data/bundler/lib/bundler/cli.rb +53 -7
- data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
- data/bundler/lib/bundler/compact_index_client/updater.rb +40 -39
- data/bundler/lib/bundler/constants.rb +1 -1
- data/bundler/lib/bundler/current_ruby.rb +16 -5
- data/bundler/lib/bundler/definition.rb +262 -133
- data/bundler/lib/bundler/dependency.rb +20 -86
- data/bundler/lib/bundler/digest.rb +1 -1
- data/bundler/lib/bundler/dsl.rb +6 -7
- data/bundler/lib/bundler/endpoint_specification.rb +2 -13
- data/bundler/lib/bundler/env.rb +2 -2
- data/bundler/lib/bundler/environment_preserver.rb +3 -2
- data/bundler/lib/bundler/errors.rb +1 -11
- data/bundler/lib/bundler/feature_flag.rb +0 -2
- data/bundler/lib/bundler/fetcher/compact_index.rb +11 -13
- data/bundler/lib/bundler/fetcher/dependency.rb +2 -6
- data/bundler/lib/bundler/fetcher/downloader.rb +4 -5
- data/bundler/lib/bundler/fetcher/index.rb +1 -2
- data/bundler/lib/bundler/fetcher.rb +21 -15
- data/bundler/lib/bundler/force_platform.rb +18 -0
- data/bundler/lib/bundler/friendly_errors.rb +1 -4
- data/bundler/lib/bundler/gem_helper.rb +3 -4
- data/bundler/lib/bundler/gem_helpers.rb +7 -2
- data/bundler/lib/bundler/gem_version_promoter.rb +53 -98
- data/bundler/lib/bundler/graph.rb +3 -3
- data/bundler/lib/bundler/index.rb +13 -47
- data/bundler/lib/bundler/injector.rb +5 -4
- data/bundler/lib/bundler/inline.rb +9 -11
- data/bundler/lib/bundler/installer/parallel_installer.rb +4 -34
- data/bundler/lib/bundler/installer/standalone.rb +13 -9
- data/bundler/lib/bundler/installer.rb +17 -29
- data/bundler/lib/bundler/lazy_specification.rb +54 -53
- data/bundler/lib/bundler/lockfile_generator.rb +3 -3
- data/bundler/lib/bundler/lockfile_parser.rb +17 -16
- data/bundler/lib/bundler/man/bundle-add.1 +6 -2
- data/bundler/lib/bundler/man/bundle-add.1.ronn +4 -1
- data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
- data/bundler/lib/bundler/man/bundle-cache.1 +9 -3
- data/bundler/lib/bundler/man/bundle-cache.1.ronn +9 -2
- data/bundler/lib/bundler/man/bundle-check.1 +1 -1
- data/bundler/lib/bundler/man/bundle-clean.1 +2 -2
- data/bundler/lib/bundler/man/bundle-clean.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-config.1 +26 -10
- data/bundler/lib/bundler/man/bundle-config.1.ronn +17 -10
- data/bundler/lib/bundler/man/bundle-console.1 +53 -0
- data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
- data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
- data/bundler/lib/bundler/man/bundle-exec.1 +6 -6
- data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -6
- data/bundler/lib/bundler/man/bundle-gem.1 +27 -37
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +5 -5
- data/bundler/lib/bundler/man/bundle-help.1 +13 -0
- data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
- data/bundler/lib/bundler/man/bundle-info.1 +3 -3
- data/bundler/lib/bundler/man/bundle-info.1.ronn +3 -3
- data/bundler/lib/bundler/man/bundle-init.1 +5 -1
- data/bundler/lib/bundler/man/bundle-init.1.ronn +2 -0
- data/bundler/lib/bundler/man/bundle-inject.1 +5 -2
- data/bundler/lib/bundler/man/bundle-inject.1.ronn +3 -1
- data/bundler/lib/bundler/man/bundle-install.1 +5 -30
- data/bundler/lib/bundler/man/bundle-install.1.ronn +6 -29
- data/bundler/lib/bundler/man/bundle-list.1 +1 -1
- data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
- data/bundler/lib/bundler/man/bundle-open.1 +22 -2
- data/bundler/lib/bundler/man/bundle-open.1.ronn +9 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +13 -9
- data/bundler/lib/bundler/man/bundle-outdated.1.ronn +12 -9
- data/bundler/lib/bundler/man/bundle-platform.1 +16 -6
- data/bundler/lib/bundler/man/bundle-platform.1.ronn +14 -7
- data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
- data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
- data/bundler/lib/bundler/man/bundle-show.1 +1 -1
- data/bundler/lib/bundler/man/bundle-update.1 +1 -1
- data/bundler/lib/bundler/man/bundle-version.1 +35 -0
- data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
- data/bundler/lib/bundler/man/bundle-viz.1 +4 -1
- data/bundler/lib/bundler/man/bundle-viz.1.ronn +2 -0
- data/bundler/lib/bundler/man/bundle.1 +15 -10
- data/bundler/lib/bundler/man/bundle.1.ronn +12 -7
- data/bundler/lib/bundler/man/gemfile.5 +55 -55
- data/bundler/lib/bundler/man/gemfile.5.ronn +57 -53
- data/bundler/lib/bundler/man/index.txt +4 -0
- data/bundler/lib/bundler/match_metadata.rb +13 -0
- data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
- data/bundler/lib/bundler/mirror.rb +5 -7
- data/bundler/lib/bundler/plugin/index.rb +5 -5
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -4
- data/bundler/lib/bundler/plugin/installer.rb +5 -2
- data/bundler/lib/bundler/plugin.rb +3 -1
- data/bundler/lib/bundler/remote_specification.rb +7 -12
- data/bundler/lib/bundler/resolver/base.rb +107 -0
- data/bundler/lib/bundler/resolver/candidate.rb +94 -0
- data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
- data/bundler/lib/bundler/resolver/package.rb +72 -0
- data/bundler/lib/bundler/resolver/root.rb +25 -0
- data/bundler/lib/bundler/resolver/spec_group.rb +42 -71
- data/bundler/lib/bundler/resolver.rb +335 -328
- data/bundler/lib/bundler/ruby_dsl.rb +7 -1
- data/bundler/lib/bundler/ruby_version.rb +8 -8
- data/bundler/lib/bundler/rubygems_ext.rb +100 -9
- data/bundler/lib/bundler/rubygems_gem_installer.rb +23 -14
- data/bundler/lib/bundler/rubygems_integration.rb +11 -15
- data/bundler/lib/bundler/runtime.rb +2 -6
- data/bundler/lib/bundler/safe_marshal.rb +31 -0
- data/bundler/lib/bundler/settings.rb +5 -11
- data/bundler/lib/bundler/setup.rb +4 -1
- data/bundler/lib/bundler/shared_helpers.rb +3 -3
- data/bundler/lib/bundler/source/git/git_proxy.rb +237 -74
- data/bundler/lib/bundler/source/git.rb +55 -30
- data/bundler/lib/bundler/source/metadata.rb +1 -2
- data/bundler/lib/bundler/source/path/installer.rb +1 -22
- data/bundler/lib/bundler/source/path.rb +6 -6
- data/bundler/lib/bundler/source/rubygems.rb +26 -81
- data/bundler/lib/bundler/source.rb +1 -1
- data/bundler/lib/bundler/source_list.rb +8 -2
- data/bundler/lib/bundler/spec_set.rb +60 -37
- data/bundler/lib/bundler/templates/Executable +1 -1
- data/bundler/lib/bundler/templates/Executable.bundler +5 -10
- data/bundler/lib/bundler/templates/Executable.standalone +2 -0
- data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/README.md.tt +6 -4
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +12 -1
- data/bundler/lib/bundler/templates/newgem/bin/console.tt +0 -4
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt +10 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +1 -1
- data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +10 -0
- data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +13 -4
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +9 -2
- data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
- data/bundler/lib/bundler/ui/shell.rb +35 -12
- data/bundler/lib/bundler/ui/silent.rb +21 -5
- data/bundler/lib/bundler/uri_normalizer.rb +23 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1351 -409
- data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
- data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +248 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +64 -16
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +27 -7
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +15 -9
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +11 -6
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +1 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -2
- data/bundler/lib/bundler/vendored_persistent.rb +1 -33
- data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_pub_grub.rb} +1 -1
- data/bundler/lib/bundler/version.rb +5 -1
- data/bundler/lib/bundler/worker.rb +5 -7
- data/bundler/lib/bundler.rb +25 -77
- data/{bin → exe}/gem +4 -5
- data/{bin → exe}/update_rubygems +12 -10
- data/lib/rubygems/available_set.rb +4 -3
- data/lib/rubygems/basic_specification.rb +5 -4
- data/lib/rubygems/bundler_version_finder.rb +2 -2
- data/lib/rubygems/command.rb +41 -32
- data/lib/rubygems/command_manager.rb +30 -15
- data/lib/rubygems/commands/build_command.rb +12 -8
- data/lib/rubygems/commands/cert_command.rb +34 -33
- data/lib/rubygems/commands/check_command.rb +21 -20
- data/lib/rubygems/commands/cleanup_command.rb +18 -17
- data/lib/rubygems/commands/contents_command.rb +14 -13
- data/lib/rubygems/commands/dependency_command.rb +17 -16
- data/lib/rubygems/commands/environment_command.rb +6 -5
- data/lib/rubygems/commands/exec_command.rb +249 -0
- data/lib/rubygems/commands/fetch_command.rb +10 -9
- data/lib/rubygems/commands/generate_index_command.rb +18 -17
- data/lib/rubygems/commands/help_command.rb +7 -6
- data/lib/rubygems/commands/info_command.rb +3 -3
- data/lib/rubygems/commands/install_command.rb +28 -23
- data/lib/rubygems/commands/list_command.rb +4 -3
- data/lib/rubygems/commands/lock_command.rb +5 -4
- data/lib/rubygems/commands/mirror_command.rb +4 -3
- data/lib/rubygems/commands/open_command.rb +10 -9
- data/lib/rubygems/commands/outdated_command.rb +6 -5
- data/lib/rubygems/commands/owner_command.rb +17 -14
- data/lib/rubygems/commands/pristine_command.rb +46 -36
- data/lib/rubygems/commands/push_command.rb +9 -8
- data/lib/rubygems/commands/query_command.rb +9 -8
- data/lib/rubygems/commands/rdoc_command.rb +21 -19
- data/lib/rubygems/commands/search_command.rb +4 -3
- data/lib/rubygems/commands/server_command.rb +4 -3
- data/lib/rubygems/commands/setup_command.rb +97 -106
- data/lib/rubygems/commands/signin_command.rb +10 -9
- data/lib/rubygems/commands/signout_command.rb +8 -7
- data/lib/rubygems/commands/sources_command.rb +22 -21
- data/lib/rubygems/commands/specification_command.rb +14 -13
- data/lib/rubygems/commands/stale_command.rb +3 -2
- data/lib/rubygems/commands/uninstall_command.rb +44 -40
- data/lib/rubygems/commands/unpack_command.rb +14 -13
- data/lib/rubygems/commands/update_command.rb +42 -63
- data/lib/rubygems/commands/which_command.rb +8 -7
- data/lib/rubygems/commands/yank_command.rb +12 -11
- data/lib/rubygems/config_file.rb +55 -21
- data/lib/rubygems/core_ext/kernel_gem.rb +1 -6
- data/lib/rubygems/core_ext/kernel_require.rb +109 -115
- data/lib/rubygems/core_ext/kernel_warn.rb +33 -37
- data/lib/rubygems/core_ext/tcpsocket_init.rb +3 -1
- data/lib/rubygems/defaults.rb +33 -18
- data/lib/rubygems/dependency.rb +15 -11
- data/lib/rubygems/dependency_installer.rb +38 -37
- data/lib/rubygems/dependency_list.rb +7 -6
- data/lib/rubygems/deprecate.rb +3 -2
- data/lib/rubygems/doctor.rb +19 -18
- data/lib/rubygems/errors.rb +3 -2
- data/lib/rubygems/exceptions.rb +16 -8
- data/lib/rubygems/ext/build_error.rb +2 -1
- data/lib/rubygems/ext/builder.rb +37 -21
- data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +9 -5
- data/lib/rubygems/ext/cargo_builder.rb +150 -111
- data/lib/rubygems/ext/cmake_builder.rb +2 -2
- data/lib/rubygems/ext/configure_builder.rb +2 -1
- data/lib/rubygems/ext/ext_conf_builder.rb +11 -9
- data/lib/rubygems/ext/rake_builder.rb +7 -5
- data/lib/rubygems/ext.rb +8 -7
- data/lib/rubygems/gem_runner.rb +6 -5
- data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +163 -0
- data/lib/rubygems/gemcutter_utilities/webauthn_listener.rb +105 -0
- data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +78 -0
- data/lib/rubygems/gemcutter_utilities.rb +90 -34
- data/lib/rubygems/indexer.rb +29 -28
- data/lib/rubygems/install_default_message.rb +3 -2
- data/lib/rubygems/install_message.rb +3 -2
- data/lib/rubygems/install_update_options.rb +56 -55
- data/lib/rubygems/installer.rb +54 -46
- data/lib/rubygems/installer_uninstaller_utils.rb +2 -2
- data/lib/rubygems/local_remote_options.rb +19 -20
- data/lib/rubygems/mock_gem_ui.rb +3 -2
- data/lib/rubygems/name_tuple.rb +5 -4
- data/lib/rubygems/optparse/lib/optparse.rb +20 -15
- data/lib/rubygems/optparse.rb +1 -1
- data/lib/rubygems/package/digest_io.rb +1 -0
- data/lib/rubygems/package/file_source.rb +3 -2
- data/lib/rubygems/package/io_source.rb +1 -0
- data/lib/rubygems/package/old.rb +9 -8
- data/lib/rubygems/package/source.rb +1 -0
- data/lib/rubygems/package/tar_header.rb +63 -62
- data/lib/rubygems/package/tar_reader/entry.rb +91 -9
- data/lib/rubygems/package/tar_reader.rb +2 -29
- data/lib/rubygems/package/tar_writer.rb +8 -7
- data/lib/rubygems/package.rb +64 -48
- data/lib/rubygems/package_task.rb +5 -4
- data/lib/rubygems/path_support.rb +1 -0
- data/lib/rubygems/platform.rb +79 -53
- data/lib/rubygems/psych_tree.rb +2 -1
- data/lib/rubygems/query_utils.rb +35 -35
- data/lib/rubygems/rdoc.rb +3 -2
- data/lib/rubygems/remote_fetcher.rb +23 -22
- data/lib/rubygems/request/connection_pools.rb +4 -4
- data/lib/rubygems/request/http_pool.rb +2 -1
- data/lib/rubygems/request/https_pool.rb +1 -0
- data/lib/rubygems/request.rb +23 -22
- data/lib/rubygems/request_set/gem_dependency_api.rb +123 -123
- data/lib/rubygems/request_set/lockfile/parser.rb +28 -27
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -3
- data/lib/rubygems/request_set/lockfile.rb +6 -5
- data/lib/rubygems/request_set.rb +20 -19
- data/lib/rubygems/requirement.rb +15 -14
- data/lib/rubygems/resolver/activation_request.rb +4 -3
- data/lib/rubygems/resolver/api_set.rb +5 -4
- data/lib/rubygems/resolver/api_specification.rb +7 -6
- data/lib/rubygems/resolver/best_set.rb +6 -5
- data/lib/rubygems/resolver/composed_set.rb +1 -0
- data/lib/rubygems/resolver/conflict.rb +11 -10
- data/lib/rubygems/resolver/current_set.rb +1 -0
- data/lib/rubygems/resolver/dependency_request.rb +3 -2
- data/lib/rubygems/resolver/git_set.rb +3 -2
- data/lib/rubygems/resolver/git_specification.rb +7 -6
- data/lib/rubygems/resolver/index_set.rb +4 -3
- data/lib/rubygems/resolver/index_specification.rb +7 -5
- data/lib/rubygems/resolver/installed_specification.rb +5 -4
- data/lib/rubygems/resolver/installer_set.rb +15 -17
- data/lib/rubygems/resolver/local_specification.rb +3 -2
- data/lib/rubygems/resolver/lock_set.rb +5 -4
- data/lib/rubygems/resolver/lock_specification.rb +5 -4
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +1 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/lib/rubygems/resolver/molinillo.rb +2 -1
- data/lib/rubygems/resolver/requirement_list.rb +1 -0
- data/lib/rubygems/resolver/set.rb +1 -0
- data/lib/rubygems/resolver/source_set.rb +2 -0
- data/lib/rubygems/resolver/spec_specification.rb +1 -0
- data/lib/rubygems/resolver/specification.rb +2 -1
- data/lib/rubygems/resolver/stats.rb +2 -1
- data/lib/rubygems/resolver/vendor_set.rb +2 -1
- data/lib/rubygems/resolver/vendor_specification.rb +4 -3
- data/lib/rubygems/resolver.rb +41 -40
- data/lib/rubygems/s3_uri_signer.rb +10 -8
- data/lib/rubygems/safe_yaml.rb +4 -2
- data/lib/rubygems/security/policies.rb +48 -47
- data/lib/rubygems/security/policy.rb +19 -18
- data/lib/rubygems/security/signer.rb +6 -5
- data/lib/rubygems/security/trust_dir.rb +5 -4
- data/lib/rubygems/security.rb +30 -42
- data/lib/rubygems/security_option.rb +6 -5
- data/lib/rubygems/shellwords.rb +3 -0
- data/lib/rubygems/source/git.rb +22 -22
- data/lib/rubygems/source/installed.rb +2 -1
- data/lib/rubygems/source/local.rb +3 -2
- data/lib/rubygems/source/lock.rb +1 -0
- data/lib/rubygems/source/specific_file.rb +2 -1
- data/lib/rubygems/source/vendor.rb +1 -0
- data/lib/rubygems/source.rb +16 -16
- data/lib/rubygems/spec_fetcher.rb +10 -9
- data/lib/rubygems/specification.rb +121 -114
- data/lib/rubygems/specification_policy.rb +36 -15
- data/lib/rubygems/stub_specification.rb +11 -9
- data/lib/rubygems/text.rb +2 -2
- data/lib/rubygems/tsort/lib/tsort.rb +308 -310
- data/lib/rubygems/tsort.rb +1 -1
- data/lib/rubygems/uninstaller.rb +19 -18
- data/lib/rubygems/update_suggestion.rb +69 -0
- data/lib/rubygems/uri.rb +4 -4
- data/lib/rubygems/uri_formatter.rb +1 -1
- data/lib/rubygems/user_interaction.rb +37 -21
- data/lib/rubygems/util/licenses.rb +4 -3
- data/lib/rubygems/util/list.rb +1 -0
- data/lib/rubygems/util.rb +12 -15
- data/lib/rubygems/validator.rb +7 -6
- data/lib/rubygems/version.rb +17 -11
- data/lib/rubygems/version_option.rb +4 -3
- data/lib/rubygems.rb +89 -68
- data/rubygems-update.gemspec +10 -8
- data/setup.rb +10 -9
- data/test/rubygems/alternate_cert.pem +14 -14
- data/test/rubygems/alternate_cert_32.pem +15 -15
- data/test/rubygems/alternate_key.pem +25 -25
- data/test/rubygems/bad_rake.rb +1 -0
- data/test/rubygems/bundler_test_gem.rb +421 -0
- data/test/rubygems/child_cert.pem +15 -16
- data/test/rubygems/child_cert_32.pem +15 -16
- data/test/rubygems/child_key.pem +25 -25
- data/test/rubygems/encrypted_private_key.pem +26 -26
- data/test/rubygems/expired_cert.pem +15 -15
- data/test/rubygems/fake_certlib/openssl.rb +1 -0
- data/test/rubygems/future_cert.pem +15 -15
- data/test/rubygems/future_cert_32.pem +15 -15
- data/test/rubygems/good_rake.rb +1 -0
- data/test/rubygems/grandchild_cert.pem +15 -16
- data/test/rubygems/grandchild_cert_32.pem +15 -16
- data/test/rubygems/grandchild_key.pem +25 -25
- data/test/rubygems/helper.rb +172 -151
- data/test/rubygems/installer_test_case.rb +14 -13
- data/test/rubygems/invalid_issuer_cert.pem +16 -16
- data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
- data/test/rubygems/invalid_key.pem +25 -25
- data/test/rubygems/invalid_signer_cert.pem +15 -15
- data/test/rubygems/invalid_signer_cert_32.pem +15 -15
- data/test/rubygems/invalidchild_cert.pem +15 -16
- data/test/rubygems/invalidchild_cert_32.pem +15 -16
- data/test/rubygems/invalidchild_key.pem +25 -25
- data/test/rubygems/multifactor_auth_utilities.rb +111 -0
- data/test/rubygems/package/tar_test_case.rb +53 -17
- data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
- data/test/rubygems/plugin/exception/rubygems_plugin.rb +2 -1
- data/test/rubygems/plugin/load/rubygems_plugin.rb +1 -0
- data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +2 -1
- data/test/rubygems/private_key.pem +25 -25
- data/test/rubygems/public_cert.pem +16 -16
- data/test/rubygems/public_cert_32.pem +15 -15
- data/test/rubygems/public_key.pem +7 -7
- data/test/rubygems/rubygems/commands/crash_command.rb +1 -0
- data/test/rubygems/rubygems_plugin.rb +3 -2
- data/test/rubygems/simple_gem.rb +2 -1
- data/test/rubygems/specifications/bar-0.0.2.gemspec +2 -0
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +6 -4
- data/test/rubygems/test_bundled_ca.rb +13 -12
- data/test/rubygems/test_config.rb +5 -4
- data/test/rubygems/test_deprecate.rb +5 -4
- data/test/rubygems/test_exit.rb +9 -3
- data/test/rubygems/test_gem.rb +339 -677
- data/test/rubygems/test_gem_available_set.rb +22 -21
- data/test/rubygems/test_gem_bundler_version_finder.rb +6 -4
- data/test/rubygems/test_gem_command.rb +45 -44
- data/test/rubygems/test_gem_command_manager.rb +96 -30
- data/test/rubygems/test_gem_commands_build_command.rb +74 -63
- data/test/rubygems/test_gem_commands_cert_command.rb +98 -99
- data/test/rubygems/test_gem_commands_check_command.rb +5 -4
- data/test/rubygems/test_gem_commands_cleanup_command.rb +41 -40
- data/test/rubygems/test_gem_commands_contents_command.rb +28 -27
- data/test/rubygems/test_gem_commands_dependency_command.rb +37 -36
- data/test/rubygems/test_gem_commands_environment_command.rb +17 -16
- data/test/rubygems/test_gem_commands_exec_command.rb +853 -0
- data/test/rubygems/test_gem_commands_fetch_command.rb +38 -37
- data/test/rubygems/test_gem_commands_generate_index_command.rb +8 -7
- data/test/rubygems/test_gem_commands_help_command.rb +14 -13
- data/test/rubygems/test_gem_commands_info_command.rb +29 -2
- data/test/rubygems/test_gem_commands_install_command.rb +152 -132
- data/test/rubygems/test_gem_commands_list_command.rb +5 -4
- data/test/rubygems/test_gem_commands_lock_command.rb +11 -10
- data/test/rubygems/test_gem_commands_mirror.rb +3 -2
- data/test/rubygems/test_gem_commands_open_command.rb +5 -4
- data/test/rubygems/test_gem_commands_outdated_command.rb +10 -9
- data/test/rubygems/test_gem_commands_owner_command.rb +227 -50
- data/test/rubygems/test_gem_commands_pristine_command.rb +142 -93
- data/test/rubygems/test_gem_commands_push_command.rb +189 -64
- data/test/rubygems/test_gem_commands_query_command.rb +74 -73
- data/test/rubygems/test_gem_commands_search_command.rb +3 -2
- data/test/rubygems/test_gem_commands_server_command.rb +3 -2
- data/test/rubygems/test_gem_commands_setup_command.rb +123 -96
- data/test/rubygems/test_gem_commands_signin_command.rb +71 -31
- data/test/rubygems/test_gem_commands_signout_command.rb +3 -3
- data/test/rubygems/test_gem_commands_sources_command.rb +29 -29
- data/test/rubygems/test_gem_commands_specification_command.rb +33 -32
- data/test/rubygems/test_gem_commands_stale_command.rb +5 -4
- data/test/rubygems/test_gem_commands_uninstall_command.rb +99 -81
- data/test/rubygems/test_gem_commands_unpack_command.rb +32 -31
- data/test/rubygems/test_gem_commands_update_command.rb +96 -95
- data/test/rubygems/test_gem_commands_which_command.rb +7 -6
- data/test/rubygems/test_gem_commands_yank_command.rb +162 -43
- data/test/rubygems/test_gem_config_file.rb +94 -81
- data/test/rubygems/test_gem_dependency.rb +76 -73
- data/test/rubygems/test_gem_dependency_installer.rb +200 -165
- data/test/rubygems/test_gem_dependency_list.rb +48 -47
- data/test/rubygems/test_gem_dependency_resolution_error.rb +5 -4
- data/test/rubygems/test_gem_doctor.rb +27 -26
- data/test/rubygems/test_gem_ext_builder.rb +60 -61
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +4 -4
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{Cargo.lock → ext/custom_name_lib/Cargo.lock} +23 -33
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{Cargo.toml → ext/custom_name_lib/Cargo.toml} +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{src → ext/custom_name_lib/src}/lib.rs +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +3 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +37 -33
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +2 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +12 -0
- data/test/rubygems/test_gem_ext_cargo_builder.rb +48 -59
- data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +20 -19
- data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +21 -36
- data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -15
- data/test/rubygems/test_gem_ext_configure_builder.rb +14 -13
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +51 -52
- data/test/rubygems/test_gem_ext_rake_builder.rb +16 -15
- data/test/rubygems/test_gem_gem_runner.rb +15 -9
- data/test/rubygems/test_gem_gemcutter_utilities.rb +170 -84
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +5 -4
- data/test/rubygems/test_gem_indexer.rb +87 -67
- data/test/rubygems/test_gem_install_update_options.rb +17 -16
- data/test/rubygems/test_gem_installer.rb +422 -304
- data/test/rubygems/test_gem_local_remote_options.rb +11 -10
- data/test/rubygems/test_gem_name_tuple.rb +5 -4
- data/test/rubygems/test_gem_package.rb +243 -231
- data/test/rubygems/test_gem_package_old.rb +14 -13
- data/test/rubygems/test_gem_package_tar_header.rb +48 -47
- data/test/rubygems/test_gem_package_tar_reader.rb +56 -8
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +162 -16
- data/test/rubygems/test_gem_package_tar_writer.rb +77 -76
- data/test/rubygems/test_gem_package_task.rb +19 -18
- data/test/rubygems/test_gem_path_support.rb +15 -14
- data/test/rubygems/test_gem_platform.rb +333 -227
- data/test/rubygems/test_gem_rdoc.rb +15 -14
- data/test/rubygems/test_gem_remote_fetcher.rb +155 -154
- data/test/rubygems/test_gem_request.rb +64 -58
- data/test/rubygems/test_gem_request_connection_pools.rb +30 -29
- data/test/rubygems/test_gem_request_set.rb +101 -100
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +210 -211
- data/test/rubygems/test_gem_request_set_lockfile.rb +87 -86
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +58 -57
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +63 -62
- data/test/rubygems/test_gem_requirement.rb +48 -41
- data/test/rubygems/test_gem_resolver.rb +167 -99
- data/test/rubygems/test_gem_resolver_activation_request.rb +7 -6
- data/test/rubygems/test_gem_resolver_api_set.rb +34 -33
- data/test/rubygems/test_gem_resolver_api_specification.rb +48 -47
- data/test/rubygems/test_gem_resolver_best_set.rb +23 -22
- data/test/rubygems/test_gem_resolver_composed_set.rb +2 -1
- data/test/rubygems/test_gem_resolver_conflict.rb +13 -12
- data/test/rubygems/test_gem_resolver_dependency_request.rb +16 -15
- data/test/rubygems/test_gem_resolver_git_set.rb +22 -21
- data/test/rubygems/test_gem_resolver_git_specification.rb +22 -21
- data/test/rubygems/test_gem_resolver_index_set.rb +13 -12
- data/test/rubygems/test_gem_resolver_index_specification.rb +17 -16
- data/test/rubygems/test_gem_resolver_installed_specification.rb +6 -5
- data/test/rubygems/test_gem_resolver_installer_set.rb +79 -34
- data/test/rubygems/test_gem_resolver_local_specification.rb +8 -7
- data/test/rubygems/test_gem_resolver_lock_set.rb +13 -12
- data/test/rubygems/test_gem_resolver_lock_specification.rb +18 -17
- data/test/rubygems/test_gem_resolver_requirement_list.rb +2 -1
- data/test/rubygems/test_gem_resolver_specification.rb +9 -8
- data/test/rubygems/test_gem_resolver_vendor_set.rb +7 -6
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +11 -10
- data/test/rubygems/test_gem_security.rb +69 -68
- data/test/rubygems/test_gem_security_policy.rb +72 -72
- data/test/rubygems/test_gem_security_signer.rb +35 -34
- data/test/rubygems/test_gem_security_trust_dir.rb +7 -6
- data/test/rubygems/test_gem_silent_ui.rb +39 -32
- data/test/rubygems/test_gem_source.rb +45 -44
- data/test/rubygems/test_gem_source_fetch_problem.rb +10 -9
- data/test/rubygems/test_gem_source_git.rb +69 -62
- data/test/rubygems/test_gem_source_installed.rb +17 -16
- data/test/rubygems/test_gem_source_list.rb +6 -5
- data/test/rubygems/test_gem_source_local.rb +15 -14
- data/test/rubygems/test_gem_source_lock.rb +32 -31
- data/test/rubygems/test_gem_source_specific_file.rb +18 -17
- data/test/rubygems/test_gem_source_subpath_problem.rb +8 -7
- data/test/rubygems/test_gem_source_vendor.rb +14 -13
- data/test/rubygems/test_gem_spec_fetcher.rb +73 -72
- data/test/rubygems/test_gem_specification.rb +533 -469
- data/test/rubygems/test_gem_stream_ui.rb +53 -22
- data/test/rubygems/test_gem_stub_specification.rb +33 -32
- data/test/rubygems/test_gem_text.rb +2 -1
- data/test/rubygems/test_gem_uninstaller.rb +118 -117
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +4 -3
- data/test/rubygems/test_gem_update_suggestion.rb +209 -0
- data/test/rubygems/test_gem_uri.rb +6 -4
- data/test/rubygems/test_gem_uri_formatter.rb +15 -14
- data/test/rubygems/test_gem_util.rb +24 -23
- data/test/rubygems/test_gem_validator.rb +8 -8
- data/test/rubygems/test_gem_version.rb +24 -16
- data/test/rubygems/test_gem_version_option.rb +16 -15
- data/test/rubygems/test_kernel.rb +43 -48
- data/test/rubygems/test_project_sanity.rb +32 -3
- data/test/rubygems/test_remote_fetch_error.rb +8 -7
- data/test/rubygems/test_require.rb +118 -103
- data/test/rubygems/test_rubygems.rb +10 -8
- data/test/rubygems/test_webauthn_listener.rb +143 -0
- data/test/rubygems/test_webauthn_listener_response.rb +93 -0
- data/test/rubygems/test_webauthn_poller.rb +124 -0
- data/test/rubygems/utilities.rb +98 -34
- data/test/rubygems/wrong_key_cert.pem +15 -15
- data/test/rubygems/wrong_key_cert_32.pem +15 -15
- data/test/test_changelog_generator.rb +1 -1
- metadata +99 -46
- data/bundler/lib/bundler/dep_proxy.rb +0 -55
- data/bundler/lib/bundler/templates/gems.rb +0 -5
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +0 -5
- data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
- data/bundler/lib/bundler/vendor/molinillo/LICENSE +0 -9
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -149
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
- data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
- data/bundler/lib/bundler/vendored_molinillo.rb +0 -4
- data/bundler/lib/bundler/version_ranges.rb +0 -122
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/build.rb +0 -21
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/build.rb +0 -21
@@ -1,7 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
3
|
-
|
4
|
-
require
|
2
|
+
|
3
|
+
require_relative "helper"
|
4
|
+
require "rubygems/available_set"
|
5
|
+
require "rubygems/security"
|
5
6
|
|
6
7
|
class TestGemAvailableSet < Gem::TestCase
|
7
8
|
def setup
|
@@ -11,7 +12,7 @@ class TestGemAvailableSet < Gem::TestCase
|
|
11
12
|
end
|
12
13
|
|
13
14
|
def test_add_and_empty
|
14
|
-
a1, _ = util_gem
|
15
|
+
a1, _ = util_gem "a", "1"
|
15
16
|
|
16
17
|
set = Gem::AvailableSet.new
|
17
18
|
assert set.empty?
|
@@ -24,8 +25,8 @@ class TestGemAvailableSet < Gem::TestCase
|
|
24
25
|
end
|
25
26
|
|
26
27
|
def test_find_all
|
27
|
-
a1, a1_gem = util_gem
|
28
|
-
a1a, a1a_gem = util_gem
|
28
|
+
a1, a1_gem = util_gem "a", 1
|
29
|
+
a1a, a1a_gem = util_gem "a", "1.a"
|
29
30
|
|
30
31
|
a1_source = Gem::Source::SpecificFile.new a1_gem
|
31
32
|
a1a_source = Gem::Source::SpecificFile.new a1a_gem
|
@@ -34,26 +35,26 @@ class TestGemAvailableSet < Gem::TestCase
|
|
34
35
|
set.add a1, a1_source
|
35
36
|
set.add a1a, a1a_source
|
36
37
|
|
37
|
-
dep = Gem::Resolver::DependencyRequest.new dep(
|
38
|
+
dep = Gem::Resolver::DependencyRequest.new dep("a"), nil
|
38
39
|
|
39
40
|
assert_equal %w[a-1], set.find_all(dep).map {|spec| spec.full_name }
|
40
41
|
|
41
|
-
dep = Gem::Resolver::DependencyRequest.new dep(
|
42
|
+
dep = Gem::Resolver::DependencyRequest.new dep("a", ">= 0.a"), nil
|
42
43
|
|
43
44
|
assert_equal %w[a-1 a-1.a],
|
44
45
|
set.find_all(dep).map {|spec| spec.full_name }.sort
|
45
46
|
end
|
46
47
|
|
47
48
|
def test_match_platform
|
48
|
-
a1, _ = util_gem
|
49
|
+
a1, _ = util_gem "a", "1" do |g|
|
49
50
|
g.platform = "something-weird-yep"
|
50
51
|
end
|
51
52
|
|
52
|
-
a1c, _ = util_gem
|
53
|
+
a1c, _ = util_gem "a", "2" do |g|
|
53
54
|
g.platform = Gem::Platform.local
|
54
55
|
end
|
55
56
|
|
56
|
-
a2, _ = util_gem
|
57
|
+
a2, _ = util_gem "a", "2"
|
57
58
|
|
58
59
|
set = Gem::AvailableSet.new
|
59
60
|
set.add a1, @source
|
@@ -66,8 +67,8 @@ class TestGemAvailableSet < Gem::TestCase
|
|
66
67
|
end
|
67
68
|
|
68
69
|
def test_best
|
69
|
-
a1, _ = util_gem
|
70
|
-
a2, _ = util_gem
|
70
|
+
a1, _ = util_gem "a", "1"
|
71
|
+
a2, _ = util_gem "a", "2"
|
71
72
|
|
72
73
|
set = Gem::AvailableSet.new
|
73
74
|
set.add a1, @source
|
@@ -79,7 +80,7 @@ class TestGemAvailableSet < Gem::TestCase
|
|
79
80
|
end
|
80
81
|
|
81
82
|
def test_remove_installed_bang
|
82
|
-
a1, _ = util_spec
|
83
|
+
a1, _ = util_spec "a", "1"
|
83
84
|
install_specs a1
|
84
85
|
|
85
86
|
a1.activate
|
@@ -95,8 +96,8 @@ class TestGemAvailableSet < Gem::TestCase
|
|
95
96
|
end
|
96
97
|
|
97
98
|
def test_sorted_normal_versions
|
98
|
-
a1, _ = util_gem
|
99
|
-
a2, _ = util_gem
|
99
|
+
a1, _ = util_gem "a", "1"
|
100
|
+
a2, _ = util_gem "a", "2"
|
100
101
|
|
101
102
|
set = Gem::AvailableSet.new
|
102
103
|
set.add a1, @source
|
@@ -109,11 +110,11 @@ class TestGemAvailableSet < Gem::TestCase
|
|
109
110
|
end
|
110
111
|
|
111
112
|
def test_sorted_respect_pre
|
112
|
-
a1a, _ = util_gem
|
113
|
-
a1, _ = util_gem
|
114
|
-
a2a, _ = util_gem
|
115
|
-
a2, _ = util_gem
|
116
|
-
a3a, _ = util_gem
|
113
|
+
a1a, _ = util_gem "a", "1.a"
|
114
|
+
a1, _ = util_gem "a", "1"
|
115
|
+
a2a, _ = util_gem "a", "2.a"
|
116
|
+
a2, _ = util_gem "a", "2"
|
117
|
+
a3a, _ = util_gem "a", "3.a"
|
117
118
|
|
118
119
|
set = Gem::AvailableSet.new
|
119
120
|
set.add a1, @source
|
@@ -1,12 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
2
|
+
|
3
|
+
require_relative "helper"
|
4
|
+
require "rubygems/bundler_version_finder"
|
3
5
|
|
4
6
|
class TestGemBundlerVersionFinder < Gem::TestCase
|
5
7
|
def setup
|
6
|
-
super
|
7
|
-
|
8
8
|
@argv = ARGV.dup
|
9
9
|
@dollar_0 = $0
|
10
|
+
super
|
11
|
+
|
10
12
|
without_any_upwards_gemfiles
|
11
13
|
end
|
12
14
|
|
@@ -78,7 +80,7 @@ class TestGemBundlerVersionFinder < Gem::TestCase
|
|
78
80
|
|
79
81
|
def test_deleted_directory
|
80
82
|
pend "Cannot perform this test on windows" if win_platform?
|
81
|
-
pend "Cannot perform this test on Solaris" if
|
83
|
+
pend "Cannot perform this test on Solaris" if RUBY_PLATFORM.include?("solaris")
|
82
84
|
require "tmpdir"
|
83
85
|
|
84
86
|
orig_dir = Dir.pwd
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
3
|
-
|
2
|
+
|
3
|
+
require_relative "helper"
|
4
|
+
require "rubygems/command"
|
4
5
|
|
5
6
|
class Gem::Command
|
6
7
|
public :parser
|
@@ -15,13 +16,13 @@ class TestGemCommand < Gem::TestCase
|
|
15
16
|
@common_options = Gem::Command.common_options.dup
|
16
17
|
Gem::Command.common_options.clear
|
17
18
|
Gem::Command.common_options << [
|
18
|
-
[
|
19
|
+
["-x", "--exe", "Execute"], lambda do |*a|
|
19
20
|
@xopt = true
|
20
21
|
end
|
21
22
|
]
|
22
23
|
|
23
|
-
@cmd_name =
|
24
|
-
@cmd = Gem::Command.new @cmd_name,
|
24
|
+
@cmd_name = "doit"
|
25
|
+
@cmd = Gem::Command.new @cmd_name, "summary"
|
25
26
|
end
|
26
27
|
|
27
28
|
def teardown
|
@@ -31,7 +32,7 @@ class TestGemCommand < Gem::TestCase
|
|
31
32
|
|
32
33
|
def test_self_add_specific_extra_args
|
33
34
|
added_args = %w[--all]
|
34
|
-
@cmd.add_option(
|
35
|
+
@cmd.add_option("--all") {|v,o| }
|
35
36
|
|
36
37
|
Gem::Command.add_specific_extra_args @cmd_name, added_args
|
37
38
|
|
@@ -86,7 +87,7 @@ class TestGemCommand < Gem::TestCase
|
|
86
87
|
end
|
87
88
|
|
88
89
|
def test_defaults
|
89
|
-
@cmd.add_option(
|
90
|
+
@cmd.add_option("-h", "--help [COMMAND]", "Get help on COMMAND") do |value, options|
|
90
91
|
options[:help] = value
|
91
92
|
end
|
92
93
|
|
@@ -119,7 +120,7 @@ class TestGemCommand < Gem::TestCase
|
|
119
120
|
@cmd.when_invoked { true }
|
120
121
|
|
121
122
|
ex = assert_raise Gem::OptionParser::InvalidOption do
|
122
|
-
@cmd.invoke(
|
123
|
+
@cmd.invoke("-zzz")
|
123
124
|
end
|
124
125
|
|
125
126
|
assert_match(/invalid option:/, ex.message)
|
@@ -151,12 +152,12 @@ class TestGemCommand < Gem::TestCase
|
|
151
152
|
done = false
|
152
153
|
|
153
154
|
use_ui @ui do
|
154
|
-
@cmd.add_option(
|
155
|
+
@cmd.add_option("-h", "--help [COMMAND]", "Get help on COMMAND") do |value, options|
|
155
156
|
options[:help] = true
|
156
157
|
done = true
|
157
158
|
end
|
158
159
|
|
159
|
-
@cmd.invoke(
|
160
|
+
@cmd.invoke("--help")
|
160
161
|
|
161
162
|
assert done
|
162
163
|
end
|
@@ -174,7 +175,7 @@ class TestGemCommand < Gem::TestCase
|
|
174
175
|
end
|
175
176
|
|
176
177
|
def test_invoke_with_options
|
177
|
-
@cmd.add_option(
|
178
|
+
@cmd.add_option("-h", "--help [COMMAND]", "Get help on COMMAND") do |value, options|
|
178
179
|
options[:help] = true
|
179
180
|
end
|
180
181
|
|
@@ -183,7 +184,7 @@ class TestGemCommand < Gem::TestCase
|
|
183
184
|
end
|
184
185
|
|
185
186
|
use_ui @ui do
|
186
|
-
@cmd.invoke
|
187
|
+
@cmd.invoke "-h"
|
187
188
|
end
|
188
189
|
|
189
190
|
assert_match %r{Usage: gem doit}, @ui.output
|
@@ -191,40 +192,40 @@ class TestGemCommand < Gem::TestCase
|
|
191
192
|
|
192
193
|
def test_add_option
|
193
194
|
assert_nothing_raised RuntimeError do
|
194
|
-
@cmd.add_option(
|
195
|
+
@cmd.add_option("--force", "skip validation of the spec") {|v,o| }
|
195
196
|
end
|
196
197
|
end
|
197
198
|
|
198
199
|
def test_add_option_with_empty
|
199
200
|
assert_raise RuntimeError, "Do not pass an empty string in opts" do
|
200
|
-
@cmd.add_option(
|
201
|
+
@cmd.add_option("", "skip validation of the spec") {|v,o| }
|
201
202
|
end
|
202
203
|
end
|
203
204
|
|
204
205
|
def test_option_recognition
|
205
|
-
@cmd.add_option(
|
206
|
+
@cmd.add_option("-h", "--help [COMMAND]", "Get help on COMMAND") do |value, options|
|
206
207
|
options[:help] = true
|
207
208
|
end
|
208
|
-
@cmd.add_option(
|
209
|
+
@cmd.add_option("-f", "--file FILE", "File option") do |value, options|
|
209
210
|
options[:help] = true
|
210
211
|
end
|
211
|
-
@cmd.add_option(
|
212
|
+
@cmd.add_option("--silent", "Silence RubyGems output") do |value, options|
|
212
213
|
options[:silent] = true
|
213
214
|
end
|
214
|
-
assert @cmd.handles?([
|
215
|
-
assert @cmd.handles?([
|
216
|
-
assert @cmd.handles?([
|
217
|
-
assert @cmd.handles?([
|
218
|
-
assert @cmd.handles?([
|
219
|
-
assert @cmd.handles?([
|
220
|
-
assert @cmd.handles?([
|
221
|
-
refute @cmd.handles?([
|
222
|
-
refute @cmd.handles?([
|
223
|
-
refute @cmd.handles?([
|
224
|
-
|
225
|
-
args = [
|
215
|
+
assert @cmd.handles?(["-x"])
|
216
|
+
assert @cmd.handles?(["-h"])
|
217
|
+
assert @cmd.handles?(["-h", "command"])
|
218
|
+
assert @cmd.handles?(["--help", "command"])
|
219
|
+
assert @cmd.handles?(["-f", "filename"])
|
220
|
+
assert @cmd.handles?(["--file=filename"])
|
221
|
+
assert @cmd.handles?(["--silent"])
|
222
|
+
refute @cmd.handles?(["-z"])
|
223
|
+
refute @cmd.handles?(["-f"])
|
224
|
+
refute @cmd.handles?(["--toothpaste"])
|
225
|
+
|
226
|
+
args = ["-h", "command"]
|
226
227
|
@cmd.handles?(args)
|
227
|
-
assert_equal [
|
228
|
+
assert_equal ["-h", "command"], args
|
228
229
|
end
|
229
230
|
|
230
231
|
def test_deprecate_option
|
@@ -234,13 +235,13 @@ WARNING: The \"--test\" option has been deprecated and will be removed in Rubyg
|
|
234
235
|
|
235
236
|
testCommand = Class.new(Gem::Command) do
|
236
237
|
def initialize
|
237
|
-
super(
|
238
|
+
super("test", "Gem::Command instance for testing")
|
238
239
|
|
239
|
-
add_option(
|
240
|
+
add_option("-t", "--test", "Test command") do |value, options|
|
240
241
|
options[:test] = true
|
241
242
|
end
|
242
243
|
|
243
|
-
deprecate_option(
|
244
|
+
deprecate_option("--test", version: "3.1")
|
244
245
|
end
|
245
246
|
|
246
247
|
def execute
|
@@ -263,13 +264,13 @@ WARNING: The \"--test\" option has been deprecated and will be removed in futur
|
|
263
264
|
|
264
265
|
testCommand = Class.new(Gem::Command) do
|
265
266
|
def initialize
|
266
|
-
super(
|
267
|
+
super("test", "Gem::Command instance for testing")
|
267
268
|
|
268
|
-
add_option(
|
269
|
+
add_option("-t", "--test", "Test command") do |value, options|
|
269
270
|
options[:test] = true
|
270
271
|
end
|
271
272
|
|
272
|
-
deprecate_option(
|
273
|
+
deprecate_option("--test")
|
273
274
|
end
|
274
275
|
|
275
276
|
def execute
|
@@ -292,13 +293,13 @@ WARNING: The \"--test\" option has been deprecated and will be removed in Rubyg
|
|
292
293
|
|
293
294
|
testCommand = Class.new(Gem::Command) do
|
294
295
|
def initialize
|
295
|
-
super(
|
296
|
+
super("test", "Gem::Command instance for testing")
|
296
297
|
|
297
|
-
add_option(
|
298
|
+
add_option("-t", "--test", "Test command") do |value, options|
|
298
299
|
options[:test] = true
|
299
300
|
end
|
300
301
|
|
301
|
-
deprecate_option(
|
302
|
+
deprecate_option("--test", version: "3.1", extra_msg: "Whether you set `--test` mode or not, this dummy app always runs in test mode.")
|
302
303
|
end
|
303
304
|
|
304
305
|
def execute
|
@@ -321,13 +322,13 @@ WARNING: The \"--test\" option has been deprecated and will be removed in futur
|
|
321
322
|
|
322
323
|
testCommand = Class.new(Gem::Command) do
|
323
324
|
def initialize
|
324
|
-
super(
|
325
|
+
super("test", "Gem::Command instance for testing")
|
325
326
|
|
326
|
-
add_option(
|
327
|
+
add_option("-t", "--test", "Test command") do |value, options|
|
327
328
|
options[:test] = true
|
328
329
|
end
|
329
330
|
|
330
|
-
deprecate_option(
|
331
|
+
deprecate_option("--test", extra_msg: "Whether you set `--test` mode or not, this dummy app always runs in test mode.")
|
331
332
|
end
|
332
333
|
|
333
334
|
def execute
|
@@ -364,11 +365,11 @@ ERROR: Could not find a valid gem 'nonexistent_with_hint' (>= 0) in any reposit
|
|
364
365
|
|
365
366
|
def test_show_lookup_failure_suggestions_none
|
366
367
|
spec_fetcher do |fetcher|
|
367
|
-
fetcher.spec
|
368
|
+
fetcher.spec "correct", 2
|
368
369
|
end
|
369
370
|
|
370
371
|
use_ui @ui do
|
371
|
-
@cmd.show_lookup_failure
|
372
|
+
@cmd.show_lookup_failure "other", Gem::Requirement.default, [], :remote
|
372
373
|
end
|
373
374
|
|
374
375
|
expected = <<-EXPECTED
|
@@ -1,9 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
3
|
-
|
2
|
+
|
3
|
+
require_relative "helper"
|
4
|
+
require "rubygems/command_manager"
|
4
5
|
|
5
6
|
class TestGemCommandManager < Gem::TestCase
|
6
|
-
PROJECT_DIR = File.expand_path(
|
7
|
+
PROJECT_DIR = File.expand_path("../..", __dir__).tap(&Gem::UNTAINT)
|
7
8
|
|
8
9
|
def setup
|
9
10
|
super
|
@@ -12,38 +13,38 @@ class TestGemCommandManager < Gem::TestCase
|
|
12
13
|
end
|
13
14
|
|
14
15
|
def test_find_command
|
15
|
-
command = @command_manager.find_command
|
16
|
+
command = @command_manager.find_command "install"
|
16
17
|
|
17
18
|
assert_kind_of Gem::Commands::InstallCommand, command
|
18
19
|
|
19
|
-
command = @command_manager.find_command
|
20
|
+
command = @command_manager.find_command "ins"
|
20
21
|
|
21
22
|
assert_kind_of Gem::Commands::InstallCommand, command
|
22
23
|
end
|
23
24
|
|
24
25
|
def test_find_command_ambiguous
|
25
26
|
e = assert_raise Gem::CommandLineError do
|
26
|
-
@command_manager.find_command
|
27
|
+
@command_manager.find_command "u"
|
27
28
|
end
|
28
29
|
|
29
|
-
assert_equal
|
30
|
+
assert_equal "Ambiguous command u matches [uninstall, unpack, update]",
|
30
31
|
e.message
|
31
32
|
end
|
32
33
|
|
33
34
|
def test_find_alias_command
|
34
|
-
command = @command_manager.find_command
|
35
|
+
command = @command_manager.find_command "i"
|
35
36
|
|
36
37
|
assert_kind_of Gem::Commands::InstallCommand, command
|
37
38
|
end
|
38
39
|
|
39
40
|
def test_find_login_alias_command
|
40
|
-
command = @command_manager.find_command
|
41
|
+
command = @command_manager.find_command "login"
|
41
42
|
|
42
43
|
assert_kind_of Gem::Commands::SigninCommand, command
|
43
44
|
end
|
44
45
|
|
45
46
|
def test_find_logout_alias_comamnd
|
46
|
-
command = @command_manager.find_command
|
47
|
+
command = @command_manager.find_command "logout"
|
47
48
|
|
48
49
|
assert_kind_of Gem::Commands::SignoutCommand, command
|
49
50
|
end
|
@@ -54,7 +55,7 @@ class TestGemCommandManager < Gem::TestCase
|
|
54
55
|
|
55
56
|
@command_manager.register_command :ins
|
56
57
|
|
57
|
-
command = @command_manager.find_command
|
58
|
+
command = @command_manager.find_command "ins"
|
58
59
|
|
59
60
|
assert_kind_of ins_command, command
|
60
61
|
ensure
|
@@ -63,20 +64,20 @@ class TestGemCommandManager < Gem::TestCase
|
|
63
64
|
|
64
65
|
def test_find_command_unknown
|
65
66
|
e = assert_raise Gem::UnknownCommandError do
|
66
|
-
@command_manager.find_command
|
67
|
+
@command_manager.find_command "xyz"
|
67
68
|
end
|
68
69
|
|
69
|
-
assert_equal
|
70
|
+
assert_equal "Unknown command xyz", e.message
|
70
71
|
end
|
71
72
|
|
72
73
|
def test_find_command_unknown_suggestions
|
73
74
|
e = assert_raise Gem::UnknownCommandError do
|
74
|
-
@command_manager.find_command
|
75
|
+
@command_manager.find_command "pish"
|
75
76
|
end
|
76
77
|
|
77
|
-
message =
|
78
|
+
message = "Unknown command pish".dup
|
78
79
|
|
79
|
-
if
|
80
|
+
if defined?(DidYouMean::SPELL_CHECKERS) && defined?(DidYouMean::Correctable)
|
80
81
|
message << "\nDid you mean? \"push\""
|
81
82
|
end
|
82
83
|
|
@@ -100,7 +101,7 @@ class TestGemCommandManager < Gem::TestCase
|
|
100
101
|
assert_raise Gem::MockGemUi::TermError do
|
101
102
|
@command_manager.run %w[interrupt]
|
102
103
|
end
|
103
|
-
assert_equal
|
104
|
+
assert_equal "", ui.output
|
104
105
|
assert_equal "ERROR: Interrupted\n", ui.error
|
105
106
|
end
|
106
107
|
ensure
|
@@ -117,7 +118,7 @@ class TestGemCommandManager < Gem::TestCase
|
|
117
118
|
assert_raise Gem::MockGemUi::TermError do
|
118
119
|
@command_manager.run %w[crash]
|
119
120
|
end
|
120
|
-
assert_equal
|
121
|
+
assert_equal "", ui.output
|
121
122
|
err = ui.error.split("\n").first
|
122
123
|
assert_equal "ERROR: Loading command: crash (RuntimeError)", err
|
123
124
|
end
|
@@ -126,6 +127,46 @@ class TestGemCommandManager < Gem::TestCase
|
|
126
127
|
@command_manager.unregister_command :crash
|
127
128
|
end
|
128
129
|
|
130
|
+
def test_process_args_with_c_flag
|
131
|
+
custom_start_point = File.join @tempdir, "nice_folder"
|
132
|
+
FileUtils.mkdir_p custom_start_point
|
133
|
+
|
134
|
+
execution_path = nil
|
135
|
+
use_ui @ui do
|
136
|
+
@command_manager[:install].when_invoked do
|
137
|
+
execution_path = Dir.pwd
|
138
|
+
true
|
139
|
+
end
|
140
|
+
@command_manager.process_args %W[-C #{custom_start_point} install net-scp-4.0.0.gem --local]
|
141
|
+
end
|
142
|
+
|
143
|
+
assert_equal custom_start_point, execution_path
|
144
|
+
end
|
145
|
+
|
146
|
+
def test_process_args_with_c_flag_without_path
|
147
|
+
use_ui @ui do
|
148
|
+
assert_raise Gem::MockGemUi::TermError do
|
149
|
+
@command_manager.process_args %w[-C install net-scp-4.0.0.gem --local]
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
assert_match(/install isn't a directory./i, @ui.error)
|
154
|
+
end
|
155
|
+
|
156
|
+
def test_process_args_with_c_flag_path_not_found
|
157
|
+
custom_start_point = File.join @tempdir, "nice_folder"
|
158
|
+
FileUtils.mkdir_p custom_start_point
|
159
|
+
custom_start_point.tr!("_", "-")
|
160
|
+
|
161
|
+
use_ui @ui do
|
162
|
+
assert_raise Gem::MockGemUi::TermError do
|
163
|
+
@command_manager.process_args %W[-C #{custom_start_point} install net-scp-4.0.0.gem --local]
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
assert_match(/#{custom_start_point} isn't a directory./i, @ui.error)
|
168
|
+
end
|
169
|
+
|
129
170
|
def test_process_args_bad_arg
|
130
171
|
use_ui @ui do
|
131
172
|
assert_raise Gem::MockGemUi::TermError do
|
@@ -141,7 +182,7 @@ class TestGemCommandManager < Gem::TestCase
|
|
141
182
|
#capture all install options
|
142
183
|
use_ui @ui do
|
143
184
|
check_options = nil
|
144
|
-
@command_manager[
|
185
|
+
@command_manager["install"].when_invoked do |options|
|
145
186
|
check_options = options
|
146
187
|
true
|
147
188
|
end
|
@@ -166,7 +207,7 @@ class TestGemCommandManager < Gem::TestCase
|
|
166
207
|
assert_equal true, check_options[:force]
|
167
208
|
assert_equal :local, check_options[:domain]
|
168
209
|
assert_equal false, check_options[:wrappers]
|
169
|
-
assert_equal Gem::Requirement.new(
|
210
|
+
assert_equal Gem::Requirement.new("3.0"), check_options[:version]
|
170
211
|
assert_equal Dir.pwd, check_options[:install_dir]
|
171
212
|
assert_equal Dir.pwd, check_options[:bin_dir]
|
172
213
|
|
@@ -191,7 +232,7 @@ class TestGemCommandManager < Gem::TestCase
|
|
191
232
|
def test_process_args_uninstall
|
192
233
|
#capture all uninstall options
|
193
234
|
check_options = nil
|
194
|
-
@command_manager[
|
235
|
+
@command_manager["uninstall"].when_invoked do |options|
|
195
236
|
check_options = options
|
196
237
|
true
|
197
238
|
end
|
@@ -204,14 +245,14 @@ class TestGemCommandManager < Gem::TestCase
|
|
204
245
|
check_options = nil
|
205
246
|
@command_manager.process_args %w[uninstall foobar --version 3.0]
|
206
247
|
assert_equal "foobar", check_options[:args].first
|
207
|
-
assert_equal Gem::Requirement.new(
|
248
|
+
assert_equal Gem::Requirement.new("3.0"), check_options[:version]
|
208
249
|
end
|
209
250
|
|
210
251
|
# HACK move to check command test
|
211
252
|
def test_process_args_check
|
212
253
|
#capture all check options
|
213
254
|
check_options = nil
|
214
|
-
@command_manager[
|
255
|
+
@command_manager["check"].when_invoked do |options|
|
215
256
|
check_options = options
|
216
257
|
true
|
217
258
|
end
|
@@ -230,7 +271,7 @@ class TestGemCommandManager < Gem::TestCase
|
|
230
271
|
def test_process_args_build
|
231
272
|
#capture all build options
|
232
273
|
check_options = nil
|
233
|
-
@command_manager[
|
274
|
+
@command_manager["build"].when_invoked do |options|
|
234
275
|
check_options = options
|
235
276
|
true
|
236
277
|
end
|
@@ -242,14 +283,14 @@ class TestGemCommandManager < Gem::TestCase
|
|
242
283
|
#check settings
|
243
284
|
check_options = nil
|
244
285
|
@command_manager.process_args %w[build foobar.rb]
|
245
|
-
assert_equal
|
286
|
+
assert_equal "foobar.rb", check_options[:args].first
|
246
287
|
end
|
247
288
|
|
248
289
|
# HACK move to query command test
|
249
290
|
def test_process_args_query
|
250
291
|
#capture all query options
|
251
292
|
check_options = nil
|
252
|
-
@command_manager[
|
293
|
+
@command_manager["query"].when_invoked do |options|
|
253
294
|
check_options = options
|
254
295
|
true
|
255
296
|
end
|
@@ -290,25 +331,25 @@ class TestGemCommandManager < Gem::TestCase
|
|
290
331
|
def test_process_args_update
|
291
332
|
#capture all update options
|
292
333
|
check_options = nil
|
293
|
-
@command_manager[
|
334
|
+
@command_manager["update"].when_invoked do |options|
|
294
335
|
check_options = options
|
295
336
|
true
|
296
337
|
end
|
297
338
|
|
298
339
|
#check defaults
|
299
340
|
@command_manager.process_args %w[update]
|
300
|
-
assert_includes check_options[:document],
|
341
|
+
assert_includes check_options[:document], "ri"
|
301
342
|
|
302
343
|
#check settings
|
303
344
|
check_options = nil
|
304
345
|
@command_manager.process_args %w[update --force --document=ri --install-dir .]
|
305
|
-
assert_includes check_options[:document],
|
346
|
+
assert_includes check_options[:document], "ri"
|
306
347
|
assert_equal true, check_options[:force]
|
307
348
|
assert_equal Dir.pwd, check_options[:install_dir]
|
308
349
|
end
|
309
350
|
|
310
351
|
def test_deprecated_command
|
311
|
-
require
|
352
|
+
require "rubygems/command"
|
312
353
|
foo_command = Class.new(Gem::Command) do
|
313
354
|
extend Gem::Deprecate
|
314
355
|
|
@@ -331,4 +372,29 @@ class TestGemCommandManager < Gem::TestCase
|
|
331
372
|
ensure
|
332
373
|
Gem::Commands.send(:remove_const, :FooCommand)
|
333
374
|
end
|
375
|
+
|
376
|
+
def test_deprecated_command_with_version
|
377
|
+
require "rubygems/command"
|
378
|
+
foo_command = Class.new(Gem::Command) do
|
379
|
+
extend Gem::Deprecate
|
380
|
+
|
381
|
+
rubygems_deprecate_command("9.9.9")
|
382
|
+
|
383
|
+
def execute
|
384
|
+
say "pew pew!"
|
385
|
+
end
|
386
|
+
end
|
387
|
+
|
388
|
+
Gem::Commands.send(:const_set, :FooCommand, foo_command)
|
389
|
+
@command_manager.register_command(:foo, foo_command.new("foo"))
|
390
|
+
|
391
|
+
use_ui @ui do
|
392
|
+
@command_manager.process_args(%w[foo])
|
393
|
+
end
|
394
|
+
|
395
|
+
assert_equal "pew pew!\n", @ui.output
|
396
|
+
assert_match(/WARNING: foo command is deprecated. It will be removed in Rubygems 9.9.9/, @ui.error)
|
397
|
+
ensure
|
398
|
+
Gem::Commands.send(:remove_const, :FooCommand)
|
399
|
+
end
|
334
400
|
end
|