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,23 +1,24 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
4
|
-
require
|
3
|
+
require_relative "helper"
|
4
|
+
require "rubygems/commands/setup_command"
|
5
5
|
|
6
6
|
class TestGemCommandsSetupCommand < Gem::TestCase
|
7
|
-
bundler_gemspec = File.expand_path(
|
7
|
+
bundler_gemspec = File.expand_path("../../bundler/lib/bundler/version.rb", __dir__)
|
8
8
|
if File.exist?(bundler_gemspec)
|
9
9
|
BUNDLER_VERS = File.read(bundler_gemspec).match(/VERSION = "(#{Gem::Version::VERSION_PATTERN})"/)[1]
|
10
10
|
else
|
11
|
-
BUNDLER_VERS = "2.0.1"
|
11
|
+
BUNDLER_VERS = "2.0.1"
|
12
12
|
end
|
13
13
|
|
14
14
|
def setup
|
15
15
|
super
|
16
16
|
|
17
17
|
@cmd = Gem::Commands::SetupCommand.new
|
18
|
+
@cmd.options[:document] = []
|
18
19
|
|
19
20
|
filelist = %w[
|
20
|
-
|
21
|
+
exe/gem
|
21
22
|
lib/rubygems.rb
|
22
23
|
lib/rubygems/requirement.rb
|
23
24
|
lib/rubygems/ssl_certs/rubygems.org/foo.pem
|
@@ -42,11 +43,11 @@ class TestGemCommandsSetupCommand < Gem::TestCase
|
|
42
43
|
gemspec.bindir = "exe"
|
43
44
|
gemspec.executables = ["bundle", "bundler"]
|
44
45
|
|
45
|
-
File.open
|
46
|
+
File.open "bundler/bundler.gemspec", "w" do |io|
|
46
47
|
io.puts gemspec.to_ruby
|
47
48
|
end
|
48
49
|
|
49
|
-
File.open(File.join(Gem.default_specifications_dir, "bundler-1.15.4.gemspec"),
|
50
|
+
File.open(File.join(Gem.default_specifications_dir, "bundler-1.15.4.gemspec"), "w") do |io|
|
50
51
|
gemspec.version = "1.15.4"
|
51
52
|
io.puts gemspec.to_ruby
|
52
53
|
end
|
@@ -54,31 +55,29 @@ class TestGemCommandsSetupCommand < Gem::TestCase
|
|
54
55
|
spec_fetcher do |fetcher|
|
55
56
|
fetcher.download "bundler", "1.15.4"
|
56
57
|
|
57
|
-
fetcher.gem "bundler",
|
58
|
+
fetcher.gem "bundler", bundler_version
|
58
59
|
|
59
60
|
fetcher.gem "bundler-audit", "1.0.0"
|
60
61
|
end
|
61
62
|
end
|
62
63
|
|
63
64
|
def test_execute_regenerate_binstubs
|
64
|
-
gem_bin_path = gem_install
|
65
|
+
gem_bin_path = gem_install "a"
|
65
66
|
write_file gem_bin_path do |io|
|
66
|
-
io.puts
|
67
|
+
io.puts "I changed it!"
|
67
68
|
end
|
68
69
|
|
69
|
-
@cmd.options[:document] = []
|
70
70
|
@cmd.execute
|
71
71
|
|
72
72
|
assert_match %r{\A#!}, File.read(gem_bin_path)
|
73
73
|
end
|
74
74
|
|
75
75
|
def test_execute_no_regenerate_binstubs
|
76
|
-
gem_bin_path = gem_install
|
76
|
+
gem_bin_path = gem_install "a"
|
77
77
|
write_file gem_bin_path do |io|
|
78
|
-
io.puts
|
78
|
+
io.puts "I changed it!"
|
79
79
|
end
|
80
80
|
|
81
|
-
@cmd.options[:document] = []
|
82
81
|
@cmd.options[:regenerate_binstubs] = false
|
83
82
|
@cmd.execute
|
84
83
|
|
@@ -86,24 +85,22 @@ class TestGemCommandsSetupCommand < Gem::TestCase
|
|
86
85
|
end
|
87
86
|
|
88
87
|
def test_execute_regenerate_plugins
|
89
|
-
gem_plugin_path = gem_install_with_plugin
|
88
|
+
gem_plugin_path = gem_install_with_plugin "a"
|
90
89
|
write_file gem_plugin_path do |io|
|
91
|
-
io.puts
|
90
|
+
io.puts "I changed it!"
|
92
91
|
end
|
93
92
|
|
94
|
-
@cmd.options[:document] = []
|
95
93
|
@cmd.execute
|
96
94
|
|
97
95
|
assert_match %r{\Arequire}, File.read(gem_plugin_path)
|
98
96
|
end
|
99
97
|
|
100
98
|
def test_execute_no_regenerate_plugins
|
101
|
-
gem_plugin_path = gem_install_with_plugin
|
99
|
+
gem_plugin_path = gem_install_with_plugin "a"
|
102
100
|
write_file gem_plugin_path do |io|
|
103
|
-
io.puts
|
101
|
+
io.puts "I changed it!"
|
104
102
|
end
|
105
103
|
|
106
|
-
@cmd.options[:document] = []
|
107
104
|
@cmd.options[:regenerate_plugins] = false
|
108
105
|
@cmd.execute
|
109
106
|
|
@@ -111,20 +108,17 @@ class TestGemCommandsSetupCommand < Gem::TestCase
|
|
111
108
|
end
|
112
109
|
|
113
110
|
def test_execute_regenerate_plugins_creates_plugins_dir_if_not_there
|
114
|
-
gem_plugin_path = gem_install_with_plugin
|
111
|
+
gem_plugin_path = gem_install_with_plugin "a"
|
115
112
|
|
116
113
|
# Simulate gem installed with an older rubygems without a plugins layout
|
117
114
|
FileUtils.rm_rf Gem.plugindir
|
118
115
|
|
119
|
-
@cmd.options[:document] = []
|
120
116
|
@cmd.execute
|
121
117
|
|
122
118
|
assert_match %r{\Arequire}, File.read(gem_plugin_path)
|
123
119
|
end
|
124
120
|
|
125
121
|
def test_execute_informs_about_installed_executables
|
126
|
-
@cmd.options[:document] = []
|
127
|
-
|
128
122
|
use_ui @ui do
|
129
123
|
@cmd.execute
|
130
124
|
end
|
@@ -138,16 +132,15 @@ class TestGemCommandsSetupCommand < Gem::TestCase
|
|
138
132
|
end
|
139
133
|
|
140
134
|
def test_env_shebang_flag
|
141
|
-
gem_bin_path = gem_install
|
135
|
+
gem_bin_path = gem_install "a"
|
142
136
|
write_file gem_bin_path do |io|
|
143
|
-
io.puts
|
137
|
+
io.puts "I changed it!"
|
144
138
|
end
|
145
139
|
|
146
|
-
@cmd.options[:document] = []
|
147
140
|
@cmd.options[:env_shebang] = true
|
148
141
|
@cmd.execute
|
149
142
|
|
150
|
-
ruby_exec = sprintf Gem.default_exec_format,
|
143
|
+
ruby_exec = sprintf Gem.default_exec_format, "ruby"
|
151
144
|
|
152
145
|
bin_env = win_platform? ? "" : %w[/usr/bin/env /bin/env].find {|f| File.executable?(f) } + " "
|
153
146
|
assert_match %r{\A#!\s*#{bin_env}#{ruby_exec}}, File.read(default_gem_bin_path)
|
@@ -159,47 +152,44 @@ class TestGemCommandsSetupCommand < Gem::TestCase
|
|
159
152
|
def test_destdir_flag_does_not_try_to_write_to_the_default_gem_home
|
160
153
|
FileUtils.chmod "-w", File.join(@gemhome, "plugins")
|
161
154
|
|
162
|
-
destdir = File.join(@tempdir,
|
155
|
+
destdir = File.join(@tempdir, "foo")
|
163
156
|
|
164
157
|
@cmd.options[:destdir] = destdir
|
165
158
|
@cmd.execute
|
166
159
|
|
167
|
-
|
168
|
-
|
169
|
-
spec.executables.each do |e|
|
170
|
-
assert_path_exist File.join destdir, @gemhome.gsub(/^[a-zA-Z]:/, ''), 'gems', spec.full_name, spec.bindir, e
|
160
|
+
bundler_spec.executables.each do |e|
|
161
|
+
assert_path_exist prepend_destdir(destdir, File.join(@gemhome, "gems", bundler_spec.full_name, bundler_spec.bindir, e))
|
171
162
|
end
|
172
163
|
end
|
173
164
|
|
174
165
|
def test_files_in
|
175
166
|
assert_equal %w[rubygems.rb rubygems/requirement.rb rubygems/ssl_certs/rubygems.org/foo.pem],
|
176
|
-
@cmd.files_in(
|
167
|
+
@cmd.files_in("lib").sort
|
177
168
|
end
|
178
169
|
|
179
170
|
def test_install_lib
|
180
171
|
@cmd.extend FileUtils
|
181
172
|
|
182
|
-
Dir.mktmpdir
|
173
|
+
Dir.mktmpdir "lib" do |dir|
|
183
174
|
@cmd.install_lib dir
|
184
175
|
|
185
|
-
assert_path_exist File.join(dir,
|
186
|
-
assert_path_exist File.join(dir,
|
176
|
+
assert_path_exist File.join(dir, "rubygems.rb")
|
177
|
+
assert_path_exist File.join(dir, "rubygems/ssl_certs/rubygems.org/foo.pem")
|
187
178
|
|
188
|
-
assert_path_exist File.join(dir,
|
189
|
-
assert_path_exist File.join(dir,
|
179
|
+
assert_path_exist File.join(dir, "bundler.rb")
|
180
|
+
assert_path_exist File.join(dir, "bundler/b.rb")
|
190
181
|
|
191
|
-
assert_path_exist File.join(dir,
|
192
|
-
assert_path_exist File.join(dir,
|
182
|
+
assert_path_exist File.join(dir, "bundler/templates/.circleci/config.yml")
|
183
|
+
assert_path_exist File.join(dir, "bundler/templates/.travis.yml")
|
193
184
|
end
|
194
185
|
end
|
195
186
|
|
196
187
|
def test_install_default_bundler_gem
|
197
188
|
@cmd.extend FileUtils
|
198
189
|
|
199
|
-
bin_dir = File.join(@gemhome,
|
190
|
+
bin_dir = File.join(@gemhome, "bin")
|
200
191
|
@cmd.install_default_bundler_gem bin_dir
|
201
192
|
|
202
|
-
bundler_spec = Gem::Specification.load("bundler/bundler.gemspec")
|
203
193
|
default_spec_path = File.join(Gem.default_specifications_dir, "#{bundler_spec.full_name}.gemspec")
|
204
194
|
spec = Gem::Specification.load(default_spec_path)
|
205
195
|
|
@@ -211,32 +201,46 @@ class TestGemCommandsSetupCommand < Gem::TestCase
|
|
211
201
|
assert_path_exist File.join bin_dir, e
|
212
202
|
end
|
213
203
|
|
214
|
-
default_dir = Gem.default_specifications_dir
|
215
|
-
|
216
204
|
# expect to remove other versions of bundler gemspecs on default specification directory.
|
217
|
-
assert_path_not_exist
|
218
|
-
assert_path_exist
|
205
|
+
assert_path_not_exist previous_bundler_specification_path
|
206
|
+
assert_path_exist new_bundler_specification_path
|
219
207
|
|
220
208
|
# expect to not remove bundler-* gemspecs.
|
221
209
|
assert_path_exist File.join(Gem.dir, "specifications", "bundler-audit-1.0.0.gemspec")
|
222
210
|
|
223
211
|
# expect to remove normal gem that was same version. because it's promoted default gems.
|
224
|
-
assert_path_not_exist File.join(Gem.dir, "specifications", "bundler-#{
|
212
|
+
assert_path_not_exist File.join(Gem.dir, "specifications", "bundler-#{bundler_version}.gemspec")
|
225
213
|
|
226
|
-
assert_path_exist "#{Gem.dir}/gems/bundler-#{
|
214
|
+
assert_path_exist "#{Gem.dir}/gems/bundler-#{bundler_version}"
|
227
215
|
assert_path_exist "#{Gem.dir}/gems/bundler-1.15.4"
|
228
216
|
assert_path_exist "#{Gem.dir}/gems/bundler-audit-1.0.0"
|
229
217
|
end
|
230
218
|
|
219
|
+
def test_install_default_bundler_gem_with_default_gems_not_installed_at_default_dir
|
220
|
+
@cmd.extend FileUtils
|
221
|
+
|
222
|
+
gemhome2 = File.join(@tempdir, "gemhome2")
|
223
|
+
Gem.instance_variable_set(:@default_dir, gemhome2)
|
224
|
+
|
225
|
+
FileUtils.mkdir_p gemhome2
|
226
|
+
bin_dir = File.join(gemhome2, "bin")
|
227
|
+
|
228
|
+
@cmd.install_default_bundler_gem bin_dir
|
229
|
+
|
230
|
+
# expect to remove other versions of bundler gemspecs on default specification directory.
|
231
|
+
assert_path_not_exist previous_bundler_specification_path
|
232
|
+
assert_path_exist new_bundler_specification_path
|
233
|
+
end
|
234
|
+
|
231
235
|
def test_install_default_bundler_gem_with_force_flag
|
232
236
|
@cmd.extend FileUtils
|
233
237
|
|
234
|
-
bin_dir = File.join(@gemhome,
|
235
|
-
bundle_bin = File.join(bin_dir,
|
238
|
+
bin_dir = File.join(@gemhome, "bin")
|
239
|
+
bundle_bin = File.join(bin_dir, "bundle")
|
236
240
|
|
237
241
|
write_file bundle_bin do |f|
|
238
|
-
f.puts
|
239
|
-
f.puts
|
242
|
+
f.puts "#!/usr/bin/ruby"
|
243
|
+
f.puts ""
|
240
244
|
f.puts 'echo "hello"'
|
241
245
|
end
|
242
246
|
|
@@ -244,7 +248,6 @@ class TestGemCommandsSetupCommand < Gem::TestCase
|
|
244
248
|
|
245
249
|
@cmd.install_default_bundler_gem bin_dir
|
246
250
|
|
247
|
-
bundler_spec = Gem::Specification.load("bundler/bundler.gemspec")
|
248
251
|
default_spec_path = File.join(Gem.default_specifications_dir, "#{bundler_spec.full_name}.gemspec")
|
249
252
|
spec = Gem::Specification.load(default_spec_path)
|
250
253
|
|
@@ -262,17 +265,23 @@ class TestGemCommandsSetupCommand < Gem::TestCase
|
|
262
265
|
|
263
266
|
FileUtils.chmod "-w", @gemhome
|
264
267
|
|
265
|
-
destdir = File.join(@tempdir,
|
266
|
-
bin_dir = File.join(destdir,
|
268
|
+
destdir = File.join(@tempdir, "foo")
|
269
|
+
bin_dir = File.join(destdir, "bin")
|
267
270
|
|
268
271
|
@cmd.options[:destdir] = destdir
|
269
272
|
|
270
273
|
@cmd.install_default_bundler_gem bin_dir
|
271
274
|
|
272
|
-
|
275
|
+
# leaves other versions of bundler gemspecs on default specification directory.
|
276
|
+
assert_path_exist previous_bundler_specification_path
|
277
|
+
assert_path_not_exist new_bundler_specification_path
|
273
278
|
|
274
|
-
|
275
|
-
|
279
|
+
# installs the updated bundler gemspec to destdir
|
280
|
+
assert_path_not_exist prepend_destdir(destdir, previous_bundler_specification_path)
|
281
|
+
assert_path_exist prepend_destdir(destdir, new_bundler_specification_path)
|
282
|
+
|
283
|
+
bundler_spec.executables.each do |e|
|
284
|
+
assert_path_exist prepend_destdir(destdir, File.join(@gemhome, "gems", bundler_spec.full_name, bundler_spec.bindir, e))
|
276
285
|
end
|
277
286
|
ensure
|
278
287
|
FileUtils.chmod "+w", @gemhome
|
@@ -281,39 +290,37 @@ class TestGemCommandsSetupCommand < Gem::TestCase
|
|
281
290
|
def test_install_default_bundler_gem_with_destdir_and_prefix_flags
|
282
291
|
@cmd.extend FileUtils
|
283
292
|
|
284
|
-
destdir = File.join(@tempdir,
|
285
|
-
bin_dir = File.join(destdir,
|
293
|
+
destdir = File.join(@tempdir, "foo")
|
294
|
+
bin_dir = File.join(destdir, "bin")
|
286
295
|
|
287
296
|
@cmd.options[:destdir] = destdir
|
288
297
|
@cmd.options[:prefix] = "/"
|
289
298
|
|
290
299
|
@cmd.install_default_bundler_gem bin_dir
|
291
300
|
|
292
|
-
|
293
|
-
|
294
|
-
spec.executables.each do |e|
|
295
|
-
assert_path_exist File.join destdir, 'gems', spec.full_name, spec.bindir, e
|
301
|
+
bundler_spec.executables.each do |e|
|
302
|
+
assert_path_exist File.join destdir, "gems", bundler_spec.full_name, bundler_spec.bindir, e
|
296
303
|
end
|
297
304
|
end
|
298
305
|
|
299
306
|
def test_remove_old_lib_files
|
300
307
|
lib = RbConfig::CONFIG["sitelibdir"]
|
301
|
-
lib_rubygems = File.join lib,
|
302
|
-
lib_bundler = File.join lib,
|
303
|
-
lib_rubygems_defaults = File.join lib_rubygems,
|
304
|
-
lib_bundler_templates = File.join lib_bundler,
|
308
|
+
lib_rubygems = File.join lib, "rubygems"
|
309
|
+
lib_bundler = File.join lib, "bundler"
|
310
|
+
lib_rubygems_defaults = File.join lib_rubygems, "defaults"
|
311
|
+
lib_bundler_templates = File.join lib_bundler, "templates"
|
305
312
|
|
306
|
-
securerandom_rb = File.join lib,
|
313
|
+
securerandom_rb = File.join lib, "securerandom.rb"
|
307
314
|
|
308
|
-
engine_defaults_rb = File.join lib_rubygems_defaults,
|
309
|
-
os_defaults_rb = File.join lib_rubygems_defaults,
|
315
|
+
engine_defaults_rb = File.join lib_rubygems_defaults, "jruby.rb"
|
316
|
+
os_defaults_rb = File.join lib_rubygems_defaults, "operating_system.rb"
|
310
317
|
|
311
|
-
old_gauntlet_rubygems_rb = File.join lib,
|
318
|
+
old_gauntlet_rubygems_rb = File.join lib, "gauntlet_rubygems.rb"
|
312
319
|
|
313
|
-
old_builder_rb = File.join lib_rubygems,
|
314
|
-
old_format_rb = File.join lib_rubygems,
|
315
|
-
old_bundler_c_rb = File.join lib_bundler,
|
316
|
-
old_bundler_ci = File.join lib_bundler_templates,
|
320
|
+
old_builder_rb = File.join lib_rubygems, "builder.rb"
|
321
|
+
old_format_rb = File.join lib_rubygems, "format.rb"
|
322
|
+
old_bundler_c_rb = File.join lib_bundler, "c.rb"
|
323
|
+
old_bundler_ci = File.join lib_bundler_templates, ".lecacy_ci", "config.yml"
|
317
324
|
|
318
325
|
files_that_go = [old_gauntlet_rubygems_rb, old_builder_rb, old_format_rb, old_bundler_c_rb, old_bundler_ci]
|
319
326
|
files_that_stay = [securerandom_rb, engine_defaults_rb, os_defaults_rb]
|
@@ -328,15 +335,15 @@ class TestGemCommandsSetupCommand < Gem::TestCase
|
|
328
335
|
end
|
329
336
|
|
330
337
|
def test_remove_old_man_files
|
331
|
-
man = File.join RbConfig::CONFIG[
|
338
|
+
man = File.join RbConfig::CONFIG["mandir"], "man"
|
332
339
|
|
333
|
-
ruby_1 = File.join man,
|
334
|
-
bundle_b_1 = File.join man,
|
335
|
-
bundle_b_1_ronn = File.join man,
|
336
|
-
bundle_b_1_txt = File.join man,
|
337
|
-
gemfile_5 = File.join man,
|
338
|
-
gemfile_5_ronn = File.join man,
|
339
|
-
gemfile_5_txt = File.join man,
|
340
|
+
ruby_1 = File.join man, "man1", "ruby.1"
|
341
|
+
bundle_b_1 = File.join man, "man1", "bundle-b.1"
|
342
|
+
bundle_b_1_ronn = File.join man, "man1", "bundle-b.1.ronn"
|
343
|
+
bundle_b_1_txt = File.join man, "man1", "bundle-b.1.txt"
|
344
|
+
gemfile_5 = File.join man, "man5", "gemfile.5"
|
345
|
+
gemfile_5_ronn = File.join man, "man5", "gemfile.5.ronn"
|
346
|
+
gemfile_5_txt = File.join man, "man5", "gemfile.5.txt"
|
340
347
|
|
341
348
|
files_that_go = [bundle_b_1, bundle_b_1_txt, bundle_b_1_ronn, gemfile_5, gemfile_5_txt, gemfile_5_ronn]
|
342
349
|
files_that_stay = [ruby_1]
|
@@ -354,9 +361,9 @@ class TestGemCommandsSetupCommand < Gem::TestCase
|
|
354
361
|
@default_external = @ui.outs.external_encoding
|
355
362
|
@ui.outs.set_encoding Encoding::US_ASCII
|
356
363
|
|
357
|
-
@cmd.options[:previous_version] = Gem::Version.new
|
364
|
+
@cmd.options[:previous_version] = Gem::Version.new "2.0.2"
|
358
365
|
|
359
|
-
File.open
|
366
|
+
File.open "CHANGELOG.md", "w" do |io|
|
360
367
|
io.puts <<-HISTORY_TXT
|
361
368
|
# #{Gem::VERSION} / 2013-03-26
|
362
369
|
|
@@ -403,7 +410,7 @@ class TestGemCommandsSetupCommand < Gem::TestCase
|
|
403
410
|
list.each do |file|
|
404
411
|
FileUtils.mkdir_p File.dirname(file)
|
405
412
|
|
406
|
-
File.open file,
|
413
|
+
File.open file, "w" do |io|
|
407
414
|
io.puts "# #{File.basename(file)}"
|
408
415
|
end
|
409
416
|
end
|
@@ -414,19 +421,19 @@ class TestGemCommandsSetupCommand < Gem::TestCase
|
|
414
421
|
s.executables = [name]
|
415
422
|
s.files = %W[bin/#{name}]
|
416
423
|
end
|
417
|
-
write_file File.join @tempdir,
|
418
|
-
f.puts
|
424
|
+
write_file File.join @tempdir, "bin", name do |f|
|
425
|
+
f.puts "#!/usr/bin/ruby"
|
419
426
|
end
|
420
427
|
install_gem gem
|
421
|
-
File.join @gemhome,
|
428
|
+
File.join @gemhome, "bin", name
|
422
429
|
end
|
423
430
|
|
424
431
|
def gem_install_with_plugin(name)
|
425
432
|
gem = util_spec name do |s|
|
426
433
|
s.files = %W[lib/rubygems_plugin.rb]
|
427
434
|
end
|
428
|
-
write_file File.join @tempdir,
|
429
|
-
f.puts "
|
435
|
+
write_file File.join @tempdir, "lib", "rubygems_plugin.rb" do |f|
|
436
|
+
f.puts "# do nothing"
|
430
437
|
end
|
431
438
|
install_gem gem
|
432
439
|
|
@@ -434,14 +441,34 @@ class TestGemCommandsSetupCommand < Gem::TestCase
|
|
434
441
|
end
|
435
442
|
|
436
443
|
def default_gem_bin_path
|
437
|
-
File.join RbConfig::CONFIG[
|
444
|
+
File.join RbConfig::CONFIG["bindir"], "gem"
|
438
445
|
end
|
439
446
|
|
440
447
|
def default_bundle_bin_path
|
441
|
-
File.join RbConfig::CONFIG[
|
448
|
+
File.join RbConfig::CONFIG["bindir"], "bundle"
|
442
449
|
end
|
443
450
|
|
444
451
|
def default_bundler_bin_path
|
445
|
-
File.join RbConfig::CONFIG[
|
452
|
+
File.join RbConfig::CONFIG["bindir"], "bundler"
|
453
|
+
end
|
454
|
+
|
455
|
+
def previous_bundler_specification_path
|
456
|
+
File.join(Gem.default_specifications_dir, "bundler-1.15.4.gemspec")
|
457
|
+
end
|
458
|
+
|
459
|
+
def new_bundler_specification_path
|
460
|
+
File.join(Gem.default_specifications_dir, "bundler-#{bundler_version}.gemspec")
|
461
|
+
end
|
462
|
+
|
463
|
+
def bundler_spec
|
464
|
+
Gem::Specification.load("bundler/bundler.gemspec")
|
465
|
+
end
|
466
|
+
|
467
|
+
def bundler_version
|
468
|
+
bundler_spec.version
|
469
|
+
end
|
470
|
+
|
471
|
+
def prepend_destdir(destdir, path)
|
472
|
+
File.join(destdir, path.gsub(/^[a-zA-Z]:/, ""))
|
446
473
|
end
|
447
474
|
end unless Gem.java_platform?
|
@@ -1,7 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
3
|
-
|
4
|
-
require
|
2
|
+
|
3
|
+
require_relative "helper"
|
4
|
+
require "rubygems/commands/signin_command"
|
5
|
+
require "rubygems/installer"
|
5
6
|
|
6
7
|
class TestGemCommandsSigninCommand < Gem::TestCase
|
7
8
|
def setup
|
@@ -34,7 +35,7 @@ class TestGemCommandsSigninCommand < Gem::TestCase
|
|
34
35
|
end
|
35
36
|
|
36
37
|
def test_execute_when_already_signed_in_with_same_host
|
37
|
-
host =
|
38
|
+
host = "http://some-gemcutter-compatible-host.org"
|
38
39
|
|
39
40
|
util_capture(nil, host) { @cmd.execute }
|
40
41
|
old_credentials = load_yaml_file Gem.configuration.credentials_path
|
@@ -46,10 +47,10 @@ class TestGemCommandsSigninCommand < Gem::TestCase
|
|
46
47
|
end
|
47
48
|
|
48
49
|
def test_execute_when_already_signed_in_with_different_host
|
49
|
-
api_key =
|
50
|
+
api_key = "a5fdbb6ba150cbb83aad2bb2fede64cf04045xxxx"
|
50
51
|
|
51
52
|
util_capture(nil, nil, api_key) { @cmd.execute }
|
52
|
-
host =
|
53
|
+
host = "http://some-gemcutter-compatible-host.org"
|
53
54
|
|
54
55
|
util_capture(nil, host, api_key) { @cmd.execute }
|
55
56
|
credentials = load_yaml_file Gem.configuration.credentials_path
|
@@ -60,30 +61,55 @@ class TestGemCommandsSigninCommand < Gem::TestCase
|
|
60
61
|
end
|
61
62
|
|
62
63
|
def test_execute_with_host_supplied
|
63
|
-
host =
|
64
|
+
host = "http://some-gemcutter-compatible-host.org"
|
64
65
|
|
65
66
|
sign_in_ui = util_capture(nil, host) { @cmd.execute }
|
66
67
|
assert_match %r{Enter your #{host} credentials.}, sign_in_ui.output
|
67
68
|
assert_match %r{Signed in.}, sign_in_ui.output
|
68
69
|
|
69
|
-
api_key =
|
70
|
+
api_key = "a5fdbb6ba150cbb83aad2bb2fede64cf040453903"
|
70
71
|
credentials = load_yaml_file Gem.configuration.credentials_path
|
71
72
|
assert_equal api_key, credentials[host]
|
72
73
|
end
|
73
74
|
|
75
|
+
def test_execute_with_host_permanent_redirect
|
76
|
+
host = "http://rubygems.example/"
|
77
|
+
ENV["RUBYGEMS_HOST"] = host
|
78
|
+
path = "/api/v1/api_key"
|
79
|
+
redirected_uri = "http://rubygems.example#{path}"
|
80
|
+
fetcher = Gem::FakeFetcher.new
|
81
|
+
fetcher.data["#{host}#{path}"] = HTTPResponseFactory.create(
|
82
|
+
body: "",
|
83
|
+
code: "308",
|
84
|
+
msg: "Permanent Redirect",
|
85
|
+
headers: { "location" => redirected_uri }
|
86
|
+
)
|
87
|
+
Gem::RemoteFetcher.fetcher = fetcher
|
88
|
+
ui = Gem::MockGemUi.new("you@example.com\nsecret\n\n\n\n\n\n\n\n\n")
|
89
|
+
|
90
|
+
assert_raise Gem::MockGemUi::TermError do
|
91
|
+
use_ui ui do
|
92
|
+
@cmd.execute
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
response = "The request has redirected permanently to #{redirected_uri}. Please check your defined push host URL."
|
97
|
+
assert_match response, ui.output
|
98
|
+
end
|
99
|
+
|
74
100
|
def test_execute_with_valid_creds_set_for_default_host
|
75
101
|
util_capture { @cmd.execute }
|
76
102
|
|
77
|
-
api_key =
|
103
|
+
api_key = "a5fdbb6ba150cbb83aad2bb2fede64cf040453903"
|
78
104
|
credentials = load_yaml_file Gem.configuration.credentials_path
|
79
105
|
|
80
106
|
assert_equal api_key, credentials[:rubygems_api_key]
|
81
107
|
end
|
82
108
|
|
83
109
|
def test_execute_with_key_name_and_scope
|
84
|
-
email =
|
85
|
-
password =
|
86
|
-
api_key =
|
110
|
+
email = "you@example.com"
|
111
|
+
password = "secret"
|
112
|
+
api_key = "1234"
|
87
113
|
fetcher = Gem::RemoteFetcher.fetcher
|
88
114
|
|
89
115
|
key_name_ui = Gem::MockGemUi.new "#{email}\n#{password}\ntest-key\n\ny\n\n\n\n\n\n"
|
@@ -106,9 +132,9 @@ class TestGemCommandsSigninCommand < Gem::TestCase
|
|
106
132
|
end
|
107
133
|
|
108
134
|
def test_execute_with_key_name_scope_and_mfa_level_of_ui_only
|
109
|
-
email =
|
110
|
-
password =
|
111
|
-
api_key =
|
135
|
+
email = "you@example.com"
|
136
|
+
password = "secret"
|
137
|
+
api_key = "1234"
|
112
138
|
fetcher = Gem::RemoteFetcher.fetcher
|
113
139
|
mfa_level = "ui_only"
|
114
140
|
|
@@ -133,9 +159,9 @@ class TestGemCommandsSigninCommand < Gem::TestCase
|
|
133
159
|
end
|
134
160
|
|
135
161
|
def test_execute_with_key_name_scope_and_mfa_level_of_gem_signin
|
136
|
-
email =
|
137
|
-
password =
|
138
|
-
api_key =
|
162
|
+
email = "you@example.com"
|
163
|
+
password = "secret"
|
164
|
+
api_key = "1234"
|
139
165
|
fetcher = Gem::RemoteFetcher.fetcher
|
140
166
|
mfa_level = "ui_and_gem_signin"
|
141
167
|
|
@@ -159,20 +185,34 @@ class TestGemCommandsSigninCommand < Gem::TestCase
|
|
159
185
|
assert_equal api_key, credentials[:rubygems_api_key]
|
160
186
|
end
|
161
187
|
|
188
|
+
def test_execute_with_warnings
|
189
|
+
email = "you@example.com"
|
190
|
+
password = "secret"
|
191
|
+
api_key = "1234"
|
192
|
+
fetcher = Gem::RemoteFetcher.fetcher
|
193
|
+
mfa_level = "disabled"
|
194
|
+
warning = "/[WARNING/] For protection of your account and gems"
|
195
|
+
|
196
|
+
key_name_ui = Gem::MockGemUi.new "#{email}\n#{password}\ntest-key\n\ny\n\n\n\n\n\ny"
|
197
|
+
util_capture(key_name_ui, nil, api_key, fetcher, mfa_level, warning) { @cmd.execute }
|
198
|
+
|
199
|
+
assert_match warning, key_name_ui.output
|
200
|
+
end
|
201
|
+
|
162
202
|
def test_execute_on_gemserver_without_profile_me_endpoint
|
163
|
-
host =
|
203
|
+
host = "http://some-gemcutter-compatible-host.org"
|
164
204
|
|
165
|
-
email =
|
166
|
-
password =
|
167
|
-
api_key =
|
205
|
+
email = "you@example.com"
|
206
|
+
password = "secret"
|
207
|
+
api_key = "1234"
|
168
208
|
fetcher = Gem::RemoteFetcher.fetcher
|
169
209
|
|
170
210
|
key_name_ui = Gem::MockGemUi.new "#{email}\n#{password}\ntest-key\n\ny\n\n\n\n\n\ny"
|
171
211
|
|
172
212
|
# Set the expected response for the Web-API supplied
|
173
|
-
ENV[
|
213
|
+
ENV["RUBYGEMS_HOST"] = host
|
174
214
|
data_key = "#{ENV['RUBYGEMS_HOST']}/api/v1/api_key"
|
175
|
-
fetcher.data[data_key] =
|
215
|
+
fetcher.data[data_key] = HTTPResponseFactory.create(body: api_key, code: 200, msg: "OK")
|
176
216
|
|
177
217
|
use_ui key_name_ui do
|
178
218
|
@cmd.execute
|
@@ -193,15 +233,15 @@ class TestGemCommandsSigninCommand < Gem::TestCase
|
|
193
233
|
|
194
234
|
# Utility method to capture IO/UI within the block passed
|
195
235
|
|
196
|
-
def util_capture(ui_stub = nil, host = nil, api_key = nil, fetcher = Gem::FakeFetcher.new, mfa_level = "disabled")
|
197
|
-
api_key ||=
|
198
|
-
response =
|
199
|
-
profile_response =
|
200
|
-
email =
|
201
|
-
password =
|
236
|
+
def util_capture(ui_stub = nil, host = nil, api_key = nil, fetcher = Gem::FakeFetcher.new, mfa_level = "disabled", warning = nil)
|
237
|
+
api_key ||= "a5fdbb6ba150cbb83aad2bb2fede64cf040453903"
|
238
|
+
response = HTTPResponseFactory.create(body: api_key, code: 200, msg: "OK")
|
239
|
+
profile_response = HTTPResponseFactory.create(body: "mfa: #{mfa_level}\nwarning: #{warning}", code: 200, msg: "OK")
|
240
|
+
email = "you@example.com"
|
241
|
+
password = "secret"
|
202
242
|
|
203
243
|
# Set the expected response for the Web-API supplied
|
204
|
-
ENV[
|
244
|
+
ENV["RUBYGEMS_HOST"] = host || Gem::DEFAULT_HOST
|
205
245
|
data_key = "#{ENV['RUBYGEMS_HOST']}/api/v1/api_key"
|
206
246
|
fetcher.data[data_key] = response
|
207
247
|
profile = "#{ENV['RUBYGEMS_HOST']}/api/v1/profile/me.yaml"
|
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
4
|
-
require
|
5
|
-
require
|
3
|
+
require_relative "helper"
|
4
|
+
require "rubygems/commands/signout_command"
|
5
|
+
require "rubygems/installer"
|
6
6
|
|
7
7
|
class TestGemCommandsSignoutCommand < Gem::TestCase
|
8
8
|
def setup
|