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,12 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
3
|
-
|
2
|
+
|
3
|
+
require_relative "installer_test_case"
|
4
|
+
require "rubygems/commands/uninstall_command"
|
4
5
|
|
5
6
|
class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
|
6
7
|
def setup
|
7
8
|
super
|
8
9
|
@cmd = Gem::Commands::UninstallCommand.new
|
9
|
-
@executable = File.join(@gemhome,
|
10
|
+
@executable = File.join(@gemhome, "bin", "executable")
|
10
11
|
end
|
11
12
|
|
12
13
|
def test_execute_all_named
|
@@ -14,20 +15,15 @@ class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
|
|
14
15
|
|
15
16
|
util_make_gems
|
16
17
|
|
17
|
-
default = new_default_spec
|
18
|
+
default = new_default_spec "default", "1"
|
18
19
|
install_default_gems default
|
19
20
|
|
20
21
|
gemhome2 = "#{@gemhome}2"
|
21
22
|
|
22
|
-
a_4, = util_gem
|
23
|
+
a_4, = util_gem "a", 4
|
23
24
|
install_gem a_4, :install_dir => gemhome2
|
24
25
|
|
25
|
-
|
26
|
-
|
27
|
-
assert_includes Gem::Specification.all_names, 'a-1'
|
28
|
-
assert_includes Gem::Specification.all_names, 'a-4'
|
29
|
-
assert_includes Gem::Specification.all_names, 'b-2'
|
30
|
-
assert_includes Gem::Specification.all_names, 'default-1'
|
26
|
+
assert_gems_presence "a-1", "a-4", "b-2", "default-1", dirs: [@gemhome, gemhome2]
|
31
27
|
|
32
28
|
@cmd.options[:all] = true
|
33
29
|
@cmd.options[:args] = %w[a]
|
@@ -41,10 +37,10 @@ class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
|
|
41
37
|
end
|
42
38
|
|
43
39
|
def test_execute_all_named_default_single
|
44
|
-
z_1 = new_default_spec
|
40
|
+
z_1 = new_default_spec "z", "1"
|
45
41
|
install_default_gems z_1
|
46
42
|
|
47
|
-
assert_includes Gem::Specification.all_names,
|
43
|
+
assert_includes Gem::Specification.all_names, "z-1"
|
48
44
|
|
49
45
|
@cmd.options[:all] = true
|
50
46
|
@cmd.options[:args] = %w[z]
|
@@ -57,18 +53,18 @@ class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
|
|
57
53
|
|
58
54
|
output = @ui.output.split "\n"
|
59
55
|
|
60
|
-
assert_equal
|
56
|
+
assert_equal "Gem z-1 cannot be uninstalled because it is a default gem", output.shift
|
61
57
|
end
|
62
58
|
|
63
59
|
def test_execute_all_named_default_multiple
|
64
|
-
z_1 = new_default_spec
|
60
|
+
z_1 = new_default_spec "z", "1"
|
65
61
|
install_default_gems z_1
|
66
62
|
|
67
|
-
z_2, = util_gem
|
63
|
+
z_2, = util_gem "z", 2
|
68
64
|
install_gem z_2
|
69
65
|
|
70
|
-
assert_includes Gem::Specification.all_names,
|
71
|
-
assert_includes Gem::Specification.all_names,
|
66
|
+
assert_includes Gem::Specification.all_names, "z-1"
|
67
|
+
assert_includes Gem::Specification.all_names, "z-2"
|
72
68
|
|
73
69
|
@cmd.options[:all] = true
|
74
70
|
@cmd.options[:args] = %w[z]
|
@@ -81,15 +77,15 @@ class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
|
|
81
77
|
|
82
78
|
output = @ui.output.split "\n"
|
83
79
|
|
84
|
-
assert_equal
|
85
|
-
assert_equal
|
80
|
+
assert_equal "Gem z-1 cannot be uninstalled because it is a default gem", output.shift
|
81
|
+
assert_equal "Successfully uninstalled z-2", output.shift
|
86
82
|
end
|
87
83
|
|
88
84
|
def test_execute_dependency_order
|
89
85
|
initial_install
|
90
86
|
|
91
|
-
c = quick_gem
|
92
|
-
spec.add_dependency
|
87
|
+
c = quick_gem "c" do |spec|
|
88
|
+
spec.add_dependency "a"
|
93
89
|
end
|
94
90
|
|
95
91
|
util_build_gem c
|
@@ -110,9 +106,9 @@ class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
|
|
110
106
|
|
111
107
|
output = ui.output.split "\n"
|
112
108
|
|
113
|
-
assert_equal
|
109
|
+
assert_equal "Successfully uninstalled c-2", output.shift
|
114
110
|
assert_equal "Removing executable", output.shift
|
115
|
-
assert_equal
|
111
|
+
assert_equal "Successfully uninstalled a-2", output.shift
|
116
112
|
end
|
117
113
|
|
118
114
|
def test_execute_removes_executable
|
@@ -149,12 +145,12 @@ class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
|
|
149
145
|
|
150
146
|
FileUtils.rm_f @executable # Wish this didn't happen in #setup
|
151
147
|
|
152
|
-
Gem::Installer.exec_format =
|
148
|
+
Gem::Installer.exec_format = "foo-%s-bar"
|
153
149
|
|
154
150
|
installer.format_executable = true
|
155
151
|
installer.install
|
156
152
|
|
157
|
-
formatted_executable = File.join @gemhome,
|
153
|
+
formatted_executable = File.join @gemhome, "bin", "foo-executable-bar"
|
158
154
|
assert_equal true, File.exist?(formatted_executable)
|
159
155
|
|
160
156
|
@cmd.options[:executables] = true
|
@@ -197,19 +193,19 @@ class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
|
|
197
193
|
|
198
194
|
util_make_gems
|
199
195
|
|
200
|
-
assert_equal 3, Gem::Specification.find_all_by_name(
|
196
|
+
assert_equal 3, Gem::Specification.find_all_by_name("a").length
|
201
197
|
|
202
|
-
@cmd.options[:version] =
|
198
|
+
@cmd.options[:version] = "1"
|
203
199
|
@cmd.options[:force] = true
|
204
|
-
@cmd.options[:args] = [
|
200
|
+
@cmd.options[:args] = ["a"]
|
205
201
|
|
206
202
|
use_ui ui do
|
207
203
|
@cmd.execute
|
208
204
|
end
|
209
205
|
|
210
|
-
assert_equal 2, Gem::Specification.find_all_by_name(
|
206
|
+
assert_equal 2, Gem::Specification.find_all_by_name("a").length
|
211
207
|
|
212
|
-
assert File.exist? File.join(@gemhome,
|
208
|
+
assert File.exist? File.join(@gemhome, "bin", "executable")
|
213
209
|
end
|
214
210
|
|
215
211
|
def test_execute_with_version_specified_as_colon
|
@@ -219,18 +215,18 @@ class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
|
|
219
215
|
|
220
216
|
util_make_gems
|
221
217
|
|
222
|
-
assert_equal 3, Gem::Specification.find_all_by_name(
|
218
|
+
assert_equal 3, Gem::Specification.find_all_by_name("a").length
|
223
219
|
|
224
220
|
@cmd.options[:force] = true
|
225
|
-
@cmd.options[:args] = [
|
221
|
+
@cmd.options[:args] = ["a:1"]
|
226
222
|
|
227
223
|
use_ui ui do
|
228
224
|
@cmd.execute
|
229
225
|
end
|
230
226
|
|
231
|
-
assert_equal 2, Gem::Specification.find_all_by_name(
|
227
|
+
assert_equal 2, Gem::Specification.find_all_by_name("a").length
|
232
228
|
|
233
|
-
assert File.exist? File.join(@gemhome,
|
229
|
+
assert File.exist? File.join(@gemhome, "bin", "executable")
|
234
230
|
end
|
235
231
|
|
236
232
|
def test_uninstall_selection
|
@@ -238,22 +234,22 @@ class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
|
|
238
234
|
|
239
235
|
util_make_gems
|
240
236
|
|
241
|
-
list = Gem::Specification.find_all_by_name
|
237
|
+
list = Gem::Specification.find_all_by_name "a"
|
242
238
|
|
243
|
-
@cmd.options[:args] = [
|
239
|
+
@cmd.options[:args] = ["a"]
|
244
240
|
|
245
241
|
use_ui ui do
|
246
242
|
@cmd.execute
|
247
243
|
end
|
248
244
|
|
249
|
-
updated_list = Gem::Specification.find_all_by_name(
|
245
|
+
updated_list = Gem::Specification.find_all_by_name("a")
|
250
246
|
assert_equal list.length - 1, updated_list.length
|
251
247
|
|
252
|
-
assert_match
|
253
|
-
assert_match
|
254
|
-
assert_match
|
255
|
-
assert_match
|
256
|
-
assert_match
|
248
|
+
assert_match " 1. a-1", ui.output
|
249
|
+
assert_match " 2. a-2", ui.output
|
250
|
+
assert_match " 3. a-3.a", ui.output
|
251
|
+
assert_match " 4. All versions", ui.output
|
252
|
+
assert_match "uninstalled a-1", ui.output
|
257
253
|
end
|
258
254
|
|
259
255
|
def test_uninstall_selection_multiple_gems
|
@@ -261,31 +257,31 @@ class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
|
|
261
257
|
|
262
258
|
util_make_gems
|
263
259
|
|
264
|
-
a_list = Gem::Specification.find_all_by_name(
|
265
|
-
b_list = Gem::Specification.find_all_by_name(
|
260
|
+
a_list = Gem::Specification.find_all_by_name("a")
|
261
|
+
b_list = Gem::Specification.find_all_by_name("b")
|
266
262
|
list = a_list + b_list
|
267
263
|
|
268
|
-
@cmd.options[:args] = [
|
264
|
+
@cmd.options[:args] = ["a", "b"]
|
269
265
|
|
270
266
|
use_ui ui do
|
271
267
|
@cmd.execute
|
272
268
|
end
|
273
269
|
|
274
|
-
updated_a_list = Gem::Specification.find_all_by_name(
|
275
|
-
updated_b_list = Gem::Specification.find_all_by_name(
|
270
|
+
updated_a_list = Gem::Specification.find_all_by_name("a")
|
271
|
+
updated_b_list = Gem::Specification.find_all_by_name("b")
|
276
272
|
updated_list = updated_a_list + updated_b_list
|
277
273
|
|
278
274
|
assert_equal list.length - 2, updated_list.length
|
279
275
|
|
280
276
|
out = ui.output.split("\n")
|
281
|
-
assert_match
|
282
|
-
assert_match
|
283
|
-
assert_match
|
284
|
-
assert_match
|
285
|
-
assert_match
|
286
|
-
assert_match
|
287
|
-
assert_match
|
288
|
-
assert_match
|
277
|
+
assert_match "uninstalled b-2", out.shift
|
278
|
+
assert_match "", out.shift
|
279
|
+
assert_match "Select gem to uninstall:", out.shift
|
280
|
+
assert_match " 1. a-1", out.shift
|
281
|
+
assert_match " 2. a-2", out.shift
|
282
|
+
assert_match " 3. a-3.a", out.shift
|
283
|
+
assert_match " 4. All versions", out.shift
|
284
|
+
assert_match "uninstalled a-1", out.shift
|
289
285
|
assert_empty out
|
290
286
|
end
|
291
287
|
|
@@ -294,22 +290,22 @@ class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
|
|
294
290
|
|
295
291
|
ui = Gem::MockGemUi.new "y\n"
|
296
292
|
|
297
|
-
a_1, = util_gem
|
293
|
+
a_1, = util_gem "a", 1
|
298
294
|
install_gem a_1
|
299
295
|
|
300
|
-
a_3a, = util_gem
|
296
|
+
a_3a, = util_gem "a", "3.a"
|
301
297
|
install_gem a_3a
|
302
298
|
|
303
|
-
assert_equal 3, Gem::Specification.find_all_by_name(
|
299
|
+
assert_equal 3, Gem::Specification.find_all_by_name("a").length
|
304
300
|
|
305
301
|
@cmd.options[:force] = true
|
306
|
-
@cmd.options[:args] = [
|
302
|
+
@cmd.options[:args] = ["a"]
|
307
303
|
|
308
304
|
use_ui ui do
|
309
305
|
@cmd.execute
|
310
306
|
end
|
311
307
|
|
312
|
-
assert_empty Gem::Specification.find_all_by_name(
|
308
|
+
assert_empty Gem::Specification.find_all_by_name("a")
|
313
309
|
assert_match "Removing executable", ui.output
|
314
310
|
refute File.exist? @executable
|
315
311
|
end
|
@@ -321,36 +317,32 @@ class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
|
|
321
317
|
|
322
318
|
util_make_gems
|
323
319
|
|
324
|
-
assert Gem::Specification.find_all_by_name(
|
325
|
-
assert Gem::Specification.find_all_by_name(
|
320
|
+
assert Gem::Specification.find_all_by_name("dep_x").length > 0
|
321
|
+
assert Gem::Specification.find_all_by_name("x").length > 0
|
326
322
|
|
327
323
|
@cmd.options[:force] = true
|
328
|
-
@cmd.options[:args] = [
|
324
|
+
@cmd.options[:args] = ["x"]
|
329
325
|
|
330
326
|
use_ui ui do
|
331
327
|
@cmd.execute
|
332
328
|
end
|
333
329
|
|
334
|
-
assert Gem::Specification.find_all_by_name(
|
335
|
-
assert Gem::Specification.find_all_by_name(
|
330
|
+
assert Gem::Specification.find_all_by_name("dep_x").length > 0
|
331
|
+
assert Gem::Specification.find_all_by_name("x").length.zero?
|
336
332
|
end
|
337
333
|
|
338
334
|
def test_execute_all
|
339
335
|
util_make_gems
|
340
336
|
|
341
|
-
default = new_default_spec
|
337
|
+
default = new_default_spec "default", "1"
|
342
338
|
install_default_gems default
|
343
339
|
|
344
340
|
gemhome2 = "#{@gemhome}2"
|
345
341
|
|
346
|
-
a_4, = util_gem
|
342
|
+
a_4, = util_gem "a", 4
|
347
343
|
install_gem a_4
|
348
344
|
|
349
|
-
|
350
|
-
|
351
|
-
assert_includes Gem::Specification.all_names, 'a-1'
|
352
|
-
assert_includes Gem::Specification.all_names, 'a-4'
|
353
|
-
assert_includes Gem::Specification.all_names, 'default-1'
|
345
|
+
assert_gems_presence "a-1", "a-4", "default-1", dirs: [@gemhome, gemhome2]
|
354
346
|
|
355
347
|
@cmd.options[:all] = true
|
356
348
|
@cmd.options[:args] = []
|
@@ -368,14 +360,12 @@ class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
|
|
368
360
|
|
369
361
|
gemhome2 = "#{@gemhome}2"
|
370
362
|
|
371
|
-
a_4, = util_gem
|
363
|
+
a_4, = util_gem "a", 4
|
372
364
|
install_gem a_4 , :install_dir => gemhome2
|
373
365
|
|
374
|
-
|
366
|
+
assert_gems_presence "a-4", dirs: [@gemhome, gemhome2]
|
375
367
|
|
376
|
-
|
377
|
-
|
378
|
-
@cmd.options[:args] = ['a:4']
|
368
|
+
@cmd.options[:args] = ["a:4"]
|
379
369
|
|
380
370
|
e = assert_raise Gem::InstallError do
|
381
371
|
use_ui ui do
|
@@ -386,6 +376,26 @@ class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
|
|
386
376
|
assert_includes e.message, "a is not installed in GEM_HOME"
|
387
377
|
end
|
388
378
|
|
379
|
+
def test_execute_outside_gem_home_when_install_dir_given
|
380
|
+
gemhome2 = "#{@gemhome}2"
|
381
|
+
|
382
|
+
a_4, = util_gem "a", 4
|
383
|
+
install_gem a_4 , :install_dir => gemhome2
|
384
|
+
|
385
|
+
assert_gems_presence "a-4", dirs: [@gemhome, gemhome2]
|
386
|
+
|
387
|
+
Gem::Specification.dirs = [@gemhome]
|
388
|
+
|
389
|
+
@cmd.options[:install_dir] = gemhome2
|
390
|
+
@cmd.options[:args] = ["a:4"]
|
391
|
+
|
392
|
+
@cmd.execute
|
393
|
+
|
394
|
+
Gem::Specification.dirs = [gemhome2]
|
395
|
+
|
396
|
+
refute_includes Gem::Specification.all_names.sort, "a-4"
|
397
|
+
end
|
398
|
+
|
389
399
|
def test_handle_options
|
390
400
|
@cmd.handle_options %w[]
|
391
401
|
|
@@ -397,7 +407,7 @@ class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
|
|
397
407
|
end
|
398
408
|
|
399
409
|
def test_handle_options_vendor
|
400
|
-
vendordir(File.join(@tempdir,
|
410
|
+
vendordir(File.join(@tempdir, "vendor")) do
|
401
411
|
use_ui @ui do
|
402
412
|
@cmd.handle_options %w[--vendor]
|
403
413
|
end
|
@@ -440,7 +450,7 @@ WARNING: Use your OS package manager to uninstall vendor gems
|
|
440
450
|
@cmd.handle_options %w[--vendor]
|
441
451
|
end
|
442
452
|
|
443
|
-
assert_equal
|
453
|
+
assert_equal "invalid option: --vendor your platform is not supported",
|
444
454
|
e.message
|
445
455
|
|
446
456
|
refute @cmd.options[:vendor]
|
@@ -449,7 +459,7 @@ WARNING: Use your OS package manager to uninstall vendor gems
|
|
449
459
|
end
|
450
460
|
|
451
461
|
def test_execute_with_gem_not_installed
|
452
|
-
@cmd.options[:args] = [
|
462
|
+
@cmd.options[:args] = ["d"]
|
453
463
|
|
454
464
|
use_ui ui do
|
455
465
|
@cmd.execute
|
@@ -501,4 +511,12 @@ WARNING: Use your OS package manager to uninstall vendor gems
|
|
501
511
|
end
|
502
512
|
end
|
503
513
|
end
|
514
|
+
|
515
|
+
def assert_gems_presence(*gems, dirs:)
|
516
|
+
Gem::Specification.dirs = dirs
|
517
|
+
|
518
|
+
gems.each do |full_name|
|
519
|
+
assert_includes Gem::Specification.all_names, full_name
|
520
|
+
end
|
521
|
+
end
|
504
522
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
3
|
-
|
2
|
+
|
3
|
+
require_relative "helper"
|
4
|
+
require "rubygems/commands/unpack_command"
|
4
5
|
|
5
6
|
class TestGemCommandsUnpackCommand < Gem::TestCase
|
6
7
|
def setup
|
@@ -17,28 +18,28 @@ class TestGemCommandsUnpackCommand < Gem::TestCase
|
|
17
18
|
assert_equal(
|
18
19
|
@cmd.find_in_cache(File.basename @a1.cache_file),
|
19
20
|
@a1.cache_file,
|
20
|
-
|
21
|
+
"found a-1.gem in the cache"
|
21
22
|
)
|
22
23
|
end
|
23
24
|
|
24
25
|
def test_get_path
|
25
26
|
specs = spec_fetcher do |fetcher|
|
26
|
-
fetcher.gem
|
27
|
+
fetcher.gem "a", 1
|
27
28
|
end
|
28
29
|
|
29
|
-
dep = Gem::Dependency.new
|
30
|
+
dep = Gem::Dependency.new "a", 1
|
30
31
|
assert_equal(
|
31
32
|
@cmd.get_path(dep),
|
32
|
-
specs[
|
33
|
-
|
33
|
+
specs["a-1"].cache_file,
|
34
|
+
"fetches a-1 and returns the cache path"
|
34
35
|
)
|
35
36
|
|
36
|
-
FileUtils.rm specs[
|
37
|
+
FileUtils.rm specs["a-1"].cache_file
|
37
38
|
|
38
39
|
assert_equal(
|
39
40
|
@cmd.get_path(dep),
|
40
|
-
specs[
|
41
|
-
|
41
|
+
specs["a-1"].cache_file,
|
42
|
+
"when removed from cache, refetches a-1"
|
42
43
|
)
|
43
44
|
end
|
44
45
|
|
@@ -53,18 +54,18 @@ class TestGemCommandsUnpackCommand < Gem::TestCase
|
|
53
54
|
end
|
54
55
|
end
|
55
56
|
|
56
|
-
assert File.exist?(File.join(@tempdir,
|
57
|
-
assert File.exist?(File.join(@tempdir,
|
57
|
+
assert File.exist?(File.join(@tempdir, "a-3.a")), "a should be unpacked"
|
58
|
+
assert File.exist?(File.join(@tempdir, "b-2")), "b should be unpacked"
|
58
59
|
end
|
59
60
|
|
60
61
|
def test_execute_gem_path
|
61
62
|
spec_fetcher do |fetcher|
|
62
|
-
fetcher.gem
|
63
|
+
fetcher.gem "a", "3.a"
|
63
64
|
end
|
64
65
|
|
65
66
|
Gem.clear_paths
|
66
67
|
|
67
|
-
gemhome2 = File.join @tempdir,
|
68
|
+
gemhome2 = File.join @tempdir, "gemhome2"
|
68
69
|
|
69
70
|
Gem.use_paths gemhome2, [gemhome2, @gemhome]
|
70
71
|
|
@@ -76,7 +77,7 @@ class TestGemCommandsUnpackCommand < Gem::TestCase
|
|
76
77
|
end
|
77
78
|
end
|
78
79
|
|
79
|
-
assert File.exist?(File.join(@tempdir,
|
80
|
+
assert File.exist?(File.join(@tempdir, "a-3.a"))
|
80
81
|
end
|
81
82
|
|
82
83
|
def test_execute_gem_path_missing
|
@@ -84,7 +85,7 @@ class TestGemCommandsUnpackCommand < Gem::TestCase
|
|
84
85
|
|
85
86
|
Gem.clear_paths
|
86
87
|
|
87
|
-
gemhome2 = File.join @tempdir,
|
88
|
+
gemhome2 = File.join @tempdir, "gemhome2"
|
88
89
|
|
89
90
|
Gem.use_paths gemhome2, [gemhome2, @gemhome]
|
90
91
|
|
@@ -96,13 +97,13 @@ class TestGemCommandsUnpackCommand < Gem::TestCase
|
|
96
97
|
end
|
97
98
|
end
|
98
99
|
|
99
|
-
assert_equal
|
100
|
+
assert_equal "", @ui.output
|
100
101
|
end
|
101
102
|
|
102
103
|
def test_execute_remote
|
103
104
|
spec_fetcher do |fetcher|
|
104
|
-
fetcher.download
|
105
|
-
fetcher.download
|
105
|
+
fetcher.download "a", 1
|
106
|
+
fetcher.download "a", 2
|
106
107
|
end
|
107
108
|
|
108
109
|
Gem.configuration.verbose = :really
|
@@ -114,7 +115,7 @@ class TestGemCommandsUnpackCommand < Gem::TestCase
|
|
114
115
|
end
|
115
116
|
end
|
116
117
|
|
117
|
-
assert File.exist?(File.join(@tempdir,
|
118
|
+
assert File.exist?(File.join(@tempdir, "a-2")), "a should be unpacked"
|
118
119
|
end
|
119
120
|
|
120
121
|
def test_execute_spec
|
@@ -129,15 +130,15 @@ class TestGemCommandsUnpackCommand < Gem::TestCase
|
|
129
130
|
end
|
130
131
|
end
|
131
132
|
|
132
|
-
assert File.exist?(File.join(@tempdir,
|
133
|
-
assert File.exist?(File.join(@tempdir,
|
133
|
+
assert File.exist?(File.join(@tempdir, "a-3.a.gemspec"))
|
134
|
+
assert File.exist?(File.join(@tempdir, "b-2.gemspec"))
|
134
135
|
end
|
135
136
|
|
136
137
|
def test_execute_spec_target
|
137
138
|
util_make_gems
|
138
139
|
|
139
140
|
@cmd.options[:args] = %w[a b]
|
140
|
-
@cmd.options[:target] =
|
141
|
+
@cmd.options[:target] = "specs"
|
141
142
|
@cmd.options[:spec] = true
|
142
143
|
|
143
144
|
use_ui @ui do
|
@@ -146,12 +147,12 @@ class TestGemCommandsUnpackCommand < Gem::TestCase
|
|
146
147
|
end
|
147
148
|
end
|
148
149
|
|
149
|
-
assert File.exist?(File.join(@tempdir,
|
150
|
-
assert File.exist?(File.join(@tempdir,
|
150
|
+
assert File.exist?(File.join(@tempdir, "specs/a-3.a.gemspec"))
|
151
|
+
assert File.exist?(File.join(@tempdir, "specs/b-2.gemspec"))
|
151
152
|
end
|
152
153
|
|
153
154
|
def test_execute_sudo
|
154
|
-
pend
|
155
|
+
pend "Cannot perform this test on windows (chmod)" if win_platform?
|
155
156
|
|
156
157
|
util_make_gems
|
157
158
|
|
@@ -165,7 +166,7 @@ class TestGemCommandsUnpackCommand < Gem::TestCase
|
|
165
166
|
end
|
166
167
|
end
|
167
168
|
|
168
|
-
assert File.exist?(File.join(@tempdir,
|
169
|
+
assert File.exist?(File.join(@tempdir, "b-2")), "b should be unpacked"
|
169
170
|
ensure
|
170
171
|
FileUtils.chmod 0755, @gemhome
|
171
172
|
end
|
@@ -173,7 +174,7 @@ class TestGemCommandsUnpackCommand < Gem::TestCase
|
|
173
174
|
def test_execute_with_target_option
|
174
175
|
util_make_gems
|
175
176
|
|
176
|
-
target =
|
177
|
+
target = "with_target"
|
177
178
|
@cmd.options[:args] = %w[a]
|
178
179
|
@cmd.options[:target] = target
|
179
180
|
|
@@ -183,12 +184,12 @@ class TestGemCommandsUnpackCommand < Gem::TestCase
|
|
183
184
|
end
|
184
185
|
end
|
185
186
|
|
186
|
-
assert File.exist?(File.join(@tempdir, target,
|
187
|
+
assert File.exist?(File.join(@tempdir, target, "a-3.a"))
|
187
188
|
end
|
188
189
|
|
189
190
|
def test_execute_exact_match
|
190
|
-
foo_spec = util_spec
|
191
|
-
foo_bar_spec = util_spec
|
191
|
+
foo_spec = util_spec "foo"
|
192
|
+
foo_bar_spec = util_spec "foo_bar"
|
192
193
|
|
193
194
|
use_ui @ui do
|
194
195
|
Dir.chdir @tempdir do
|