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,28 +1,29 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
3
|
-
|
2
|
+
|
3
|
+
require_relative "helper"
|
4
|
+
require "rubygems/commands/cert_command"
|
4
5
|
|
5
6
|
unless Gem::HAVE_OPENSSL
|
6
|
-
warn
|
7
|
+
warn "Skipping `gem cert` tests. openssl not found."
|
7
8
|
end
|
8
9
|
|
9
10
|
if Gem.java_platform?
|
10
|
-
warn
|
11
|
+
warn "Skipping `gem cert` tests on jruby."
|
11
12
|
end
|
12
13
|
|
13
14
|
class TestGemCommandsCertCommand < Gem::TestCase
|
14
|
-
ALTERNATE_CERT = load_cert
|
15
|
-
EXPIRED_PUBLIC_CERT = load_cert
|
15
|
+
ALTERNATE_CERT = load_cert "alternate"
|
16
|
+
EXPIRED_PUBLIC_CERT = load_cert "expired"
|
16
17
|
|
17
|
-
ALTERNATE_KEY_FILE = key_path
|
18
|
-
PRIVATE_KEY_FILE = key_path
|
19
|
-
PRIVATE_EC_KEY_FILE = key_path
|
20
|
-
PUBLIC_KEY_FILE = key_path
|
18
|
+
ALTERNATE_KEY_FILE = key_path "alternate"
|
19
|
+
PRIVATE_KEY_FILE = key_path "private"
|
20
|
+
PRIVATE_EC_KEY_FILE = key_path "private_ec"
|
21
|
+
PUBLIC_KEY_FILE = key_path "public"
|
21
22
|
|
22
|
-
ALTERNATE_CERT_FILE = cert_path
|
23
|
-
CHILD_CERT_FILE = cert_path
|
24
|
-
PUBLIC_CERT_FILE = cert_path
|
25
|
-
EXPIRED_PUBLIC_CERT_FILE = cert_path
|
23
|
+
ALTERNATE_CERT_FILE = cert_path "alternate"
|
24
|
+
CHILD_CERT_FILE = cert_path "child"
|
25
|
+
PUBLIC_CERT_FILE = cert_path "public"
|
26
|
+
EXPIRED_PUBLIC_CERT_FILE = cert_path "expired"
|
26
27
|
|
27
28
|
def setup
|
28
29
|
super
|
@@ -44,7 +45,7 @@ class TestGemCommandsCertCommand < Gem::TestCase
|
|
44
45
|
@trust_dir.trust_cert PUBLIC_CERT
|
45
46
|
@trust_dir.trust_cert ALTERNATE_CERT
|
46
47
|
|
47
|
-
matches = @cmd.certificates_matching
|
48
|
+
matches = @cmd.certificates_matching ""
|
48
49
|
|
49
50
|
# HACK OpenSSL::X509::Certificate#== is Object#==, so do this the hard way
|
50
51
|
match = matches.next
|
@@ -64,7 +65,7 @@ class TestGemCommandsCertCommand < Gem::TestCase
|
|
64
65
|
@trust_dir.trust_cert PUBLIC_CERT
|
65
66
|
@trust_dir.trust_cert ALTERNATE_CERT
|
66
67
|
|
67
|
-
matches = @cmd.certificates_matching
|
68
|
+
matches = @cmd.certificates_matching "alternate"
|
68
69
|
|
69
70
|
match = matches.next
|
70
71
|
assert_equal ALTERNATE_CERT.to_pem, match.first.to_pem
|
@@ -91,7 +92,7 @@ class TestGemCommandsCertCommand < Gem::TestCase
|
|
91
92
|
end
|
92
93
|
|
93
94
|
def test_execute_add_twice
|
94
|
-
self.class.cert_path
|
95
|
+
self.class.cert_path "alternate"
|
95
96
|
|
96
97
|
@cmd.handle_options %W[
|
97
98
|
--add #{PUBLIC_CERT_FILE}
|
@@ -112,7 +113,7 @@ Added '/CN=alternate/DC=example'
|
|
112
113
|
end
|
113
114
|
|
114
115
|
def test_execute_build
|
115
|
-
passphrase =
|
116
|
+
passphrase = "Foo bar"
|
116
117
|
|
117
118
|
@cmd.handle_options %W[--build nobody@example.com]
|
118
119
|
|
@@ -139,12 +140,12 @@ Added '/CN=alternate/DC=example'
|
|
139
140
|
assert_empty output
|
140
141
|
assert_empty @build_ui.error
|
141
142
|
|
142
|
-
assert_path_exist File.join(@tempdir,
|
143
|
-
assert_path_exist File.join(@tempdir,
|
143
|
+
assert_path_exist File.join(@tempdir, "gem-private_key.pem")
|
144
|
+
assert_path_exist File.join(@tempdir, "gem-public_cert.pem")
|
144
145
|
end
|
145
146
|
|
146
147
|
def test_execute_build_key_algorithm_ec_key
|
147
|
-
passphrase =
|
148
|
+
passphrase = "Foo bar"
|
148
149
|
|
149
150
|
@cmd.handle_options %W[--build nobody@example.com --key-algorithm ec]
|
150
151
|
|
@@ -171,16 +172,16 @@ Added '/CN=alternate/DC=example'
|
|
171
172
|
assert_empty output
|
172
173
|
assert_empty @build_ui.error
|
173
174
|
|
174
|
-
assert_path_exist File.join(@tempdir,
|
175
|
+
assert_path_exist File.join(@tempdir, "gem-private_key.pem")
|
175
176
|
|
176
|
-
cert_path = File.join(@tempdir,
|
177
|
+
cert_path = File.join(@tempdir, "gem-public_cert.pem")
|
177
178
|
assert_path_exist cert_path
|
178
179
|
cert = OpenSSL::X509::Certificate.new(File.read(cert_path))
|
179
180
|
assert cert.public_key.is_a? OpenSSL::PKey::EC
|
180
181
|
end
|
181
182
|
|
182
183
|
def test_execute_build_bad_email_address
|
183
|
-
passphrase =
|
184
|
+
passphrase = "Foo bar"
|
184
185
|
email = "nobody@"
|
185
186
|
|
186
187
|
@cmd.handle_options %W[--build #{email}]
|
@@ -188,7 +189,6 @@ Added '/CN=alternate/DC=example'
|
|
188
189
|
@build_ui = Gem::MockGemUi.new "#{passphrase}\n#{passphrase}"
|
189
190
|
|
190
191
|
use_ui @build_ui do
|
191
|
-
|
192
192
|
e = assert_raise Gem::CommandLineError do
|
193
193
|
@cmd.execute
|
194
194
|
end
|
@@ -196,13 +196,13 @@ Added '/CN=alternate/DC=example'
|
|
196
196
|
assert_equal "Invalid email address #{email}",
|
197
197
|
e.message
|
198
198
|
|
199
|
-
assert_path_not_exist File.join(@tempdir,
|
200
|
-
assert_path_not_exist File.join(@tempdir,
|
199
|
+
assert_path_not_exist File.join(@tempdir, "gem-private_key.pem")
|
200
|
+
assert_path_not_exist File.join(@tempdir, "gem-public_cert.pem")
|
201
201
|
end
|
202
202
|
end
|
203
203
|
|
204
204
|
def test_execute_build_expiration_days
|
205
|
-
passphrase =
|
205
|
+
passphrase = "Foo bar"
|
206
206
|
|
207
207
|
@cmd.handle_options %W[
|
208
208
|
--build nobody@example.com
|
@@ -232,8 +232,8 @@ Added '/CN=alternate/DC=example'
|
|
232
232
|
assert_empty output
|
233
233
|
assert_empty @build_ui.error
|
234
234
|
|
235
|
-
assert_path_exist File.join(@tempdir,
|
236
|
-
assert_path_exist File.join(@tempdir,
|
235
|
+
assert_path_exist File.join(@tempdir, "gem-private_key.pem")
|
236
|
+
assert_path_exist File.join(@tempdir, "gem-public_cert.pem")
|
237
237
|
|
238
238
|
pem = File.read("#{@tempdir}/gem-public_cert.pem")
|
239
239
|
cert = OpenSSL::X509::Certificate.new(pem)
|
@@ -243,8 +243,8 @@ Added '/CN=alternate/DC=example'
|
|
243
243
|
end
|
244
244
|
|
245
245
|
def test_execute_build_bad_passphrase_confirmation
|
246
|
-
passphrase =
|
247
|
-
passphrase_confirmation =
|
246
|
+
passphrase = "Foo bar"
|
247
|
+
passphrase_confirmation = "Fu bar"
|
248
248
|
|
249
249
|
@cmd.handle_options %W[--build nobody@example.com]
|
250
250
|
|
@@ -266,11 +266,10 @@ Added '/CN=alternate/DC=example'
|
|
266
266
|
|
267
267
|
assert_equal "Passphrase and passphrase confirmation don't match",
|
268
268
|
e.message
|
269
|
-
|
270
269
|
end
|
271
270
|
|
272
|
-
assert_path_not_exist File.join(@tempdir,
|
273
|
-
assert_path_not_exist File.join(@tempdir,
|
271
|
+
assert_path_not_exist File.join(@tempdir, "gem-private_key.pem")
|
272
|
+
assert_path_not_exist File.join(@tempdir, "gem-public_cert.pem")
|
274
273
|
end
|
275
274
|
|
276
275
|
def test_execute_build_key
|
@@ -291,8 +290,8 @@ Added '/CN=alternate/DC=example'
|
|
291
290
|
assert_empty output
|
292
291
|
assert_empty @ui.error
|
293
292
|
|
294
|
-
assert_path_exist File.join(@tempdir,
|
295
|
-
assert_path_not_exist File.join(@tempdir,
|
293
|
+
assert_path_exist File.join(@tempdir, "gem-public_cert.pem")
|
294
|
+
assert_path_not_exist File.join(@tempdir, "gem-private_key.pem")
|
296
295
|
end
|
297
296
|
|
298
297
|
def test_execute_build_encrypted_key
|
@@ -313,7 +312,7 @@ Added '/CN=alternate/DC=example'
|
|
313
312
|
assert_empty output
|
314
313
|
assert_empty @ui.error
|
315
314
|
|
316
|
-
assert_path_exist File.join(@tempdir,
|
315
|
+
assert_path_exist File.join(@tempdir, "gem-public_cert.pem")
|
317
316
|
end
|
318
317
|
|
319
318
|
def test_execute_build_ec_key
|
@@ -334,8 +333,8 @@ Added '/CN=alternate/DC=example'
|
|
334
333
|
assert_empty output
|
335
334
|
assert_empty @ui.error
|
336
335
|
|
337
|
-
assert_path_exist File.join(@tempdir,
|
338
|
-
assert_path_not_exist File.join(@tempdir,
|
336
|
+
assert_path_exist File.join(@tempdir, "gem-public_cert.pem")
|
337
|
+
assert_path_not_exist File.join(@tempdir, "gem-private_key.pem")
|
339
338
|
end
|
340
339
|
|
341
340
|
def test_execute_certificate
|
@@ -343,8 +342,8 @@ Added '/CN=alternate/DC=example'
|
|
343
342
|
@cmd.handle_options %W[--certificate #{PUBLIC_CERT_FILE}]
|
344
343
|
end
|
345
344
|
|
346
|
-
assert_equal
|
347
|
-
assert_equal
|
345
|
+
assert_equal "", @ui.output
|
346
|
+
assert_equal "", @ui.error
|
348
347
|
|
349
348
|
assert_equal PUBLIC_CERT.to_pem, @cmd.options[:issuer_cert].to_pem
|
350
349
|
end
|
@@ -383,8 +382,8 @@ Added '/CN=alternate/DC=example'
|
|
383
382
|
@cmd.send :handle_options, %W[--private-key #{PRIVATE_KEY_FILE}]
|
384
383
|
end
|
385
384
|
|
386
|
-
assert_equal
|
387
|
-
assert_equal
|
385
|
+
assert_equal "", @ui.output
|
386
|
+
assert_equal "", @ui.error
|
388
387
|
|
389
388
|
assert_equal PRIVATE_KEY.to_pem, @cmd.options[:key].to_pem
|
390
389
|
end
|
@@ -394,8 +393,8 @@ Added '/CN=alternate/DC=example'
|
|
394
393
|
@cmd.send :handle_options, %W[--private-key #{ENCRYPTED_PRIVATE_KEY_PATH}]
|
395
394
|
end
|
396
395
|
|
397
|
-
assert_equal
|
398
|
-
assert_equal
|
396
|
+
assert_equal "", @ui.output
|
397
|
+
assert_equal "", @ui.error
|
399
398
|
|
400
399
|
assert_equal ENCRYPTED_PRIVATE_KEY.to_pem, @cmd.options[:key].to_pem
|
401
400
|
end
|
@@ -414,7 +413,7 @@ Added '/CN=alternate/DC=example'
|
|
414
413
|
end
|
415
414
|
|
416
415
|
assert_equal "Removed '/CN=nobody/DC=example'\n", @ui.output
|
417
|
-
assert_equal
|
416
|
+
assert_equal "", @ui.error
|
418
417
|
|
419
418
|
assert_path_not_exist cert_path
|
420
419
|
end
|
@@ -441,7 +440,7 @@ Removed '/CN=nobody/DC=example'
|
|
441
440
|
EXPECTED
|
442
441
|
|
443
442
|
assert_equal expected, @ui.output
|
444
|
-
assert_equal
|
443
|
+
assert_equal "", @ui.error
|
445
444
|
|
446
445
|
assert_path_not_exist public_path
|
447
446
|
assert_path_not_exist alternate_path
|
@@ -469,17 +468,17 @@ Removed '/CN=alternate/DC=example'
|
|
469
468
|
EXPECTED
|
470
469
|
|
471
470
|
assert_equal expected, @ui.output
|
472
|
-
assert_equal
|
471
|
+
assert_equal "", @ui.error
|
473
472
|
|
474
473
|
assert_path_not_exist public_path
|
475
474
|
assert_path_not_exist alternate_path
|
476
475
|
end
|
477
476
|
|
478
477
|
def test_execute_sign
|
479
|
-
path = File.join @tempdir,
|
478
|
+
path = File.join @tempdir, "cert.pem"
|
480
479
|
Gem::Security.write ALTERNATE_CERT, path, 0600
|
481
480
|
|
482
|
-
assert_equal
|
481
|
+
assert_equal "/CN=alternate/DC=example", ALTERNATE_CERT.issuer.to_s
|
483
482
|
|
484
483
|
@cmd.handle_options %W[
|
485
484
|
--private-key #{PRIVATE_KEY_FILE}
|
@@ -492,12 +491,12 @@ Removed '/CN=alternate/DC=example'
|
|
492
491
|
@cmd.execute
|
493
492
|
end
|
494
493
|
|
495
|
-
assert_equal
|
496
|
-
assert_equal
|
494
|
+
assert_equal "", @ui.output
|
495
|
+
assert_equal "", @ui.error
|
497
496
|
|
498
497
|
cert = OpenSSL::X509::Certificate.new File.read path
|
499
498
|
|
500
|
-
assert_equal
|
499
|
+
assert_equal "/CN=nobody/DC=example", cert.issuer.to_s
|
501
500
|
|
502
501
|
mask = 0100600 & (~File.umask)
|
503
502
|
|
@@ -505,10 +504,10 @@ Removed '/CN=alternate/DC=example'
|
|
505
504
|
end
|
506
505
|
|
507
506
|
def test_execute_sign_encrypted_key
|
508
|
-
path = File.join @tempdir,
|
507
|
+
path = File.join @tempdir, "cert.pem"
|
509
508
|
Gem::Security.write ALTERNATE_CERT, path, 0600
|
510
509
|
|
511
|
-
assert_equal
|
510
|
+
assert_equal "/CN=alternate/DC=example", ALTERNATE_CERT.issuer.to_s
|
512
511
|
|
513
512
|
@cmd.handle_options %W[
|
514
513
|
--private-key #{ENCRYPTED_PRIVATE_KEY_PATH}
|
@@ -521,12 +520,12 @@ Removed '/CN=alternate/DC=example'
|
|
521
520
|
@cmd.execute
|
522
521
|
end
|
523
522
|
|
524
|
-
assert_equal
|
525
|
-
assert_equal
|
523
|
+
assert_equal "", @ui.output
|
524
|
+
assert_equal "", @ui.error
|
526
525
|
|
527
526
|
cert = OpenSSL::X509::Certificate.new File.read path
|
528
527
|
|
529
|
-
assert_equal
|
528
|
+
assert_equal "/CN=nobody/DC=example", cert.issuer.to_s
|
530
529
|
|
531
530
|
mask = 0100600 & (~File.umask)
|
532
531
|
|
@@ -534,18 +533,18 @@ Removed '/CN=alternate/DC=example'
|
|
534
533
|
end
|
535
534
|
|
536
535
|
def test_execute_sign_default
|
537
|
-
FileUtils.mkdir_p File.join Gem.user_home,
|
536
|
+
FileUtils.mkdir_p File.join Gem.user_home, ".gem"
|
538
537
|
|
539
|
-
private_key_path = File.join Gem.user_home,
|
538
|
+
private_key_path = File.join Gem.user_home, ".gem", "gem-private_key.pem"
|
540
539
|
Gem::Security.write PRIVATE_KEY, private_key_path
|
541
540
|
|
542
|
-
public_cert_path = File.join Gem.user_home,
|
541
|
+
public_cert_path = File.join Gem.user_home, ".gem", "gem-public_cert.pem"
|
543
542
|
Gem::Security.write PUBLIC_CERT, public_cert_path
|
544
543
|
|
545
|
-
path = File.join @tempdir,
|
544
|
+
path = File.join @tempdir, "cert.pem"
|
546
545
|
Gem::Security.write ALTERNATE_CERT, path, 0600
|
547
546
|
|
548
|
-
assert_equal
|
547
|
+
assert_equal "/CN=alternate/DC=example", ALTERNATE_CERT.issuer.to_s
|
549
548
|
|
550
549
|
@cmd.handle_options %W[--sign #{path}]
|
551
550
|
|
@@ -553,12 +552,12 @@ Removed '/CN=alternate/DC=example'
|
|
553
552
|
@cmd.execute
|
554
553
|
end
|
555
554
|
|
556
|
-
assert_equal
|
557
|
-
assert_equal
|
555
|
+
assert_equal "", @ui.output
|
556
|
+
assert_equal "", @ui.error
|
558
557
|
|
559
558
|
cert = OpenSSL::X509::Certificate.new File.read path
|
560
559
|
|
561
|
-
assert_equal
|
560
|
+
assert_equal "/CN=nobody/DC=example", cert.issuer.to_s
|
562
561
|
|
563
562
|
mask = 0100600 & (~File.umask)
|
564
563
|
|
@@ -566,18 +565,18 @@ Removed '/CN=alternate/DC=example'
|
|
566
565
|
end
|
567
566
|
|
568
567
|
def test_execute_sign_default_encrypted_key
|
569
|
-
FileUtils.mkdir_p File.join(Gem.user_home,
|
568
|
+
FileUtils.mkdir_p File.join(Gem.user_home, ".gem")
|
570
569
|
|
571
|
-
private_key_path = File.join Gem.user_home,
|
570
|
+
private_key_path = File.join Gem.user_home, ".gem", "gem-private_key.pem"
|
572
571
|
Gem::Security.write ENCRYPTED_PRIVATE_KEY, private_key_path, 0600, PRIVATE_KEY_PASSPHRASE
|
573
572
|
|
574
|
-
public_cert_path = File.join Gem.user_home,
|
573
|
+
public_cert_path = File.join Gem.user_home, ".gem", "gem-public_cert.pem"
|
575
574
|
Gem::Security.write PUBLIC_CERT, public_cert_path
|
576
575
|
|
577
|
-
path = File.join @tempdir,
|
576
|
+
path = File.join @tempdir, "cert.pem"
|
578
577
|
Gem::Security.write ALTERNATE_CERT, path, 0600
|
579
578
|
|
580
|
-
assert_equal
|
579
|
+
assert_equal "/CN=alternate/DC=example", ALTERNATE_CERT.issuer.to_s
|
581
580
|
|
582
581
|
@cmd.handle_options %W[--sign #{path}]
|
583
582
|
|
@@ -585,12 +584,12 @@ Removed '/CN=alternate/DC=example'
|
|
585
584
|
@cmd.execute
|
586
585
|
end
|
587
586
|
|
588
|
-
assert_equal
|
589
|
-
assert_equal
|
587
|
+
assert_equal "", @ui.output
|
588
|
+
assert_equal "", @ui.error
|
590
589
|
|
591
590
|
cert = OpenSSL::X509::Certificate.new File.read path
|
592
591
|
|
593
|
-
assert_equal
|
592
|
+
assert_equal "/CN=nobody/DC=example", cert.issuer.to_s
|
594
593
|
|
595
594
|
mask = 0100600 & (~File.umask)
|
596
595
|
|
@@ -598,15 +597,15 @@ Removed '/CN=alternate/DC=example'
|
|
598
597
|
end
|
599
598
|
|
600
599
|
def test_execute_sign_no_cert
|
601
|
-
FileUtils.mkdir_p File.join Gem.user_home,
|
600
|
+
FileUtils.mkdir_p File.join Gem.user_home, ".gem"
|
602
601
|
|
603
|
-
private_key_path = File.join Gem.user_home,
|
602
|
+
private_key_path = File.join Gem.user_home, ".gem", "gem-private_key.pem"
|
604
603
|
Gem::Security.write PRIVATE_KEY, private_key_path
|
605
604
|
|
606
|
-
path = File.join @tempdir,
|
605
|
+
path = File.join @tempdir, "cert.pem"
|
607
606
|
Gem::Security.write ALTERNATE_CERT, path, 0600
|
608
607
|
|
609
|
-
assert_equal
|
608
|
+
assert_equal "/CN=alternate/DC=example", ALTERNATE_CERT.issuer.to_s
|
610
609
|
|
611
610
|
@cmd.handle_options %W[--sign #{path}]
|
612
611
|
|
@@ -616,7 +615,7 @@ Removed '/CN=alternate/DC=example'
|
|
616
615
|
end
|
617
616
|
end
|
618
617
|
|
619
|
-
assert_equal
|
618
|
+
assert_equal "", @ui.output
|
620
619
|
|
621
620
|
expected = <<-EXPECTED
|
622
621
|
ERROR: --certificate not specified and ~/.gem/gem-public_cert.pem does not exist
|
@@ -626,15 +625,15 @@ ERROR: --certificate not specified and ~/.gem/gem-public_cert.pem does not exis
|
|
626
625
|
end
|
627
626
|
|
628
627
|
def test_execute_sign_no_key
|
629
|
-
FileUtils.mkdir_p File.join Gem.user_home,
|
628
|
+
FileUtils.mkdir_p File.join Gem.user_home, ".gem"
|
630
629
|
|
631
|
-
public_cert_path = File.join Gem.user_home,
|
630
|
+
public_cert_path = File.join Gem.user_home, ".gem", "gem-public_cert.pem"
|
632
631
|
Gem::Security.write PUBLIC_CERT, public_cert_path
|
633
632
|
|
634
|
-
path = File.join @tempdir,
|
633
|
+
path = File.join @tempdir, "cert.pem"
|
635
634
|
Gem::Security.write ALTERNATE_CERT, path, 0600
|
636
635
|
|
637
|
-
assert_equal
|
636
|
+
assert_equal "/CN=alternate/DC=example", ALTERNATE_CERT.issuer.to_s
|
638
637
|
|
639
638
|
@cmd.handle_options %W[--sign #{path}]
|
640
639
|
|
@@ -644,7 +643,7 @@ ERROR: --certificate not specified and ~/.gem/gem-public_cert.pem does not exis
|
|
644
643
|
end
|
645
644
|
end
|
646
645
|
|
647
|
-
assert_equal
|
646
|
+
assert_equal "", @ui.output
|
648
647
|
|
649
648
|
expected = <<-EXPECTED
|
650
649
|
ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exist
|
@@ -657,10 +656,10 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
657
656
|
gem_path = File.join Gem.user_home, ".gem"
|
658
657
|
Dir.mkdir gem_path
|
659
658
|
|
660
|
-
path = File.join @tempdir,
|
659
|
+
path = File.join @tempdir, "cert.pem"
|
661
660
|
Gem::Security.write EXPIRED_PUBLIC_CERT, path, 0600
|
662
661
|
|
663
|
-
assert_equal
|
662
|
+
assert_equal "/CN=nobody/DC=example", EXPIRED_PUBLIC_CERT.issuer.to_s
|
664
663
|
|
665
664
|
tmp_expired_cert_file = File.join(Dir.tmpdir, File.basename(EXPIRED_PUBLIC_CERT_FILE))
|
666
665
|
@cleanup << tmp_expired_cert_file
|
@@ -682,17 +681,17 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
682
681
|
/INFO: Your certificate #{tmp_expired_cert_file} has been re-signed\nINFO: Your expired certificate will be located at: #{expected_path}\.[0-9]+/,
|
683
682
|
@ui.output
|
684
683
|
)
|
685
|
-
assert_equal
|
684
|
+
assert_equal "", @ui.error
|
686
685
|
end
|
687
686
|
|
688
687
|
def test_execute_re_sign_with_cert_expiration_length_days
|
689
688
|
gem_path = File.join Gem.user_home, ".gem"
|
690
689
|
Dir.mkdir gem_path
|
691
690
|
|
692
|
-
path = File.join @tempdir,
|
691
|
+
path = File.join @tempdir, "cert.pem"
|
693
692
|
Gem::Security.write EXPIRED_PUBLIC_CERT, path, 0600
|
694
693
|
|
695
|
-
assert_equal
|
694
|
+
assert_equal "/CN=nobody/DC=example", EXPIRED_PUBLIC_CERT.issuer.to_s
|
696
695
|
|
697
696
|
tmp_expired_cert_file = File.join(Dir.tmpdir, File.basename(EXPIRED_PUBLIC_CERT_FILE))
|
698
697
|
@cleanup << tmp_expired_cert_file
|
@@ -714,7 +713,7 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
714
713
|
cert_days_to_expire = (re_signed_cert.not_after - re_signed_cert.not_before).to_i / (24 * 60 * 60)
|
715
714
|
|
716
715
|
assert_equal(28, cert_days_to_expire)
|
717
|
-
assert_equal
|
716
|
+
assert_equal "", @ui.error
|
718
717
|
end
|
719
718
|
|
720
719
|
def test_handle_options
|
@@ -740,11 +739,11 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
740
739
|
assert_equal %w[nobody@example other@example],
|
741
740
|
@cmd.options[:build].map {|name| name.to_s }
|
742
741
|
|
743
|
-
assert_equal [
|
742
|
+
assert_equal ["", "example"], @cmd.options[:list]
|
744
743
|
end
|
745
744
|
|
746
745
|
def test_handle_options_add_bad
|
747
|
-
nonexistent = File.join @tempdir,
|
746
|
+
nonexistent = File.join @tempdir, "nonexistent"
|
748
747
|
e = assert_raise Gem::OptionParser::InvalidArgument do
|
749
748
|
@cmd.handle_options %W[--add #{nonexistent}]
|
750
749
|
end
|
@@ -752,7 +751,7 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
752
751
|
assert_equal "invalid argument: --add #{nonexistent}: does not exist",
|
753
752
|
e.message
|
754
753
|
|
755
|
-
bad = File.join @tempdir,
|
754
|
+
bad = File.join @tempdir, "bad"
|
756
755
|
FileUtils.touch bad
|
757
756
|
|
758
757
|
e = assert_raise Gem::OptionParser::InvalidArgument do
|
@@ -764,7 +763,7 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
764
763
|
end
|
765
764
|
|
766
765
|
def test_handle_options_certificate
|
767
|
-
nonexistent = File.join @tempdir,
|
766
|
+
nonexistent = File.join @tempdir, "nonexistent"
|
768
767
|
e = assert_raise Gem::OptionParser::InvalidArgument do
|
769
768
|
@cmd.handle_options %W[--certificate #{nonexistent}]
|
770
769
|
end
|
@@ -772,7 +771,7 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
772
771
|
assert_equal "invalid argument: --certificate #{nonexistent}: does not exist",
|
773
772
|
e.message
|
774
773
|
|
775
|
-
bad = File.join @tempdir,
|
774
|
+
bad = File.join @tempdir, "bad"
|
776
775
|
FileUtils.touch bad
|
777
776
|
|
778
777
|
e = assert_raise Gem::OptionParser::InvalidArgument do
|
@@ -785,7 +784,7 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
785
784
|
end
|
786
785
|
|
787
786
|
def test_handle_options_key_bad
|
788
|
-
nonexistent = File.join @tempdir,
|
787
|
+
nonexistent = File.join @tempdir, "nonexistent"
|
789
788
|
e = assert_raise Gem::OptionParser::InvalidArgument do
|
790
789
|
@cmd.handle_options %W[--private-key #{nonexistent}]
|
791
790
|
end
|
@@ -794,7 +793,7 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
794
793
|
"--private-key #{nonexistent}: does not exist",
|
795
794
|
e.message
|
796
795
|
|
797
|
-
bad = File.join @tempdir,
|
796
|
+
bad = File.join @tempdir, "bad"
|
798
797
|
FileUtils.touch bad
|
799
798
|
|
800
799
|
e = assert_raise Gem::OptionParser::InvalidArgument do
|
@@ -850,7 +849,7 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
850
849
|
end
|
851
850
|
|
852
851
|
def test_handle_options_sign_nonexistent
|
853
|
-
nonexistent = File.join @tempdir,
|
852
|
+
nonexistent = File.join @tempdir, "nonexistent"
|
854
853
|
e = assert_raise Gem::OptionParser::InvalidArgument do
|
855
854
|
@cmd.handle_options %W[
|
856
855
|
--private-key #{ALTERNATE_KEY_FILE}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
3
|
-
|
2
|
+
|
3
|
+
require_relative "helper"
|
4
|
+
require "rubygems/commands/check_command"
|
4
5
|
|
5
6
|
class TestGemCommandsCheckCommand < Gem::TestCase
|
6
7
|
def setup
|
@@ -45,8 +46,8 @@ class TestGemCommandsCheckCommand < Gem::TestCase
|
|
45
46
|
end
|
46
47
|
|
47
48
|
def test_doctor
|
48
|
-
gem
|
49
|
-
b = gem
|
49
|
+
gem "a"
|
50
|
+
b = gem "b"
|
50
51
|
|
51
52
|
FileUtils.rm b.spec_file
|
52
53
|
|