rubygems-update 3.4.22 → 3.5.0
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 +99 -2
- data/Manifest.txt +34 -221
- data/README.md +1 -3
- data/bundler/CHANGELOG.md +53 -0
- data/bundler/bundler.gemspec +4 -2
- data/bundler/exe/bundle +1 -10
- data/bundler/lib/bundler/build_metadata.rb +3 -3
- data/bundler/lib/bundler/capistrano.rb +1 -1
- data/bundler/lib/bundler/checksum.rb +245 -0
- data/bundler/lib/bundler/ci_detector.rb +75 -0
- data/bundler/lib/bundler/cli/add.rb +3 -3
- data/bundler/lib/bundler/cli/binstubs.rb +4 -4
- data/bundler/lib/bundler/cli/cache.rb +1 -1
- data/bundler/lib/bundler/cli/check.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +9 -1
- data/bundler/lib/bundler/cli/config.rb +8 -7
- data/bundler/lib/bundler/cli/console.rb +3 -2
- data/bundler/lib/bundler/cli/doctor.rb +2 -2
- data/bundler/lib/bundler/cli/exec.rb +1 -1
- data/bundler/lib/bundler/cli/gem.rb +28 -23
- data/bundler/lib/bundler/cli/info.rb +2 -13
- data/bundler/lib/bundler/cli/install.rb +5 -4
- data/bundler/lib/bundler/cli/issue.rb +1 -1
- data/bundler/lib/bundler/cli/lock.rb +4 -4
- data/bundler/lib/bundler/cli/open.rb +1 -1
- data/bundler/lib/bundler/cli/outdated.rb +6 -6
- data/bundler/lib/bundler/cli/plugin.rb +7 -14
- data/bundler/lib/bundler/cli/pristine.rb +38 -30
- data/bundler/lib/bundler/cli/show.rb +2 -2
- data/bundler/lib/bundler/cli/update.rb +5 -5
- data/bundler/lib/bundler/cli.rb +215 -263
- data/bundler/lib/bundler/compact_index_client/cache.rb +29 -9
- data/bundler/lib/bundler/compact_index_client/cache_file.rb +153 -0
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +7 -3
- data/bundler/lib/bundler/compact_index_client/updater.rb +79 -81
- data/bundler/lib/bundler/compact_index_client.rb +14 -7
- data/bundler/lib/bundler/constants.rb +1 -1
- data/bundler/lib/bundler/current_ruby.rb +5 -21
- data/bundler/lib/bundler/definition.rb +42 -15
- data/bundler/lib/bundler/dependency.rb +16 -12
- data/bundler/lib/bundler/digest.rb +2 -2
- data/bundler/lib/bundler/dsl.rb +43 -25
- data/bundler/lib/bundler/endpoint_specification.rb +5 -1
- data/bundler/lib/bundler/env.rb +1 -3
- data/bundler/lib/bundler/errors.rb +43 -0
- data/bundler/lib/bundler/fetcher/base.rb +3 -1
- data/bundler/lib/bundler/fetcher/compact_index.rb +4 -4
- data/bundler/lib/bundler/fetcher/downloader.rb +13 -11
- data/bundler/lib/bundler/fetcher/gem_remote_fetcher.rb +16 -0
- data/bundler/lib/bundler/fetcher/index.rb +1 -1
- data/bundler/lib/bundler/fetcher.rb +28 -25
- data/bundler/lib/bundler/friendly_errors.rb +5 -5
- data/bundler/lib/bundler/gem_helper.rb +1 -1
- data/bundler/lib/bundler/gem_helpers.rb +5 -2
- data/bundler/lib/bundler/graph.rb +9 -9
- data/bundler/lib/bundler/index.rb +1 -2
- data/bundler/lib/bundler/injector.rb +1 -1
- data/bundler/lib/bundler/inline.rb +3 -3
- data/bundler/lib/bundler/installer/gem_installer.rb +5 -5
- data/bundler/lib/bundler/installer/parallel_installer.rb +16 -8
- data/bundler/lib/bundler/installer/standalone.rb +2 -3
- data/bundler/lib/bundler/installer.rb +9 -9
- data/bundler/lib/bundler/lazy_specification.rb +24 -17
- data/bundler/lib/bundler/lockfile_generator.rb +9 -0
- data/bundler/lib/bundler/lockfile_parser.rb +81 -10
- data/bundler/lib/bundler/man/bundle-add.1 +3 -26
- data/bundler/lib/bundler/man/bundle-binstubs.1 +4 -16
- data/bundler/lib/bundler/man/bundle-cache.1 +3 -24
- data/bundler/lib/bundler/man/bundle-check.1 +3 -12
- data/bundler/lib/bundler/man/bundle-clean.1 +3 -10
- data/bundler/lib/bundler/man/bundle-config.1 +20 -211
- data/bundler/lib/bundler/man/bundle-config.1.ronn +6 -0
- data/bundler/lib/bundler/man/bundle-console.1 +4 -22
- data/bundler/lib/bundler/man/bundle-doctor.1 +4 -18
- data/bundler/lib/bundler/man/bundle-exec.1 +12 -73
- data/bundler/lib/bundler/man/bundle-gem.1 +13 -49
- data/bundler/lib/bundler/man/bundle-help.1 +3 -7
- data/bundler/lib/bundler/man/bundle-info.1 +3 -9
- data/bundler/lib/bundler/man/bundle-init.1 +3 -12
- data/bundler/lib/bundler/man/bundle-inject.1 +6 -19
- data/bundler/lib/bundler/man/bundle-install.1 +27 -125
- data/bundler/lib/bundler/man/bundle-install.1.ronn +1 -0
- data/bundler/lib/bundler/man/bundle-list.1 +4 -19
- data/bundler/lib/bundler/man/bundle-lock.1 +5 -29
- data/bundler/lib/bundler/man/bundle-open.1 +7 -27
- data/bundler/lib/bundler/man/bundle-outdated.1 +3 -55
- data/bundler/lib/bundler/man/bundle-outdated.1.ronn +1 -0
- data/bundler/lib/bundler/man/bundle-platform.1 +5 -27
- data/bundler/lib/bundler/man/bundle-plugin.1 +3 -29
- data/bundler/lib/bundler/man/bundle-pristine.1 +5 -16
- data/bundler/lib/bundler/man/bundle-remove.1 +4 -14
- data/bundler/lib/bundler/man/bundle-show.1 +3 -10
- data/bundler/lib/bundler/man/bundle-update.1 +18 -137
- data/bundler/lib/bundler/man/bundle-version.1 +3 -16
- data/bundler/lib/bundler/man/bundle-viz.1 +4 -16
- data/bundler/lib/bundler/man/bundle.1 +5 -44
- data/bundler/lib/bundler/man/gemfile.5 +24 -301
- data/bundler/lib/bundler/man/gemfile.5.ronn +4 -0
- data/bundler/lib/bundler/match_metadata.rb +4 -0
- data/bundler/lib/bundler/match_platform.rb +1 -1
- data/bundler/lib/bundler/plugin/api/source.rb +3 -2
- data/bundler/lib/bundler/plugin/installer.rb +1 -1
- data/bundler/lib/bundler/plugin.rb +3 -3
- data/bundler/lib/bundler/resolver/base.rb +1 -1
- data/bundler/lib/bundler/resolver/incompatibility.rb +1 -1
- data/bundler/lib/bundler/resolver/spec_group.rb +1 -4
- data/bundler/lib/bundler/resolver.rb +16 -16
- data/bundler/lib/bundler/ruby_dsl.rb +20 -12
- data/bundler/lib/bundler/ruby_version.rb +1 -1
- data/bundler/lib/bundler/rubygems_ext.rb +24 -50
- data/bundler/lib/bundler/rubygems_gem_installer.rb +6 -56
- data/bundler/lib/bundler/rubygems_integration.rb +25 -94
- data/bundler/lib/bundler/runtime.rb +2 -2
- data/bundler/lib/bundler/self_manager.rb +23 -7
- data/bundler/lib/bundler/settings.rb +27 -7
- data/bundler/lib/bundler/setup.rb +4 -1
- data/bundler/lib/bundler/shared_helpers.rb +35 -13
- data/bundler/lib/bundler/source/git/git_proxy.rb +15 -15
- data/bundler/lib/bundler/source/git.rb +4 -3
- data/bundler/lib/bundler/source/metadata.rb +15 -15
- data/bundler/lib/bundler/source/path.rb +7 -6
- data/bundler/lib/bundler/source/rubygems.rb +21 -14
- data/bundler/lib/bundler/source.rb +2 -0
- data/bundler/lib/bundler/spec_set.rb +38 -10
- data/bundler/lib/bundler/stub_specification.rb +1 -0
- data/bundler/lib/bundler/templates/Executable.bundler +1 -1
- data/bundler/lib/bundler/templates/newgem/README.md.tt +3 -3
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +2 -6
- data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +1 -1
- data/bundler/lib/bundler/templates/newgem/standard.yml.tt +1 -1
- data/bundler/lib/bundler/ui/shell.rb +1 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +53 -6
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +8 -20
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +3 -3
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +2 -2
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +1 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +35 -35
- data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +3 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +256 -132
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +95 -31
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/vendored_net_http.rb +8 -0
- data/bundler/lib/bundler/vendored_persistent.rb +0 -4
- data/bundler/lib/bundler/vendored_timeout.rb +8 -0
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler/vlad.rb +1 -1
- data/bundler/lib/bundler/yaml_serializer.rb +3 -3
- data/bundler/lib/bundler.rb +38 -27
- data/lib/rubygems/available_set.rb +4 -4
- data/lib/rubygems/basic_specification.rb +35 -37
- data/lib/rubygems/bundler_version_finder.rb +4 -4
- data/lib/rubygems/ci_detector.rb +75 -0
- data/lib/rubygems/command.rb +13 -15
- data/lib/rubygems/command_manager.rb +5 -4
- data/lib/rubygems/commands/build_command.rb +2 -2
- data/lib/rubygems/commands/cert_command.rb +1 -2
- data/lib/rubygems/commands/check_command.rb +4 -4
- data/lib/rubygems/commands/cleanup_command.rb +12 -14
- data/lib/rubygems/commands/contents_command.rb +4 -4
- data/lib/rubygems/commands/dependency_command.rb +4 -5
- data/lib/rubygems/commands/environment_command.rb +1 -3
- data/lib/rubygems/commands/exec_command.rb +1 -1
- data/lib/rubygems/commands/fetch_command.rb +2 -2
- data/lib/rubygems/commands/generate_index_command.rb +39 -74
- data/lib/rubygems/commands/help_command.rb +3 -3
- data/lib/rubygems/commands/info_command.rb +2 -2
- data/lib/rubygems/commands/install_command.rb +8 -16
- data/lib/rubygems/commands/list_command.rb +2 -2
- data/lib/rubygems/commands/lock_command.rb +1 -1
- data/lib/rubygems/commands/open_command.rb +1 -1
- data/lib/rubygems/commands/owner_command.rb +1 -1
- data/lib/rubygems/commands/pristine_command.rb +13 -15
- data/lib/rubygems/commands/push_command.rb +2 -2
- data/lib/rubygems/commands/query_command.rb +4 -5
- data/lib/rubygems/commands/rdoc_command.rb +2 -2
- data/lib/rubygems/commands/search_command.rb +2 -2
- data/lib/rubygems/commands/setup_command.rb +31 -34
- data/lib/rubygems/commands/sources_command.rb +12 -12
- data/lib/rubygems/commands/specification_command.rb +10 -10
- data/lib/rubygems/commands/stale_command.rb +1 -1
- data/lib/rubygems/commands/uninstall_command.rb +9 -10
- data/lib/rubygems/commands/unpack_command.rb +4 -4
- data/lib/rubygems/commands/update_command.rb +10 -12
- data/lib/rubygems/commands/which_command.rb +1 -1
- data/lib/rubygems/commands/yank_command.rb +1 -1
- data/lib/rubygems/compatibility.rb +5 -6
- data/lib/rubygems/config_file.rb +4 -4
- data/lib/rubygems/core_ext/kernel_gem.rb +0 -2
- data/lib/rubygems/core_ext/kernel_require.rb +19 -48
- data/lib/rubygems/core_ext/kernel_warn.rb +1 -1
- data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
- data/lib/rubygems/defaults.rb +15 -3
- data/lib/rubygems/dependency.rb +12 -14
- data/lib/rubygems/dependency_installer.rb +29 -30
- data/lib/rubygems/dependency_list.rb +1 -1
- data/lib/rubygems/deprecate.rb +16 -15
- data/lib/rubygems/doctor.rb +5 -5
- data/lib/rubygems/errors.rb +2 -6
- data/lib/rubygems/exceptions.rb +2 -1
- data/lib/rubygems/ext/builder.rb +15 -10
- data/lib/rubygems/ext/cargo_builder.rb +5 -5
- data/lib/rubygems/ext/ext_conf_builder.rb +1 -3
- data/lib/rubygems/gem_runner.rb +4 -4
- data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +3 -3
- data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +3 -3
- data/lib/rubygems/gemcutter_utilities.rb +18 -19
- data/lib/rubygems/install_update_options.rb +18 -19
- data/lib/rubygems/installer.rb +59 -33
- data/lib/rubygems/installer_uninstaller_utils.rb +0 -2
- data/lib/rubygems/local_remote_options.rb +7 -10
- data/lib/rubygems/name_tuple.rb +7 -9
- data/lib/rubygems/net/http.rb +3 -0
- data/lib/rubygems/net-http/LICENSE.txt +22 -0
- data/lib/rubygems/net-http/lib/net/http/backward.rb +40 -0
- data/lib/rubygems/net-http/lib/net/http/exceptions.rb +34 -0
- data/lib/rubygems/net-http/lib/net/http/generic_request.rb +414 -0
- data/lib/rubygems/net-http/lib/net/http/header.rb +981 -0
- data/lib/rubygems/net-http/lib/net/http/proxy_delta.rb +17 -0
- data/lib/rubygems/net-http/lib/net/http/request.rb +88 -0
- data/lib/rubygems/net-http/lib/net/http/requests.rb +425 -0
- data/lib/rubygems/net-http/lib/net/http/response.rb +738 -0
- data/lib/rubygems/net-http/lib/net/http/responses.rb +1174 -0
- data/lib/rubygems/net-http/lib/net/http/status.rb +84 -0
- data/lib/rubygems/net-http/lib/net/http.rb +2496 -0
- data/lib/rubygems/net-http/lib/net/https.rb +23 -0
- data/lib/rubygems/net-protocol/LICENSE.txt +22 -0
- data/lib/rubygems/net-protocol/lib/net/protocol.rb +544 -0
- data/lib/rubygems/optparse/lib/optparse.rb +39 -17
- data/lib/rubygems/package/old.rb +2 -2
- data/lib/rubygems/package/tar_header.rb +45 -39
- data/lib/rubygems/package/tar_reader/entry.rb +5 -4
- data/lib/rubygems/package/tar_reader.rb +5 -3
- data/lib/rubygems/package/tar_writer.rb +19 -17
- data/lib/rubygems/package.rb +27 -26
- data/lib/rubygems/package_task.rb +2 -2
- data/lib/rubygems/path_support.rb +9 -10
- data/lib/rubygems/platform.rb +60 -45
- data/lib/rubygems/query_utils.rb +7 -9
- data/lib/rubygems/remote_fetcher.rb +15 -15
- data/lib/rubygems/request/connection_pools.rb +3 -3
- data/lib/rubygems/request.rb +20 -17
- data/lib/rubygems/request_set/gem_dependency_api.rb +119 -122
- data/lib/rubygems/request_set/lockfile/parser.rb +9 -9
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +20 -12
- data/lib/rubygems/request_set/lockfile.rb +6 -11
- data/lib/rubygems/request_set.rb +5 -5
- data/lib/rubygems/requirement.rb +7 -7
- data/lib/rubygems/resolv/LICENSE.txt +22 -0
- data/lib/rubygems/resolv/lib/resolv.rb +3387 -0
- data/lib/rubygems/resolver/activation_request.rb +1 -3
- data/lib/rubygems/resolver/api_set/gem_parser.rb +7 -3
- data/lib/rubygems/resolver/best_set.rb +1 -1
- data/lib/rubygems/resolver/composed_set.rb +1 -1
- data/lib/rubygems/resolver/conflict.rb +4 -12
- data/lib/rubygems/resolver/index_set.rb +4 -4
- data/lib/rubygems/resolver/index_specification.rb +2 -2
- data/lib/rubygems/resolver/installer_set.rb +5 -6
- data/lib/rubygems/resolver/lock_set.rb +1 -1
- data/lib/rubygems/resolver.rb +3 -10
- data/lib/rubygems/s3_uri_signer.rb +6 -6
- data/lib/rubygems/safe_marshal/elements.rb +138 -0
- data/lib/rubygems/safe_marshal/reader.rb +306 -0
- data/lib/rubygems/safe_marshal/visitors/stream_printer.rb +31 -0
- data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +385 -0
- data/lib/rubygems/safe_marshal/visitors/visitor.rb +74 -0
- data/lib/rubygems/safe_marshal.rb +74 -0
- data/lib/rubygems/safe_yaml.rb +5 -28
- data/lib/rubygems/security/policies.rb +36 -38
- data/lib/rubygems/security/policy.rb +7 -11
- data/lib/rubygems/security/signer.rb +1 -1
- data/lib/rubygems/security/trust_dir.rb +3 -3
- data/lib/rubygems/security.rb +8 -22
- data/lib/rubygems/source/git.rb +1 -3
- data/lib/rubygems/source/installed.rb +0 -2
- data/lib/rubygems/source/local.rb +5 -8
- data/lib/rubygems/source/lock.rb +1 -3
- data/lib/rubygems/source/specific_file.rb +0 -1
- data/lib/rubygems/source/vendor.rb +0 -2
- data/lib/rubygems/source.rb +12 -12
- data/lib/rubygems/source_list.rb +4 -4
- data/lib/rubygems/spec_fetcher.rb +29 -29
- data/lib/rubygems/specification.rb +125 -138
- data/lib/rubygems/specification_policy.rb +55 -25
- data/lib/rubygems/stub_specification.rb +4 -5
- data/lib/rubygems/text.rb +1 -2
- data/lib/rubygems/timeout/LICENSE.txt +22 -0
- data/lib/rubygems/timeout/lib/timeout.rb +199 -0
- data/lib/rubygems/timeout.rb +3 -0
- data/lib/rubygems/tsort/lib/tsort.rb +3 -0
- data/lib/rubygems/uninstaller.rb +7 -9
- data/lib/rubygems/update_suggestion.rb +5 -18
- data/lib/rubygems/uri_formatter.rb +1 -1
- data/lib/rubygems/user_interaction.rb +15 -21
- data/lib/rubygems/util/licenses.rb +65 -35
- data/lib/rubygems/util/list.rb +3 -1
- data/lib/rubygems/util.rb +2 -4
- data/lib/rubygems/validator.rb +5 -3
- data/lib/rubygems/version.rb +34 -28
- data/lib/rubygems/version_option.rb +2 -5
- data/lib/rubygems/yaml_serializer.rb +3 -3
- data/lib/rubygems.rb +37 -37
- data/rubygems-update.gemspec +4 -4
- data/setup.rb +2 -2
- metadata +38 -225
- data/lib/rubygems/indexer.rb +0 -428
- data/lib/rubygems/mock_gem_ui.rb +0 -86
- data/test/rubygems/alternate_cert.pem +0 -19
- data/test/rubygems/alternate_cert_32.pem +0 -19
- data/test/rubygems/alternate_key.pem +0 -27
- data/test/rubygems/bad_rake.rb +0 -3
- data/test/rubygems/bundler_test_gem.rb +0 -424
- data/test/rubygems/ca_cert.pem +0 -77
- data/test/rubygems/child_cert.pem +0 -19
- data/test/rubygems/child_cert_32.pem +0 -19
- data/test/rubygems/child_key.pem +0 -27
- data/test/rubygems/client.pem +0 -107
- data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
- data/test/rubygems/data/gem-private_key.pem +0 -27
- data/test/rubygems/data/gem-public_cert.pem +0 -20
- data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
- data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
- data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
- data/test/rubygems/encrypted_private_key.pem +0 -30
- data/test/rubygems/expired_cert.pem +0 -19
- data/test/rubygems/fake_certlib/openssl.rb +0 -9
- data/test/rubygems/foo/discover.rb +0 -1
- data/test/rubygems/future_cert.pem +0 -19
- data/test/rubygems/future_cert_32.pem +0 -19
- data/test/rubygems/good_rake.rb +0 -3
- data/test/rubygems/grandchild_cert.pem +0 -19
- data/test/rubygems/grandchild_cert_32.pem +0 -19
- data/test/rubygems/grandchild_key.pem +0 -27
- data/test/rubygems/helper.rb +0 -1649
- data/test/rubygems/installer_test_case.rb +0 -248
- data/test/rubygems/invalid_client.pem +0 -49
- data/test/rubygems/invalid_issuer_cert.pem +0 -20
- data/test/rubygems/invalid_issuer_cert_32.pem +0 -20
- data/test/rubygems/invalid_key.pem +0 -27
- data/test/rubygems/invalid_signer_cert.pem +0 -19
- data/test/rubygems/invalid_signer_cert_32.pem +0 -19
- data/test/rubygems/invalidchild_cert.pem +0 -19
- data/test/rubygems/invalidchild_cert_32.pem +0 -19
- data/test/rubygems/invalidchild_key.pem +0 -27
- data/test/rubygems/multifactor_auth_utilities.rb +0 -111
- data/test/rubygems/package/tar_test_case.rb +0 -175
- data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
- data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
- data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
- data/test/rubygems/plugin/exception/rubygems_plugin.rb +0 -4
- data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -5
- data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +0 -4
- data/test/rubygems/private3072_key.pem +0 -40
- data/test/rubygems/private_ec_key.pem +0 -9
- data/test/rubygems/private_key.pem +0 -27
- data/test/rubygems/public3072_cert.pem +0 -25
- data/test/rubygems/public_cert.pem +0 -20
- data/test/rubygems/public_cert_32.pem +0 -19
- data/test/rubygems/public_key.pem +0 -9
- data/test/rubygems/rubygems/commands/crash_command.rb +0 -5
- data/test/rubygems/rubygems_plugin.rb +0 -24
- data/test/rubygems/sff/discover.rb +0 -1
- data/test/rubygems/simple_gem.rb +0 -68
- data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -9
- data/test/rubygems/specifications/foo-0.0.1-x86-mswin32.gemspec +0 -0
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +0 -14
- data/test/rubygems/ssl_cert.pem +0 -80
- data/test/rubygems/ssl_key.pem +0 -27
- data/test/rubygems/test_bundled_ca.rb +0 -61
- data/test/rubygems/test_config.rb +0 -28
- data/test/rubygems/test_deprecate.rb +0 -158
- data/test/rubygems/test_exit.rb +0 -17
- data/test/rubygems/test_gem.rb +0 -1799
- data/test/rubygems/test_gem_available_set.rb +0 -130
- data/test/rubygems/test_gem_bundler_version_finder.rb +0 -127
- data/test/rubygems/test_gem_command.rb +0 -403
- data/test/rubygems/test_gem_command_manager.rb +0 -400
- data/test/rubygems/test_gem_commands_build_command.rb +0 -739
- data/test/rubygems/test_gem_commands_cert_command.rb +0 -866
- data/test/rubygems/test_gem_commands_check_command.rb +0 -68
- data/test/rubygems/test_gem_commands_cleanup_command.rb +0 -292
- data/test/rubygems/test_gem_commands_contents_command.rb +0 -271
- data/test/rubygems/test_gem_commands_dependency_command.rb +0 -228
- data/test/rubygems/test_gem_commands_environment_command.rb +0 -169
- data/test/rubygems/test_gem_commands_exec_command.rb +0 -857
- data/test/rubygems/test_gem_commands_fetch_command.rb +0 -258
- data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -81
- data/test/rubygems/test_gem_commands_help_command.rb +0 -94
- data/test/rubygems/test_gem_commands_info_command.rb +0 -70
- data/test/rubygems/test_gem_commands_install_command.rb +0 -1573
- data/test/rubygems/test_gem_commands_list_command.rb +0 -33
- data/test/rubygems/test_gem_commands_lock_command.rb +0 -67
- data/test/rubygems/test_gem_commands_mirror.rb +0 -20
- data/test/rubygems/test_gem_commands_open_command.rb +0 -101
- data/test/rubygems/test_gem_commands_outdated_command.rb +0 -50
- data/test/rubygems/test_gem_commands_owner_command.rb +0 -503
- data/test/rubygems/test_gem_commands_pristine_command.rb +0 -708
- data/test/rubygems/test_gem_commands_push_command.rb +0 -603
- data/test/rubygems/test_gem_commands_query_command.rb +0 -858
- data/test/rubygems/test_gem_commands_search_command.rb +0 -16
- data/test/rubygems/test_gem_commands_server_command.rb +0 -20
- data/test/rubygems/test_gem_commands_setup_command.rb +0 -474
- data/test/rubygems/test_gem_commands_signin_command.rb +0 -259
- data/test/rubygems/test_gem_commands_signout_command.rb +0 -30
- data/test/rubygems/test_gem_commands_sources_command.rb +0 -534
- data/test/rubygems/test_gem_commands_specification_command.rb +0 -277
- data/test/rubygems/test_gem_commands_stale_command.rb +0 -43
- data/test/rubygems/test_gem_commands_uninstall_command.rb +0 -542
- data/test/rubygems/test_gem_commands_unpack_command.rb +0 -224
- data/test/rubygems/test_gem_commands_update_command.rb +0 -836
- data/test/rubygems/test_gem_commands_which_command.rb +0 -85
- data/test/rubygems/test_gem_commands_yank_command.rb +0 -299
- data/test/rubygems/test_gem_config_file.rb +0 -551
- data/test/rubygems/test_gem_dependency.rb +0 -398
- data/test/rubygems/test_gem_dependency_installer.rb +0 -1190
- data/test/rubygems/test_gem_dependency_list.rb +0 -265
- data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -27
- data/test/rubygems/test_gem_doctor.rb +0 -195
- data/test/rubygems/test_gem_ext_builder.rb +0 -337
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +0 -1
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +0 -10
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +0 -249
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +0 -10
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +0 -27
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +0 -3
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +0 -1
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +0 -249
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +0 -10
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +0 -10
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +0 -51
- data/test/rubygems/test_gem_ext_cargo_builder.rb +0 -167
- data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +0 -34
- data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +0 -60
- data/test/rubygems/test_gem_ext_cmake_builder.rb +0 -84
- data/test/rubygems/test_gem_ext_configure_builder.rb +0 -80
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -229
- data/test/rubygems/test_gem_ext_rake_builder.rb +0 -113
- data/test/rubygems/test_gem_gem_runner.rb +0 -119
- data/test/rubygems/test_gem_gemcutter_utilities.rb +0 -361
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -60
- data/test/rubygems/test_gem_indexer.rb +0 -381
- data/test/rubygems/test_gem_install_update_options.rb +0 -208
- data/test/rubygems/test_gem_installer.rb +0 -2512
- data/test/rubygems/test_gem_local_remote_options.rb +0 -133
- data/test/rubygems/test_gem_name_tuple.rb +0 -43
- data/test/rubygems/test_gem_package.rb +0 -1306
- data/test/rubygems/test_gem_package_old.rb +0 -91
- data/test/rubygems/test_gem_package_tar_header.rb +0 -226
- data/test/rubygems/test_gem_package_tar_reader.rb +0 -150
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -350
- data/test/rubygems/test_gem_package_tar_writer.rb +0 -331
- data/test/rubygems/test_gem_package_task.rb +0 -118
- data/test/rubygems/test_gem_path_support.rb +0 -139
- data/test/rubygems/test_gem_platform.rb +0 -497
- data/test/rubygems/test_gem_rdoc.rb +0 -137
- data/test/rubygems/test_gem_remote_fetcher.rb +0 -1227
- data/test/rubygems/test_gem_request.rb +0 -547
- data/test/rubygems/test_gem_request_connection_pools.rb +0 -152
- data/test/rubygems/test_gem_request_set.rb +0 -672
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +0 -853
- data/test/rubygems/test_gem_request_set_lockfile.rb +0 -469
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +0 -544
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +0 -307
- data/test/rubygems/test_gem_requirement.rb +0 -505
- data/test/rubygems/test_gem_resolver.rb +0 -859
- data/test/rubygems/test_gem_resolver_activation_request.rb +0 -43
- data/test/rubygems/test_gem_resolver_api_set.rb +0 -210
- data/test/rubygems/test_gem_resolver_api_specification.rb +0 -167
- data/test/rubygems/test_gem_resolver_best_set.rb +0 -159
- data/test/rubygems/test_gem_resolver_composed_set.rb +0 -44
- data/test/rubygems/test_gem_resolver_conflict.rb +0 -82
- data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -83
- data/test/rubygems/test_gem_resolver_git_set.rb +0 -188
- data/test/rubygems/test_gem_resolver_git_specification.rb +0 -114
- data/test/rubygems/test_gem_resolver_index_set.rb +0 -88
- data/test/rubygems/test_gem_resolver_index_specification.rb +0 -93
- data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -47
- data/test/rubygems/test_gem_resolver_installer_set.rb +0 -320
- data/test/rubygems/test_gem_resolver_local_specification.rb +0 -44
- data/test/rubygems/test_gem_resolver_lock_set.rb +0 -62
- data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -98
- data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -19
- data/test/rubygems/test_gem_resolver_specification.rb +0 -63
- data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -82
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -82
- data/test/rubygems/test_gem_security.rb +0 -341
- data/test/rubygems/test_gem_security_policy.rb +0 -535
- data/test/rubygems/test_gem_security_signer.rb +0 -218
- data/test/rubygems/test_gem_security_trust_dir.rb +0 -99
- data/test/rubygems/test_gem_silent_ui.rb +0 -123
- data/test/rubygems/test_gem_source.rb +0 -254
- data/test/rubygems/test_gem_source_fetch_problem.rb +0 -37
- data/test/rubygems/test_gem_source_git.rb +0 -310
- data/test/rubygems/test_gem_source_installed.rb +0 -35
- data/test/rubygems/test_gem_source_list.rb +0 -119
- data/test/rubygems/test_gem_source_local.rb +0 -107
- data/test/rubygems/test_gem_source_lock.rb +0 -113
- data/test/rubygems/test_gem_source_specific_file.rb +0 -76
- data/test/rubygems/test_gem_source_subpath_problem.rb +0 -50
- data/test/rubygems/test_gem_source_vendor.rb +0 -30
- data/test/rubygems/test_gem_spec_fetcher.rb +0 -338
- data/test/rubygems/test_gem_specification.rb +0 -3856
- data/test/rubygems/test_gem_stream_ui.rb +0 -255
- data/test/rubygems/test_gem_stub_specification.rb +0 -278
- data/test/rubygems/test_gem_text.rb +0 -103
- data/test/rubygems/test_gem_uninstaller.rb +0 -675
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -31
- data/test/rubygems/test_gem_update_suggestion.rb +0 -209
- data/test/rubygems/test_gem_uri.rb +0 -41
- data/test/rubygems/test_gem_uri_formatter.rb +0 -27
- data/test/rubygems/test_gem_util.rb +0 -91
- data/test/rubygems/test_gem_validator.rb +0 -42
- data/test/rubygems/test_gem_version.rb +0 -305
- data/test/rubygems/test_gem_version_option.rb +0 -165
- data/test/rubygems/test_kernel.rb +0 -124
- data/test/rubygems/test_project_sanity.rb +0 -49
- data/test/rubygems/test_remote_fetch_error.rb +0 -20
- data/test/rubygems/test_require.rb +0 -732
- data/test/rubygems/test_rubygems.rb +0 -76
- data/test/rubygems/test_webauthn_listener.rb +0 -143
- data/test/rubygems/test_webauthn_listener_response.rb +0 -93
- data/test/rubygems/test_webauthn_poller.rb +0 -124
- data/test/rubygems/utilities.rb +0 -436
- data/test/rubygems/wrong_key_cert.pem +0 -19
- data/test/rubygems/wrong_key_cert_32.pem +0 -19
- data/test/test_changelog_generator.rb +0 -17
@@ -1,675 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative "installer_test_case"
|
4
|
-
require "rubygems/uninstaller"
|
5
|
-
|
6
|
-
class TestGemUninstaller < Gem::InstallerTestCase
|
7
|
-
def setup
|
8
|
-
super
|
9
|
-
@installer = setup_base_installer
|
10
|
-
@user_installer = setup_base_user_installer
|
11
|
-
common_installer_setup
|
12
|
-
|
13
|
-
build_rake_in do
|
14
|
-
use_ui ui do
|
15
|
-
@installer.install
|
16
|
-
@spec = @installer.spec
|
17
|
-
|
18
|
-
@user_installer.install
|
19
|
-
@user_spec = @user_installer.spec
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
Gem::Specification.reset
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_initialize_expand_path
|
27
|
-
FileUtils.mkdir_p "foo/bar"
|
28
|
-
uninstaller = Gem::Uninstaller.new nil, :install_dir => "foo//bar"
|
29
|
-
|
30
|
-
assert_match %r{foo/bar$}, uninstaller.instance_variable_get(:@gem_home)
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_ask_if_ok
|
34
|
-
c = util_spec "c"
|
35
|
-
|
36
|
-
uninstaller = Gem::Uninstaller.new nil
|
37
|
-
|
38
|
-
ok = :junk
|
39
|
-
|
40
|
-
ui = Gem::MockGemUi.new "\n"
|
41
|
-
|
42
|
-
use_ui ui do
|
43
|
-
ok = uninstaller.ask_if_ok c
|
44
|
-
end
|
45
|
-
|
46
|
-
refute ok
|
47
|
-
end
|
48
|
-
|
49
|
-
def test_remove_all
|
50
|
-
uninstaller = Gem::Uninstaller.new nil
|
51
|
-
|
52
|
-
ui = Gem::MockGemUi.new "y\n"
|
53
|
-
|
54
|
-
use_ui ui do
|
55
|
-
uninstaller.remove_all [@spec]
|
56
|
-
end
|
57
|
-
|
58
|
-
assert_path_not_exist @spec.gem_dir
|
59
|
-
end
|
60
|
-
|
61
|
-
def test_remove_executables_force_keep
|
62
|
-
uninstaller = Gem::Uninstaller.new nil, :executables => false
|
63
|
-
|
64
|
-
executable = File.join Gem.bindir(@user_spec.base_dir), "executable"
|
65
|
-
assert File.exist?(executable), "executable not written"
|
66
|
-
|
67
|
-
use_ui @ui do
|
68
|
-
uninstaller.remove_executables @user_spec
|
69
|
-
end
|
70
|
-
|
71
|
-
assert File.exist? executable
|
72
|
-
|
73
|
-
assert_equal "Executables and scripts will remain installed.\n", @ui.output
|
74
|
-
end
|
75
|
-
|
76
|
-
def test_remove_executables_force_remove
|
77
|
-
uninstaller = Gem::Uninstaller.new nil, :executables => true
|
78
|
-
|
79
|
-
executable = File.join Gem.bindir(@user_spec.base_dir), "executable"
|
80
|
-
assert File.exist?(executable), "executable not written"
|
81
|
-
|
82
|
-
use_ui @ui do
|
83
|
-
uninstaller.remove_executables @user_spec
|
84
|
-
end
|
85
|
-
|
86
|
-
assert_equal "Removing executable\n", @ui.output
|
87
|
-
|
88
|
-
refute File.exist? executable
|
89
|
-
end
|
90
|
-
|
91
|
-
def test_remove_executables_user
|
92
|
-
uninstaller = Gem::Uninstaller.new nil, :executables => true
|
93
|
-
|
94
|
-
use_ui @ui do
|
95
|
-
uninstaller.remove_executables @user_spec
|
96
|
-
end
|
97
|
-
|
98
|
-
exec_path = File.join Gem.user_dir, "bin", "executable"
|
99
|
-
refute File.exist?(exec_path), "exec still exists in user bin dir"
|
100
|
-
|
101
|
-
assert_equal "Removing executable\n", @ui.output
|
102
|
-
end
|
103
|
-
|
104
|
-
def test_remove_executables_user_format
|
105
|
-
Gem::Installer.exec_format = "foo-%s-bar"
|
106
|
-
|
107
|
-
uninstaller = Gem::Uninstaller.new nil, :executables => true, :format_executable => true
|
108
|
-
|
109
|
-
use_ui @ui do
|
110
|
-
uninstaller.remove_executables @user_spec
|
111
|
-
end
|
112
|
-
|
113
|
-
exec_path = File.join Gem.user_dir, "bin", "foo-executable-bar"
|
114
|
-
assert_equal false, File.exist?(exec_path), "removed exec from bin dir"
|
115
|
-
|
116
|
-
assert_equal "Removing foo-executable-bar\n", @ui.output
|
117
|
-
ensure
|
118
|
-
Gem::Installer.exec_format = nil
|
119
|
-
end
|
120
|
-
|
121
|
-
def test_remove_executables_user_format_disabled
|
122
|
-
Gem::Installer.exec_format = "foo-%s-bar"
|
123
|
-
|
124
|
-
uninstaller = Gem::Uninstaller.new nil, :executables => true
|
125
|
-
|
126
|
-
use_ui @ui do
|
127
|
-
uninstaller.remove_executables @user_spec
|
128
|
-
end
|
129
|
-
|
130
|
-
exec_path = File.join Gem.user_dir, "bin", "executable"
|
131
|
-
refute File.exist?(exec_path), "removed exec from bin dir"
|
132
|
-
|
133
|
-
assert_equal "Removing executable\n", @ui.output
|
134
|
-
ensure
|
135
|
-
Gem::Installer.exec_format = nil
|
136
|
-
end
|
137
|
-
|
138
|
-
def test_remove_not_in_home
|
139
|
-
Dir.mkdir "#{@gemhome}2"
|
140
|
-
uninstaller = Gem::Uninstaller.new nil, :install_dir => "#{@gemhome}2"
|
141
|
-
|
142
|
-
e = assert_raise Gem::GemNotInHomeException do
|
143
|
-
use_ui ui do
|
144
|
-
uninstaller.remove @spec
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
|
-
expected =
|
149
|
-
"Gem '#{@spec.full_name}' is not installed in directory #{@gemhome}2"
|
150
|
-
|
151
|
-
assert_equal expected, e.message
|
152
|
-
|
153
|
-
assert_path_exist @spec.gem_dir
|
154
|
-
end
|
155
|
-
|
156
|
-
def test_remove_symlinked_gem_home
|
157
|
-
pend "Symlinks not supported or not enabled" unless symlink_supported?
|
158
|
-
|
159
|
-
Dir.mktmpdir("gem_home") do |dir|
|
160
|
-
symlinked_gem_home = "#{dir}/#{File.basename(@gemhome)}"
|
161
|
-
|
162
|
-
FileUtils.ln_s(@gemhome, dir)
|
163
|
-
|
164
|
-
uninstaller = Gem::Uninstaller.new nil, :install_dir => symlinked_gem_home
|
165
|
-
|
166
|
-
use_ui ui do
|
167
|
-
uninstaller.remove @spec
|
168
|
-
end
|
169
|
-
|
170
|
-
assert_path_not_exist @spec.gem_dir
|
171
|
-
end
|
172
|
-
end
|
173
|
-
|
174
|
-
def test_remove_plugins
|
175
|
-
write_file File.join(@tempdir, "lib", "rubygems_plugin.rb") do |io|
|
176
|
-
io.write "# do nothing"
|
177
|
-
end
|
178
|
-
|
179
|
-
@spec.files += %w[lib/rubygems_plugin.rb]
|
180
|
-
|
181
|
-
Gem::Installer.at(Gem::Package.build(@spec), :force => true).install
|
182
|
-
|
183
|
-
plugin_path = File.join Gem.plugindir, "a_plugin.rb"
|
184
|
-
assert File.exist?(plugin_path), "plugin not written"
|
185
|
-
|
186
|
-
Gem::Uninstaller.new(nil).remove_plugins @spec
|
187
|
-
|
188
|
-
refute File.exist?(plugin_path), "plugin not removed"
|
189
|
-
end
|
190
|
-
|
191
|
-
def test_remove_plugins_with_install_dir
|
192
|
-
write_file File.join(@tempdir, "lib", "rubygems_plugin.rb") do |io|
|
193
|
-
io.write "# do nothing"
|
194
|
-
end
|
195
|
-
|
196
|
-
@spec.files += %w[lib/rubygems_plugin.rb]
|
197
|
-
|
198
|
-
Gem::Installer.at(Gem::Package.build(@spec), :force => true).install
|
199
|
-
|
200
|
-
plugin_path = File.join Gem.plugindir, "a_plugin.rb"
|
201
|
-
assert File.exist?(plugin_path), "plugin not written"
|
202
|
-
|
203
|
-
Dir.mkdir "#{@gemhome}2"
|
204
|
-
Gem::Uninstaller.new(nil, :install_dir => "#{@gemhome}2").remove_plugins @spec
|
205
|
-
|
206
|
-
assert File.exist?(plugin_path), "plugin unintentionally removed"
|
207
|
-
end
|
208
|
-
|
209
|
-
def test_regenerate_plugins_for
|
210
|
-
write_file File.join(@tempdir, "lib", "rubygems_plugin.rb") do |io|
|
211
|
-
io.write "# do nothing"
|
212
|
-
end
|
213
|
-
|
214
|
-
@spec.files += %w[lib/rubygems_plugin.rb]
|
215
|
-
|
216
|
-
Gem::Installer.at(Gem::Package.build(@spec), :force => true).install
|
217
|
-
|
218
|
-
plugin_path = File.join Gem.plugindir, "a_plugin.rb"
|
219
|
-
assert File.exist?(plugin_path), "plugin not written"
|
220
|
-
|
221
|
-
FileUtils.rm plugin_path
|
222
|
-
Gem::Uninstaller.new(nil).regenerate_plugins_for @spec, Gem.plugindir
|
223
|
-
|
224
|
-
assert File.exist?(plugin_path), "plugin not regenerated"
|
225
|
-
end
|
226
|
-
|
227
|
-
def test_path_ok_eh
|
228
|
-
uninstaller = Gem::Uninstaller.new nil
|
229
|
-
|
230
|
-
assert_equal true, uninstaller.path_ok?(@gemhome, @spec)
|
231
|
-
end
|
232
|
-
|
233
|
-
def test_path_ok_eh_legacy
|
234
|
-
uninstaller = Gem::Uninstaller.new nil
|
235
|
-
|
236
|
-
@spec.loaded_from = @spec.loaded_from.gsub @spec.full_name, '\&-legacy'
|
237
|
-
@spec.internal_init # blow out cache. but why did ^^ depend on cache?
|
238
|
-
@spec.platform = "legacy"
|
239
|
-
|
240
|
-
assert_equal true, uninstaller.path_ok?(@gemhome, @spec)
|
241
|
-
end
|
242
|
-
|
243
|
-
def test_path_ok_eh_user
|
244
|
-
uninstaller = Gem::Uninstaller.new nil
|
245
|
-
|
246
|
-
assert_equal true, uninstaller.path_ok?(Gem.user_dir, @user_spec)
|
247
|
-
end
|
248
|
-
|
249
|
-
def test_uninstall
|
250
|
-
uninstaller = Gem::Uninstaller.new @spec.name, :executables => true
|
251
|
-
|
252
|
-
gem_dir = File.join @gemhome, "gems", @spec.full_name
|
253
|
-
|
254
|
-
Gem.pre_uninstall do
|
255
|
-
sleep(0.1) if win_platform?
|
256
|
-
assert File.exist?(gem_dir), "gem_dir should exist"
|
257
|
-
end
|
258
|
-
|
259
|
-
Gem.post_uninstall do
|
260
|
-
sleep(0.1) if win_platform?
|
261
|
-
refute File.exist?(gem_dir), "gem_dir should not exist"
|
262
|
-
end
|
263
|
-
|
264
|
-
uninstaller.uninstall
|
265
|
-
|
266
|
-
refute File.exist?(gem_dir)
|
267
|
-
|
268
|
-
assert_same uninstaller, @pre_uninstall_hook_arg
|
269
|
-
assert_same uninstaller, @post_uninstall_hook_arg
|
270
|
-
end
|
271
|
-
|
272
|
-
def test_uninstall_default_gem
|
273
|
-
spec = new_default_spec "default", "2"
|
274
|
-
|
275
|
-
install_default_gems spec
|
276
|
-
|
277
|
-
uninstaller = Gem::Uninstaller.new spec.name, :executables => true
|
278
|
-
|
279
|
-
use_ui @ui do
|
280
|
-
uninstaller.uninstall
|
281
|
-
end
|
282
|
-
|
283
|
-
lines = @ui.output.split("\n")
|
284
|
-
|
285
|
-
assert_equal "Gem default-2 cannot be uninstalled because it is a default gem", lines.shift
|
286
|
-
end
|
287
|
-
|
288
|
-
def test_uninstall_default_gem_with_same_version
|
289
|
-
default_spec = new_default_spec "default", "2"
|
290
|
-
install_default_gems default_spec
|
291
|
-
|
292
|
-
spec = util_spec "default", "2"
|
293
|
-
install_gem spec
|
294
|
-
|
295
|
-
Gem::Specification.reset
|
296
|
-
|
297
|
-
uninstaller = Gem::Uninstaller.new spec.name, :executables => true
|
298
|
-
|
299
|
-
ui = Gem::MockGemUi.new "1\ny\n"
|
300
|
-
use_ui ui do
|
301
|
-
uninstaller.uninstall
|
302
|
-
end
|
303
|
-
expected = "Successfully uninstalled default-2\n" \
|
304
|
-
"There was both a regular copy and a default copy of default-2. The " \
|
305
|
-
"regular copy was successfully uninstalled, but the default copy " \
|
306
|
-
"was left around because default gems can't be removed.\n"
|
307
|
-
assert_equal expected, ui.output
|
308
|
-
assert_path_not_exist spec.gem_dir
|
309
|
-
end
|
310
|
-
|
311
|
-
def test_uninstall_extension
|
312
|
-
@spec.extensions << "extconf.rb"
|
313
|
-
write_file File.join(@tempdir, "extconf.rb") do |io|
|
314
|
-
io.write <<-RUBY
|
315
|
-
require 'mkmf'
|
316
|
-
create_makefile '#{@spec.name}'
|
317
|
-
RUBY
|
318
|
-
end
|
319
|
-
|
320
|
-
@spec.files += %w[extconf.rb]
|
321
|
-
|
322
|
-
use_ui @ui do
|
323
|
-
path = Gem::Package.build @spec
|
324
|
-
|
325
|
-
installer = Gem::Installer.at path, :force => true
|
326
|
-
installer.install
|
327
|
-
end
|
328
|
-
|
329
|
-
assert_path_exist @spec.extension_dir, "sanity check"
|
330
|
-
|
331
|
-
uninstaller = Gem::Uninstaller.new @spec.name, :executables => true
|
332
|
-
uninstaller.uninstall
|
333
|
-
|
334
|
-
assert_path_not_exist @spec.extension_dir
|
335
|
-
end
|
336
|
-
|
337
|
-
def test_uninstall_nonexistent
|
338
|
-
uninstaller = Gem::Uninstaller.new "bogus", :executables => true
|
339
|
-
|
340
|
-
e = assert_raise Gem::InstallError do
|
341
|
-
uninstaller.uninstall
|
342
|
-
end
|
343
|
-
|
344
|
-
assert_equal 'gem "bogus" is not installed', e.message
|
345
|
-
end
|
346
|
-
|
347
|
-
def test_uninstall_not_ok
|
348
|
-
quick_gem "z" do |s|
|
349
|
-
s.add_runtime_dependency @spec.name
|
350
|
-
end
|
351
|
-
|
352
|
-
uninstaller = Gem::Uninstaller.new @spec.name
|
353
|
-
|
354
|
-
gem_dir = File.join @gemhome, "gems", @spec.full_name
|
355
|
-
executable = File.join @gemhome, "bin", "executable"
|
356
|
-
|
357
|
-
assert File.exist?(gem_dir), "gem_dir must exist"
|
358
|
-
assert File.exist?(executable), "executable must exist"
|
359
|
-
|
360
|
-
ui = Gem::MockGemUi.new "n\n"
|
361
|
-
|
362
|
-
assert_raise Gem::DependencyRemovalException do
|
363
|
-
use_ui ui do
|
364
|
-
uninstaller.uninstall
|
365
|
-
end
|
366
|
-
end
|
367
|
-
|
368
|
-
assert File.exist?(gem_dir), "gem_dir must still exist"
|
369
|
-
assert File.exist?(executable), "executable must still exist"
|
370
|
-
end
|
371
|
-
|
372
|
-
def test_uninstall_user_install
|
373
|
-
@user_spec = Gem::Specification.find_by_name "b"
|
374
|
-
|
375
|
-
uninstaller = Gem::Uninstaller.new(@user_spec.name,
|
376
|
-
:executables => true,
|
377
|
-
:user_install => true)
|
378
|
-
|
379
|
-
gem_dir = File.join @user_spec.gem_dir
|
380
|
-
|
381
|
-
Gem.pre_uninstall do
|
382
|
-
assert_path_exist gem_dir
|
383
|
-
end
|
384
|
-
|
385
|
-
Gem.post_uninstall do
|
386
|
-
assert_path_not_exist gem_dir
|
387
|
-
end
|
388
|
-
|
389
|
-
uninstaller.uninstall
|
390
|
-
|
391
|
-
assert_path_not_exist gem_dir
|
392
|
-
|
393
|
-
assert_same uninstaller, @pre_uninstall_hook_arg
|
394
|
-
assert_same uninstaller, @post_uninstall_hook_arg
|
395
|
-
end
|
396
|
-
|
397
|
-
def test_uninstall_wrong_repo
|
398
|
-
Dir.mkdir "#{@gemhome}2"
|
399
|
-
Gem.use_paths "#{@gemhome}2", [@gemhome]
|
400
|
-
|
401
|
-
uninstaller = Gem::Uninstaller.new @spec.name, :executables => true
|
402
|
-
|
403
|
-
e = assert_raise Gem::InstallError do
|
404
|
-
uninstaller.uninstall
|
405
|
-
end
|
406
|
-
|
407
|
-
expected = <<-MESSAGE.strip
|
408
|
-
#{@spec.name} is not installed in GEM_HOME, try:
|
409
|
-
\tgem uninstall -i #{@gemhome} a
|
410
|
-
MESSAGE
|
411
|
-
|
412
|
-
assert_equal expected, e.message
|
413
|
-
end
|
414
|
-
|
415
|
-
def test_uninstall_selection
|
416
|
-
util_make_gems
|
417
|
-
|
418
|
-
list = Gem::Specification.find_all_by_name "a"
|
419
|
-
|
420
|
-
uninstaller = Gem::Uninstaller.new "a"
|
421
|
-
|
422
|
-
ui = Gem::MockGemUi.new "1\ny\n"
|
423
|
-
|
424
|
-
use_ui ui do
|
425
|
-
uninstaller.uninstall
|
426
|
-
end
|
427
|
-
|
428
|
-
updated_list = Gem::Specification.find_all_by_name("a")
|
429
|
-
assert_equal list.length - 1, updated_list.length
|
430
|
-
|
431
|
-
assert_match " 1. a-1", ui.output
|
432
|
-
assert_match " 2. a-2", ui.output
|
433
|
-
assert_match " 3. a-3.a", ui.output
|
434
|
-
assert_match " 4. All versions", ui.output
|
435
|
-
assert_match "uninstalled a-1", ui.output
|
436
|
-
end
|
437
|
-
|
438
|
-
def test_uninstall_selection_greater_than_one
|
439
|
-
util_make_gems
|
440
|
-
|
441
|
-
list = Gem::Specification.find_all_by_name("a")
|
442
|
-
|
443
|
-
uninstaller = Gem::Uninstaller.new("a")
|
444
|
-
|
445
|
-
use_ui Gem::MockGemUi.new("2\ny\n") do
|
446
|
-
uninstaller.uninstall
|
447
|
-
end
|
448
|
-
|
449
|
-
updated_list = Gem::Specification.find_all_by_name("a")
|
450
|
-
assert_equal list.length - 1, updated_list.length
|
451
|
-
end
|
452
|
-
|
453
|
-
def test_uninstall_prompts_about_broken_deps
|
454
|
-
quick_gem "r", "1" do |s|
|
455
|
-
s.add_dependency "q", "= 1"
|
456
|
-
end
|
457
|
-
|
458
|
-
quick_gem "q", "1"
|
459
|
-
|
460
|
-
un = Gem::Uninstaller.new("q")
|
461
|
-
ui = Gem::MockGemUi.new("y\n")
|
462
|
-
|
463
|
-
use_ui ui do
|
464
|
-
un.uninstall
|
465
|
-
end
|
466
|
-
|
467
|
-
lines = ui.output.split("\n")
|
468
|
-
lines.shift
|
469
|
-
|
470
|
-
assert_match %r{You have requested to uninstall the gem:}, lines.shift
|
471
|
-
lines.shift
|
472
|
-
lines.shift
|
473
|
-
|
474
|
-
assert_match %r{r-1 depends on q \(= 1\)}, lines.shift
|
475
|
-
assert_match %r{Successfully uninstalled q-1}, lines.last
|
476
|
-
end
|
477
|
-
|
478
|
-
def test_uninstall_only_lists_unsatisfied_deps
|
479
|
-
quick_gem "r", "1" do |s|
|
480
|
-
s.add_dependency "q", "~> 1.0"
|
481
|
-
end
|
482
|
-
|
483
|
-
quick_gem "x", "1" do |s|
|
484
|
-
s.add_dependency "q", "= 1.0"
|
485
|
-
end
|
486
|
-
|
487
|
-
quick_gem "q", "1.0"
|
488
|
-
quick_gem "q", "1.1"
|
489
|
-
|
490
|
-
un = Gem::Uninstaller.new("q", :version => "1.0")
|
491
|
-
ui = Gem::MockGemUi.new("y\n")
|
492
|
-
|
493
|
-
use_ui ui do
|
494
|
-
un.uninstall
|
495
|
-
end
|
496
|
-
|
497
|
-
lines = ui.output.split("\n")
|
498
|
-
lines.shift
|
499
|
-
|
500
|
-
assert_match %r{You have requested to uninstall the gem:}, lines.shift
|
501
|
-
lines.shift
|
502
|
-
lines.shift
|
503
|
-
|
504
|
-
assert_match %r{x-1 depends on q \(= 1.0\)}, lines.shift
|
505
|
-
assert_match %r{Successfully uninstalled q-1.0}, lines.last
|
506
|
-
end
|
507
|
-
|
508
|
-
def test_uninstall_doesnt_prompt_when_other_gem_satisfies_requirement
|
509
|
-
quick_gem "r", "1" do |s|
|
510
|
-
s.add_dependency "q", "~> 1.0"
|
511
|
-
end
|
512
|
-
|
513
|
-
quick_gem "q", "1.0"
|
514
|
-
quick_gem "q", "1.1"
|
515
|
-
|
516
|
-
un = Gem::Uninstaller.new("q", :version => "1.0")
|
517
|
-
ui = Gem::MockGemUi.new("y\n")
|
518
|
-
|
519
|
-
use_ui ui do
|
520
|
-
un.uninstall
|
521
|
-
end
|
522
|
-
|
523
|
-
lines = ui.output.split("\n")
|
524
|
-
|
525
|
-
assert_equal "Successfully uninstalled q-1.0", lines.shift
|
526
|
-
end
|
527
|
-
|
528
|
-
def test_uninstall_doesnt_prompt_when_removing_a_dev_dep
|
529
|
-
quick_gem "r", "1" do |s|
|
530
|
-
s.add_development_dependency "q", "= 1.0"
|
531
|
-
end
|
532
|
-
|
533
|
-
quick_gem "q", "1.0"
|
534
|
-
|
535
|
-
un = Gem::Uninstaller.new("q", :version => "1.0")
|
536
|
-
ui = Gem::MockGemUi.new("y\n")
|
537
|
-
|
538
|
-
use_ui ui do
|
539
|
-
un.uninstall
|
540
|
-
end
|
541
|
-
|
542
|
-
lines = ui.output.split("\n")
|
543
|
-
|
544
|
-
assert_equal "Successfully uninstalled q-1.0", lines.shift
|
545
|
-
end
|
546
|
-
|
547
|
-
def test_uninstall_doesnt_prompt_and_raises_when_abort_on_dependent_set
|
548
|
-
quick_gem "r", "1" do |s|
|
549
|
-
s.add_dependency "q", "= 1"
|
550
|
-
end
|
551
|
-
|
552
|
-
quick_gem "q", "1"
|
553
|
-
|
554
|
-
un = Gem::Uninstaller.new("q", :abort_on_dependent => true)
|
555
|
-
ui = Gem::MockGemUi.new("y\n")
|
556
|
-
|
557
|
-
assert_raise Gem::DependencyRemovalException do
|
558
|
-
use_ui ui do
|
559
|
-
un.uninstall
|
560
|
-
end
|
561
|
-
end
|
562
|
-
end
|
563
|
-
|
564
|
-
def test_uninstall_prompt_includes_dep_type
|
565
|
-
quick_gem "r", "1" do |s|
|
566
|
-
s.add_development_dependency "q", "= 1"
|
567
|
-
end
|
568
|
-
|
569
|
-
quick_gem "q", "1"
|
570
|
-
|
571
|
-
un = Gem::Uninstaller.new("q", :check_dev => true)
|
572
|
-
ui = Gem::MockGemUi.new("y\n")
|
573
|
-
|
574
|
-
use_ui ui do
|
575
|
-
un.uninstall
|
576
|
-
end
|
577
|
-
|
578
|
-
lines = ui.output.split("\n")
|
579
|
-
lines.shift
|
580
|
-
|
581
|
-
assert_match %r{You have requested to uninstall the gem:}, lines.shift
|
582
|
-
lines.shift
|
583
|
-
lines.shift
|
584
|
-
|
585
|
-
assert_match %r{r-1 depends on q \(= 1, development\)}, lines.shift
|
586
|
-
assert_match %r{Successfully uninstalled q-1}, lines.last
|
587
|
-
end
|
588
|
-
|
589
|
-
def test_uninstall_prompt_only_lists_the_dependents_that_prevented_uninstallation
|
590
|
-
quick_gem "r", "1" do |s|
|
591
|
-
s.add_development_dependency "q", "= 1"
|
592
|
-
end
|
593
|
-
|
594
|
-
quick_gem "s", "1" do |s|
|
595
|
-
s.add_dependency "q", "= 1"
|
596
|
-
end
|
597
|
-
|
598
|
-
quick_gem "q", "1"
|
599
|
-
|
600
|
-
un = Gem::Uninstaller.new("q", :check_dev => false)
|
601
|
-
ui = Gem::MockGemUi.new("y\n")
|
602
|
-
|
603
|
-
use_ui ui do
|
604
|
-
un.uninstall
|
605
|
-
end
|
606
|
-
|
607
|
-
lines = ui.output.split("\n")
|
608
|
-
lines.shift
|
609
|
-
|
610
|
-
assert_match %r{You have requested to uninstall the gem:}, lines.shift
|
611
|
-
lines.shift
|
612
|
-
lines.shift
|
613
|
-
|
614
|
-
assert_match %r{s-1 depends on q \(= 1\)}, lines.shift
|
615
|
-
assert_match %r{Successfully uninstalled q-1}, lines.last
|
616
|
-
end
|
617
|
-
|
618
|
-
def test_uninstall_no_permission
|
619
|
-
uninstaller = Gem::Uninstaller.new @spec.name, :executables => true
|
620
|
-
|
621
|
-
stub_rm_r = lambda do |*args|
|
622
|
-
_path = args.shift
|
623
|
-
options = args.shift || Hash.new
|
624
|
-
# Uninstaller calls a method in RDoc which also calls FileUtils.rm_rf which
|
625
|
-
# is an alias for FileUtils#rm_r, so skip if we're using the force option
|
626
|
-
raise Errno::EPERM unless options[:force]
|
627
|
-
end
|
628
|
-
|
629
|
-
FileUtils.stub :rm_r, stub_rm_r do
|
630
|
-
assert_raise Gem::UninstallError do
|
631
|
-
uninstaller.uninstall
|
632
|
-
end
|
633
|
-
end
|
634
|
-
end
|
635
|
-
|
636
|
-
def test_uninstall_keeps_plugins_up_to_date
|
637
|
-
write_file File.join(@tempdir, "lib", "rubygems_plugin.rb") do |io|
|
638
|
-
io.write "# do nothing"
|
639
|
-
end
|
640
|
-
|
641
|
-
plugin_path = File.join Gem.plugindir, "a_plugin.rb"
|
642
|
-
|
643
|
-
@spec.version = "1"
|
644
|
-
Gem::Installer.at(Gem::Package.build(@spec), :force => true).install
|
645
|
-
|
646
|
-
refute File.exist?(plugin_path), "version without plugin installed, but plugin written"
|
647
|
-
|
648
|
-
@spec.files += %w[lib/rubygems_plugin.rb]
|
649
|
-
@spec.version = "2"
|
650
|
-
Gem::Installer.at(Gem::Package.build(@spec), :force => true).install
|
651
|
-
|
652
|
-
assert File.exist?(plugin_path), "version with plugin installed, but plugin not written"
|
653
|
-
assert_match %r{\Arequire.*a-2/lib/rubygems_plugin\.rb}, File.read(plugin_path), "written plugin has incorrect content"
|
654
|
-
|
655
|
-
@spec.version = "3"
|
656
|
-
Gem::Installer.at(Gem::Package.build(@spec), :force => true).install
|
657
|
-
|
658
|
-
assert File.exist?(plugin_path), "version with plugin installed, but plugin removed"
|
659
|
-
assert_match %r{\Arequire.*a-3/lib/rubygems_plugin\.rb}, File.read(plugin_path), "old version installed, but plugin updated"
|
660
|
-
|
661
|
-
Gem::Uninstaller.new("a", :version => "1", :executables => true).uninstall
|
662
|
-
|
663
|
-
assert File.exist?(plugin_path), "plugin removed when old version uninstalled"
|
664
|
-
assert_match %r{\Arequire.*a-3/lib/rubygems_plugin\.rb}, File.read(plugin_path), "old version uninstalled, but plugin updated"
|
665
|
-
|
666
|
-
Gem::Uninstaller.new("a", version: "3", :executables => true).uninstall
|
667
|
-
|
668
|
-
assert File.exist?(plugin_path), "plugin removed when old version uninstalled and another version with plugin still present"
|
669
|
-
assert_match %r{\Arequire.*a-2/lib/rubygems_plugin\.rb}, File.read(plugin_path), "latest version uninstalled, but plugin not updated to previous version"
|
670
|
-
|
671
|
-
Gem::Uninstaller.new("a", version: "2", :executables => true).uninstall
|
672
|
-
|
673
|
-
refute File.exist?(plugin_path), "last version uninstalled, but plugin still present"
|
674
|
-
end
|
675
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative "helper"
|
4
|
-
|
5
|
-
class TestGemUnsatisfiableDependencyError < Gem::TestCase
|
6
|
-
def setup
|
7
|
-
super
|
8
|
-
|
9
|
-
@a_dep = dep "a", "~> 1"
|
10
|
-
|
11
|
-
@req = Gem::Resolver::DependencyRequest.new @a_dep, nil
|
12
|
-
|
13
|
-
@e = Gem::UnsatisfiableDependencyError.new @req
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_errors
|
17
|
-
assert_equal [], @e.errors
|
18
|
-
|
19
|
-
@e.errors << :a
|
20
|
-
|
21
|
-
assert_equal [:a], @e.errors
|
22
|
-
end
|
23
|
-
|
24
|
-
def test_name
|
25
|
-
assert_equal "a", @e.name
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_version
|
29
|
-
assert_equal @a_dep.requirement, @e.version
|
30
|
-
end
|
31
|
-
end
|