rubygems-update 3.3.18 → 3.3.22
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 +65 -0
- data/Manifest.txt +11 -0
- data/bin/gem +2 -2
- data/bin/update_rubygems +4 -4
- data/bundler/CHANGELOG.md +100 -0
- data/bundler/UPGRADING.md +11 -4
- data/bundler/bundler.gemspec +6 -8
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/cli/common.rb +1 -0
- data/bundler/lib/bundler/cli/install.rb +5 -2
- data/bundler/lib/bundler/cli/outdated.rb +12 -3
- data/bundler/lib/bundler/cli/platform.rb +1 -1
- data/bundler/lib/bundler/cli.rb +7 -4
- data/bundler/lib/bundler/current_ruby.rb +14 -5
- data/bundler/lib/bundler/definition.rb +102 -31
- data/bundler/lib/bundler/dependency.rb +18 -85
- data/bundler/lib/bundler/dsl.rb +2 -2
- data/bundler/lib/bundler/endpoint_specification.rb +2 -13
- data/bundler/lib/bundler/feature_flag.rb +0 -1
- data/bundler/lib/bundler/fetcher.rb +6 -6
- data/bundler/lib/bundler/gem_helpers.rb +7 -1
- data/bundler/lib/bundler/gem_version_promoter.rb +8 -18
- data/bundler/lib/bundler/index.rb +10 -12
- data/bundler/lib/bundler/injector.rb +2 -1
- data/bundler/lib/bundler/inline.rb +1 -1
- data/bundler/lib/bundler/installer/standalone.rb +1 -1
- data/bundler/lib/bundler/installer.rb +14 -12
- data/bundler/lib/bundler/lazy_specification.rb +30 -23
- data/bundler/lib/bundler/lockfile_generator.rb +1 -1
- 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 +7 -1
- data/bundler/lib/bundler/man/bundle-cache.1.ronn +7 -0
- data/bundler/lib/bundler/man/bundle-check.1 +1 -1
- data/bundler/lib/bundler/man/bundle-clean.1 +1 -1
- data/bundler/lib/bundler/man/bundle-config.1 +25 -6
- data/bundler/lib/bundler/man/bundle-config.1.ronn +16 -6
- 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 +2 -2
- data/bundler/lib/bundler/man/bundle-exec.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-gem.1 +1 -1
- 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 +1 -1
- data/bundler/lib/bundler/man/bundle-init.1 +1 -1
- 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 -1
- data/bundler/lib/bundler/man/bundle-install.1.ronn +6 -0
- 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 +1 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +1 -1
- 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 +23 -47
- data/bundler/lib/bundler/man/gemfile.5.ronn +32 -43
- 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/plugin.rb +2 -0
- data/bundler/lib/bundler/remote_specification.rb +6 -11
- data/bundler/lib/bundler/resolver/base.rb +50 -0
- data/bundler/lib/bundler/resolver/spec_group.rb +11 -8
- data/bundler/lib/bundler/resolver.rb +95 -90
- data/bundler/lib/bundler/ruby_dsl.rb +1 -1
- data/bundler/lib/bundler/ruby_version.rb +5 -5
- data/bundler/lib/bundler/rubygems_ext.rb +52 -1
- data/bundler/lib/bundler/rubygems_gem_installer.rb +19 -12
- data/bundler/lib/bundler/settings.rb +1 -1
- data/bundler/lib/bundler/source/metadata.rb +1 -1
- data/bundler/lib/bundler/source_list.rb +4 -0
- data/bundler/lib/bundler/spec_set.rb +48 -33
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler.rb +3 -3
- data/lib/rubygems/available_set.rb +3 -3
- data/lib/rubygems/basic_specification.rb +4 -4
- data/lib/rubygems/command.rb +25 -25
- data/lib/rubygems/command_manager.rb +9 -9
- data/lib/rubygems/commands/build_command.rb +8 -8
- data/lib/rubygems/commands/cert_command.rb +33 -33
- data/lib/rubygems/commands/check_command.rb +20 -20
- data/lib/rubygems/commands/cleanup_command.rb +17 -17
- data/lib/rubygems/commands/contents_command.rb +13 -13
- data/lib/rubygems/commands/dependency_command.rb +16 -16
- data/lib/rubygems/commands/environment_command.rb +5 -5
- data/lib/rubygems/commands/fetch_command.rb +8 -8
- data/lib/rubygems/commands/generate_index_command.rb +17 -17
- data/lib/rubygems/commands/help_command.rb +3 -3
- data/lib/rubygems/commands/info_command.rb +3 -3
- data/lib/rubygems/commands/install_command.rb +20 -20
- data/lib/rubygems/commands/list_command.rb +3 -3
- data/lib/rubygems/commands/lock_command.rb +4 -4
- data/lib/rubygems/commands/mirror_command.rb +3 -3
- data/lib/rubygems/commands/open_command.rb +9 -9
- data/lib/rubygems/commands/outdated_command.rb +5 -5
- data/lib/rubygems/commands/owner_command.rb +11 -11
- data/lib/rubygems/commands/pristine_command.rb +36 -36
- data/lib/rubygems/commands/push_command.rb +8 -8
- data/lib/rubygems/commands/query_command.rb +8 -8
- data/lib/rubygems/commands/rdoc_command.rb +17 -17
- data/lib/rubygems/commands/search_command.rb +3 -3
- data/lib/rubygems/commands/server_command.rb +3 -3
- data/lib/rubygems/commands/setup_command.rb +96 -106
- data/lib/rubygems/commands/signin_command.rb +9 -9
- data/lib/rubygems/commands/signout_command.rb +7 -7
- data/lib/rubygems/commands/sources_command.rb +21 -21
- data/lib/rubygems/commands/specification_command.rb +13 -13
- data/lib/rubygems/commands/stale_command.rb +2 -2
- data/lib/rubygems/commands/uninstall_command.rb +40 -40
- data/lib/rubygems/commands/unpack_command.rb +12 -12
- data/lib/rubygems/commands/update_command.rb +40 -56
- data/lib/rubygems/commands/which_command.rb +7 -7
- data/lib/rubygems/commands/yank_command.rb +11 -11
- data/lib/rubygems/config_file.rb +21 -21
- data/lib/rubygems/core_ext/kernel_gem.rb +1 -1
- data/lib/rubygems/core_ext/kernel_require.rb +1 -1
- data/lib/rubygems/core_ext/kernel_warn.rb +1 -1
- data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
- data/lib/rubygems/defaults.rb +16 -16
- data/lib/rubygems/dependency.rb +9 -9
- data/lib/rubygems/dependency_installer.rb +13 -13
- data/lib/rubygems/dependency_list.rb +6 -6
- data/lib/rubygems/doctor.rb +18 -18
- data/lib/rubygems/errors.rb +2 -2
- data/lib/rubygems/exceptions.rb +5 -5
- data/lib/rubygems/ext/build_error.rb +1 -1
- data/lib/rubygems/ext/builder.rb +16 -16
- data/lib/rubygems/ext/cargo_builder.rb +7 -7
- data/lib/rubygems/ext/cmake_builder.rb +2 -2
- data/lib/rubygems/ext/configure_builder.rb +1 -1
- data/lib/rubygems/ext/ext_conf_builder.rb +8 -8
- data/lib/rubygems/ext/rake_builder.rb +3 -3
- data/lib/rubygems/ext.rb +7 -7
- data/lib/rubygems/gem_runner.rb +5 -5
- data/lib/rubygems/gemcutter_utilities.rb +31 -28
- data/lib/rubygems/indexer.rb +27 -27
- data/lib/rubygems/install_default_message.rb +2 -2
- data/lib/rubygems/install_message.rb +2 -2
- data/lib/rubygems/install_update_options.rb +55 -55
- data/lib/rubygems/installer.rb +32 -40
- data/lib/rubygems/installer_uninstaller_utils.rb +2 -2
- data/lib/rubygems/local_remote_options.rb +18 -20
- data/lib/rubygems/mock_gem_ui.rb +2 -2
- data/lib/rubygems/name_tuple.rb +4 -4
- data/lib/rubygems/optparse.rb +1 -1
- data/lib/rubygems/package/file_source.rb +2 -2
- data/lib/rubygems/package/old.rb +8 -8
- data/lib/rubygems/package/tar_header.rb +50 -50
- data/lib/rubygems/package/tar_reader/entry.rb +2 -2
- data/lib/rubygems/package/tar_reader.rb +1 -1
- data/lib/rubygems/package/tar_writer.rb +7 -7
- data/lib/rubygems/package.rb +54 -43
- data/lib/rubygems/package_task.rb +4 -4
- data/lib/rubygems/platform.rb +66 -55
- data/lib/rubygems/psych_tree.rb +1 -1
- data/lib/rubygems/query_utils.rb +35 -35
- data/lib/rubygems/rdoc.rb +2 -2
- data/lib/rubygems/remote_fetcher.rb +22 -22
- data/lib/rubygems/request/connection_pools.rb +4 -4
- data/lib/rubygems/request/http_pool.rb +1 -1
- data/lib/rubygems/request.rb +22 -22
- data/lib/rubygems/request_set/gem_dependency_api.rb +18 -18
- data/lib/rubygems/request_set/lockfile/parser.rb +26 -26
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +4 -4
- data/lib/rubygems/request_set/lockfile.rb +5 -5
- data/lib/rubygems/request_set.rb +17 -17
- data/lib/rubygems/requirement.rb +6 -6
- data/lib/rubygems/resolver/activation_request.rb +3 -3
- data/lib/rubygems/resolver/api_set.rb +4 -4
- data/lib/rubygems/resolver/api_specification.rb +6 -6
- data/lib/rubygems/resolver/best_set.rb +5 -5
- data/lib/rubygems/resolver/conflict.rb +10 -10
- data/lib/rubygems/resolver/dependency_request.rb +2 -2
- data/lib/rubygems/resolver/git_set.rb +2 -2
- data/lib/rubygems/resolver/git_specification.rb +6 -6
- data/lib/rubygems/resolver/index_set.rb +3 -3
- data/lib/rubygems/resolver/index_specification.rb +6 -5
- data/lib/rubygems/resolver/installed_specification.rb +4 -4
- data/lib/rubygems/resolver/installer_set.rb +11 -16
- data/lib/rubygems/resolver/local_specification.rb +2 -2
- data/lib/rubygems/resolver/lock_set.rb +4 -4
- data/lib/rubygems/resolver/lock_specification.rb +4 -4
- data/lib/rubygems/resolver/molinillo.rb +1 -1
- data/lib/rubygems/resolver/specification.rb +1 -1
- data/lib/rubygems/resolver/vendor_set.rb +1 -1
- data/lib/rubygems/resolver/vendor_specification.rb +3 -3
- data/lib/rubygems/resolver.rb +39 -39
- data/lib/rubygems/s3_uri_signer.rb +6 -6
- data/lib/rubygems/safe_yaml.rb +2 -2
- data/lib/rubygems/security/policies.rb +11 -11
- data/lib/rubygems/security/policy.rb +18 -18
- data/lib/rubygems/security/signer.rb +5 -5
- data/lib/rubygems/security/trust_dir.rb +3 -3
- data/lib/rubygems/security.rb +28 -28
- data/lib/rubygems/security_option.rb +5 -5
- data/lib/rubygems/source/git.rb +21 -21
- data/lib/rubygems/source/installed.rb +1 -1
- data/lib/rubygems/source/local.rb +2 -2
- data/lib/rubygems/source/specific_file.rb +1 -1
- data/lib/rubygems/source.rb +16 -16
- data/lib/rubygems/spec_fetcher.rb +9 -9
- data/lib/rubygems/specification.rb +63 -62
- data/lib/rubygems/specification_policy.rb +15 -15
- data/lib/rubygems/stub_specification.rb +5 -5
- data/lib/rubygems/tsort.rb +1 -1
- data/lib/rubygems/uninstaller.rb +18 -18
- data/lib/rubygems/uri.rb +4 -4
- data/lib/rubygems/uri_formatter.rb +1 -1
- data/lib/rubygems/user_interaction.rb +33 -19
- data/lib/rubygems/util/licenses.rb +3 -3
- data/lib/rubygems/util.rb +10 -10
- data/lib/rubygems/validator.rb +5 -5
- data/lib/rubygems/version.rb +15 -9
- data/lib/rubygems/version_option.rb +3 -3
- data/lib/rubygems.rb +62 -61
- data/rubygems-update.gemspec +2 -2
- data/setup.rb +9 -9
- data/test/rubygems/helper.rb +132 -134
- data/test/rubygems/installer_test_case.rb +13 -13
- data/test/rubygems/package/tar_test_case.rb +2 -2
- data/test/rubygems/plugin/exception/rubygems_plugin.rb +1 -1
- data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
- data/test/rubygems/rubygems_plugin.rb +2 -2
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +4 -4
- data/test/rubygems/test_bundled_ca.rb +10 -10
- data/test/rubygems/test_config.rb +3 -3
- data/test/rubygems/test_deprecate.rb +3 -3
- data/test/rubygems/test_exit.rb +2 -2
- data/test/rubygems/test_gem.rb +342 -342
- data/test/rubygems/test_gem_available_set.rb +21 -21
- data/test/rubygems/test_gem_bundler_version_finder.rb +1 -1
- data/test/rubygems/test_gem_command.rb +44 -44
- data/test/rubygems/test_gem_command_manager.rb +29 -29
- data/test/rubygems/test_gem_commands_build_command.rb +63 -63
- data/test/rubygems/test_gem_commands_cert_command.rb +97 -99
- data/test/rubygems/test_gem_commands_check_command.rb +4 -4
- data/test/rubygems/test_gem_commands_cleanup_command.rb +40 -40
- data/test/rubygems/test_gem_commands_contents_command.rb +27 -27
- data/test/rubygems/test_gem_commands_dependency_command.rb +36 -36
- data/test/rubygems/test_gem_commands_environment_command.rb +16 -16
- data/test/rubygems/test_gem_commands_fetch_command.rb +37 -37
- data/test/rubygems/test_gem_commands_generate_index_command.rb +7 -7
- data/test/rubygems/test_gem_commands_help_command.rb +13 -13
- data/test/rubygems/test_gem_commands_info_command.rb +28 -2
- data/test/rubygems/test_gem_commands_install_command.rb +131 -131
- data/test/rubygems/test_gem_commands_list_command.rb +4 -4
- data/test/rubygems/test_gem_commands_lock_command.rb +10 -10
- data/test/rubygems/test_gem_commands_mirror.rb +2 -2
- data/test/rubygems/test_gem_commands_open_command.rb +4 -4
- data/test/rubygems/test_gem_commands_outdated_command.rb +9 -9
- data/test/rubygems/test_gem_commands_owner_command.rb +41 -41
- data/test/rubygems/test_gem_commands_pristine_command.rb +92 -92
- data/test/rubygems/test_gem_commands_push_command.rb +54 -54
- data/test/rubygems/test_gem_commands_query_command.rb +73 -73
- data/test/rubygems/test_gem_commands_search_command.rb +2 -2
- data/test/rubygems/test_gem_commands_server_command.rb +2 -2
- data/test/rubygems/test_gem_commands_setup_command.rb +119 -85
- data/test/rubygems/test_gem_commands_signin_command.rb +45 -31
- data/test/rubygems/test_gem_commands_signout_command.rb +3 -3
- data/test/rubygems/test_gem_commands_sources_command.rb +28 -29
- data/test/rubygems/test_gem_commands_specification_command.rb +32 -32
- data/test/rubygems/test_gem_commands_stale_command.rb +4 -4
- data/test/rubygems/test_gem_commands_uninstall_command.rb +75 -75
- data/test/rubygems/test_gem_commands_unpack_command.rb +31 -31
- data/test/rubygems/test_gem_commands_update_command.rb +89 -89
- data/test/rubygems/test_gem_commands_which_command.rb +6 -6
- data/test/rubygems/test_gem_commands_yank_command.rb +40 -40
- data/test/rubygems/test_gem_config_file.rb +93 -81
- data/test/rubygems/test_gem_dependency.rb +73 -73
- data/test/rubygems/test_gem_dependency_installer.rb +165 -165
- data/test/rubygems/test_gem_dependency_list.rb +47 -47
- data/test/rubygems/test_gem_dependency_resolution_error.rb +4 -4
- data/test/rubygems/test_gem_doctor.rb +26 -26
- data/test/rubygems/test_gem_ext_builder.rb +59 -59
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.lock +6 -6
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.toml +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/build.rb +8 -8
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +6 -6
- 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/build.rb +8 -8
- data/test/rubygems/test_gem_ext_cargo_builder.rb +26 -26
- data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +3 -3
- data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +23 -23
- data/test/rubygems/test_gem_ext_cmake_builder.rb +15 -15
- data/test/rubygems/test_gem_ext_configure_builder.rb +13 -13
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +51 -52
- data/test/rubygems/test_gem_ext_rake_builder.rb +15 -15
- data/test/rubygems/test_gem_gem_runner.rb +7 -7
- data/test/rubygems/test_gem_gemcutter_utilities.rb +66 -66
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -4
- data/test/rubygems/test_gem_indexer.rb +48 -48
- data/test/rubygems/test_gem_install_update_options.rb +16 -16
- data/test/rubygems/test_gem_installer.rb +303 -300
- data/test/rubygems/test_gem_local_remote_options.rb +10 -10
- data/test/rubygems/test_gem_name_tuple.rb +4 -4
- data/test/rubygems/test_gem_package.rb +228 -206
- data/test/rubygems/test_gem_package_old.rb +13 -13
- data/test/rubygems/test_gem_package_tar_header.rb +42 -42
- data/test/rubygems/test_gem_package_tar_reader.rb +8 -8
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +10 -10
- data/test/rubygems/test_gem_package_tar_writer.rb +76 -76
- data/test/rubygems/test_gem_package_task.rb +18 -18
- data/test/rubygems/test_gem_path_support.rb +14 -14
- data/test/rubygems/test_gem_platform.rb +298 -227
- data/test/rubygems/test_gem_rdoc.rb +14 -14
- data/test/rubygems/test_gem_remote_fetcher.rb +149 -149
- data/test/rubygems/test_gem_request.rb +55 -55
- data/test/rubygems/test_gem_request_connection_pools.rb +29 -29
- data/test/rubygems/test_gem_request_set.rb +99 -99
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +204 -206
- data/test/rubygems/test_gem_request_set_lockfile.rb +86 -86
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +56 -56
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +62 -62
- data/test/rubygems/test_gem_requirement.rb +47 -41
- data/test/rubygems/test_gem_resolver.rb +133 -99
- data/test/rubygems/test_gem_resolver_activation_request.rb +6 -6
- data/test/rubygems/test_gem_resolver_api_set.rb +33 -33
- data/test/rubygems/test_gem_resolver_api_specification.rb +47 -47
- data/test/rubygems/test_gem_resolver_best_set.rb +22 -22
- data/test/rubygems/test_gem_resolver_composed_set.rb +1 -1
- data/test/rubygems/test_gem_resolver_conflict.rb +12 -12
- data/test/rubygems/test_gem_resolver_dependency_request.rb +15 -15
- data/test/rubygems/test_gem_resolver_git_set.rb +21 -21
- data/test/rubygems/test_gem_resolver_git_specification.rb +21 -21
- data/test/rubygems/test_gem_resolver_index_set.rb +12 -12
- data/test/rubygems/test_gem_resolver_index_specification.rb +16 -16
- data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -5
- data/test/rubygems/test_gem_resolver_installer_set.rb +78 -34
- data/test/rubygems/test_gem_resolver_local_specification.rb +7 -7
- data/test/rubygems/test_gem_resolver_lock_set.rb +12 -12
- data/test/rubygems/test_gem_resolver_lock_specification.rb +17 -17
- data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -1
- data/test/rubygems/test_gem_resolver_specification.rb +8 -8
- data/test/rubygems/test_gem_resolver_vendor_set.rb +6 -6
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +10 -10
- data/test/rubygems/test_gem_security.rb +67 -67
- data/test/rubygems/test_gem_security_policy.rb +62 -62
- data/test/rubygems/test_gem_security_signer.rb +28 -28
- data/test/rubygems/test_gem_security_trust_dir.rb +4 -4
- data/test/rubygems/test_gem_silent_ui.rb +38 -32
- data/test/rubygems/test_gem_source.rb +44 -44
- data/test/rubygems/test_gem_source_fetch_problem.rb +9 -9
- data/test/rubygems/test_gem_source_git.rb +59 -59
- data/test/rubygems/test_gem_source_installed.rb +16 -16
- data/test/rubygems/test_gem_source_list.rb +5 -5
- data/test/rubygems/test_gem_source_local.rb +14 -14
- data/test/rubygems/test_gem_source_lock.rb +31 -31
- data/test/rubygems/test_gem_source_specific_file.rb +17 -17
- data/test/rubygems/test_gem_source_subpath_problem.rb +7 -7
- data/test/rubygems/test_gem_source_vendor.rb +13 -13
- data/test/rubygems/test_gem_spec_fetcher.rb +72 -72
- data/test/rubygems/test_gem_specification.rb +444 -436
- data/test/rubygems/test_gem_stream_ui.rb +19 -19
- data/test/rubygems/test_gem_stub_specification.rb +32 -32
- data/test/rubygems/test_gem_text.rb +1 -1
- data/test/rubygems/test_gem_uninstaller.rb +112 -112
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -3
- data/test/rubygems/test_gem_uri.rb +4 -4
- data/test/rubygems/test_gem_uri_formatter.rb +14 -14
- data/test/rubygems/test_gem_util.rb +23 -23
- data/test/rubygems/test_gem_validator.rb +8 -8
- data/test/rubygems/test_gem_version.rb +22 -15
- data/test/rubygems/test_gem_version_option.rb +15 -15
- data/test/rubygems/test_kernel.rb +31 -31
- data/test/rubygems/test_project_sanity.rb +1 -1
- data/test/rubygems/test_remote_fetch_error.rb +6 -6
- data/test/rubygems/test_require.rb +43 -43
- data/test/rubygems/test_rubygems.rb +8 -8
- data/test/rubygems/utilities.rb +19 -19
- metadata +14 -3
@@ -1,28 +1,28 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require_relative
|
3
|
-
require
|
2
|
+
require_relative "helper"
|
3
|
+
require "rubygems/commands/cert_command"
|
4
4
|
|
5
5
|
unless Gem::HAVE_OPENSSL
|
6
|
-
warn
|
6
|
+
warn "Skipping `gem cert` tests. openssl not found."
|
7
7
|
end
|
8
8
|
|
9
9
|
if Gem.java_platform?
|
10
|
-
warn
|
10
|
+
warn "Skipping `gem cert` tests on jruby."
|
11
11
|
end
|
12
12
|
|
13
13
|
class TestGemCommandsCertCommand < Gem::TestCase
|
14
|
-
ALTERNATE_CERT = load_cert
|
15
|
-
EXPIRED_PUBLIC_CERT = load_cert
|
14
|
+
ALTERNATE_CERT = load_cert "alternate"
|
15
|
+
EXPIRED_PUBLIC_CERT = load_cert "expired"
|
16
16
|
|
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
|
17
|
+
ALTERNATE_KEY_FILE = key_path "alternate"
|
18
|
+
PRIVATE_KEY_FILE = key_path "private"
|
19
|
+
PRIVATE_EC_KEY_FILE = key_path "private_ec"
|
20
|
+
PUBLIC_KEY_FILE = key_path "public"
|
21
21
|
|
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
|
22
|
+
ALTERNATE_CERT_FILE = cert_path "alternate"
|
23
|
+
CHILD_CERT_FILE = cert_path "child"
|
24
|
+
PUBLIC_CERT_FILE = cert_path "public"
|
25
|
+
EXPIRED_PUBLIC_CERT_FILE = cert_path "expired"
|
26
26
|
|
27
27
|
def setup
|
28
28
|
super
|
@@ -44,7 +44,7 @@ class TestGemCommandsCertCommand < Gem::TestCase
|
|
44
44
|
@trust_dir.trust_cert PUBLIC_CERT
|
45
45
|
@trust_dir.trust_cert ALTERNATE_CERT
|
46
46
|
|
47
|
-
matches = @cmd.certificates_matching
|
47
|
+
matches = @cmd.certificates_matching ""
|
48
48
|
|
49
49
|
# HACK OpenSSL::X509::Certificate#== is Object#==, so do this the hard way
|
50
50
|
match = matches.next
|
@@ -64,7 +64,7 @@ class TestGemCommandsCertCommand < Gem::TestCase
|
|
64
64
|
@trust_dir.trust_cert PUBLIC_CERT
|
65
65
|
@trust_dir.trust_cert ALTERNATE_CERT
|
66
66
|
|
67
|
-
matches = @cmd.certificates_matching
|
67
|
+
matches = @cmd.certificates_matching "alternate"
|
68
68
|
|
69
69
|
match = matches.next
|
70
70
|
assert_equal ALTERNATE_CERT.to_pem, match.first.to_pem
|
@@ -91,7 +91,7 @@ class TestGemCommandsCertCommand < Gem::TestCase
|
|
91
91
|
end
|
92
92
|
|
93
93
|
def test_execute_add_twice
|
94
|
-
self.class.cert_path
|
94
|
+
self.class.cert_path "alternate"
|
95
95
|
|
96
96
|
@cmd.handle_options %W[
|
97
97
|
--add #{PUBLIC_CERT_FILE}
|
@@ -112,7 +112,7 @@ Added '/CN=alternate/DC=example'
|
|
112
112
|
end
|
113
113
|
|
114
114
|
def test_execute_build
|
115
|
-
passphrase =
|
115
|
+
passphrase = "Foo bar"
|
116
116
|
|
117
117
|
@cmd.handle_options %W[--build nobody@example.com]
|
118
118
|
|
@@ -139,12 +139,12 @@ Added '/CN=alternate/DC=example'
|
|
139
139
|
assert_empty output
|
140
140
|
assert_empty @build_ui.error
|
141
141
|
|
142
|
-
assert_path_exist File.join(@tempdir,
|
143
|
-
assert_path_exist File.join(@tempdir,
|
142
|
+
assert_path_exist File.join(@tempdir, "gem-private_key.pem")
|
143
|
+
assert_path_exist File.join(@tempdir, "gem-public_cert.pem")
|
144
144
|
end
|
145
145
|
|
146
146
|
def test_execute_build_key_algorithm_ec_key
|
147
|
-
passphrase =
|
147
|
+
passphrase = "Foo bar"
|
148
148
|
|
149
149
|
@cmd.handle_options %W[--build nobody@example.com --key-algorithm ec]
|
150
150
|
|
@@ -171,16 +171,16 @@ Added '/CN=alternate/DC=example'
|
|
171
171
|
assert_empty output
|
172
172
|
assert_empty @build_ui.error
|
173
173
|
|
174
|
-
assert_path_exist File.join(@tempdir,
|
174
|
+
assert_path_exist File.join(@tempdir, "gem-private_key.pem")
|
175
175
|
|
176
|
-
cert_path = File.join(@tempdir,
|
176
|
+
cert_path = File.join(@tempdir, "gem-public_cert.pem")
|
177
177
|
assert_path_exist cert_path
|
178
178
|
cert = OpenSSL::X509::Certificate.new(File.read(cert_path))
|
179
179
|
assert cert.public_key.is_a? OpenSSL::PKey::EC
|
180
180
|
end
|
181
181
|
|
182
182
|
def test_execute_build_bad_email_address
|
183
|
-
passphrase =
|
183
|
+
passphrase = "Foo bar"
|
184
184
|
email = "nobody@"
|
185
185
|
|
186
186
|
@cmd.handle_options %W[--build #{email}]
|
@@ -188,7 +188,6 @@ Added '/CN=alternate/DC=example'
|
|
188
188
|
@build_ui = Gem::MockGemUi.new "#{passphrase}\n#{passphrase}"
|
189
189
|
|
190
190
|
use_ui @build_ui do
|
191
|
-
|
192
191
|
e = assert_raise Gem::CommandLineError do
|
193
192
|
@cmd.execute
|
194
193
|
end
|
@@ -196,13 +195,13 @@ Added '/CN=alternate/DC=example'
|
|
196
195
|
assert_equal "Invalid email address #{email}",
|
197
196
|
e.message
|
198
197
|
|
199
|
-
assert_path_not_exist File.join(@tempdir,
|
200
|
-
assert_path_not_exist File.join(@tempdir,
|
198
|
+
assert_path_not_exist File.join(@tempdir, "gem-private_key.pem")
|
199
|
+
assert_path_not_exist File.join(@tempdir, "gem-public_cert.pem")
|
201
200
|
end
|
202
201
|
end
|
203
202
|
|
204
203
|
def test_execute_build_expiration_days
|
205
|
-
passphrase =
|
204
|
+
passphrase = "Foo bar"
|
206
205
|
|
207
206
|
@cmd.handle_options %W[
|
208
207
|
--build nobody@example.com
|
@@ -232,8 +231,8 @@ Added '/CN=alternate/DC=example'
|
|
232
231
|
assert_empty output
|
233
232
|
assert_empty @build_ui.error
|
234
233
|
|
235
|
-
assert_path_exist File.join(@tempdir,
|
236
|
-
assert_path_exist File.join(@tempdir,
|
234
|
+
assert_path_exist File.join(@tempdir, "gem-private_key.pem")
|
235
|
+
assert_path_exist File.join(@tempdir, "gem-public_cert.pem")
|
237
236
|
|
238
237
|
pem = File.read("#{@tempdir}/gem-public_cert.pem")
|
239
238
|
cert = OpenSSL::X509::Certificate.new(pem)
|
@@ -243,8 +242,8 @@ Added '/CN=alternate/DC=example'
|
|
243
242
|
end
|
244
243
|
|
245
244
|
def test_execute_build_bad_passphrase_confirmation
|
246
|
-
passphrase =
|
247
|
-
passphrase_confirmation =
|
245
|
+
passphrase = "Foo bar"
|
246
|
+
passphrase_confirmation = "Fu bar"
|
248
247
|
|
249
248
|
@cmd.handle_options %W[--build nobody@example.com]
|
250
249
|
|
@@ -266,11 +265,10 @@ Added '/CN=alternate/DC=example'
|
|
266
265
|
|
267
266
|
assert_equal "Passphrase and passphrase confirmation don't match",
|
268
267
|
e.message
|
269
|
-
|
270
268
|
end
|
271
269
|
|
272
|
-
assert_path_not_exist File.join(@tempdir,
|
273
|
-
assert_path_not_exist File.join(@tempdir,
|
270
|
+
assert_path_not_exist File.join(@tempdir, "gem-private_key.pem")
|
271
|
+
assert_path_not_exist File.join(@tempdir, "gem-public_cert.pem")
|
274
272
|
end
|
275
273
|
|
276
274
|
def test_execute_build_key
|
@@ -291,8 +289,8 @@ Added '/CN=alternate/DC=example'
|
|
291
289
|
assert_empty output
|
292
290
|
assert_empty @ui.error
|
293
291
|
|
294
|
-
assert_path_exist File.join(@tempdir,
|
295
|
-
assert_path_not_exist File.join(@tempdir,
|
292
|
+
assert_path_exist File.join(@tempdir, "gem-public_cert.pem")
|
293
|
+
assert_path_not_exist File.join(@tempdir, "gem-private_key.pem")
|
296
294
|
end
|
297
295
|
|
298
296
|
def test_execute_build_encrypted_key
|
@@ -313,7 +311,7 @@ Added '/CN=alternate/DC=example'
|
|
313
311
|
assert_empty output
|
314
312
|
assert_empty @ui.error
|
315
313
|
|
316
|
-
assert_path_exist File.join(@tempdir,
|
314
|
+
assert_path_exist File.join(@tempdir, "gem-public_cert.pem")
|
317
315
|
end
|
318
316
|
|
319
317
|
def test_execute_build_ec_key
|
@@ -334,8 +332,8 @@ Added '/CN=alternate/DC=example'
|
|
334
332
|
assert_empty output
|
335
333
|
assert_empty @ui.error
|
336
334
|
|
337
|
-
assert_path_exist File.join(@tempdir,
|
338
|
-
assert_path_not_exist File.join(@tempdir,
|
335
|
+
assert_path_exist File.join(@tempdir, "gem-public_cert.pem")
|
336
|
+
assert_path_not_exist File.join(@tempdir, "gem-private_key.pem")
|
339
337
|
end
|
340
338
|
|
341
339
|
def test_execute_certificate
|
@@ -343,8 +341,8 @@ Added '/CN=alternate/DC=example'
|
|
343
341
|
@cmd.handle_options %W[--certificate #{PUBLIC_CERT_FILE}]
|
344
342
|
end
|
345
343
|
|
346
|
-
assert_equal
|
347
|
-
assert_equal
|
344
|
+
assert_equal "", @ui.output
|
345
|
+
assert_equal "", @ui.error
|
348
346
|
|
349
347
|
assert_equal PUBLIC_CERT.to_pem, @cmd.options[:issuer_cert].to_pem
|
350
348
|
end
|
@@ -383,8 +381,8 @@ Added '/CN=alternate/DC=example'
|
|
383
381
|
@cmd.send :handle_options, %W[--private-key #{PRIVATE_KEY_FILE}]
|
384
382
|
end
|
385
383
|
|
386
|
-
assert_equal
|
387
|
-
assert_equal
|
384
|
+
assert_equal "", @ui.output
|
385
|
+
assert_equal "", @ui.error
|
388
386
|
|
389
387
|
assert_equal PRIVATE_KEY.to_pem, @cmd.options[:key].to_pem
|
390
388
|
end
|
@@ -394,8 +392,8 @@ Added '/CN=alternate/DC=example'
|
|
394
392
|
@cmd.send :handle_options, %W[--private-key #{ENCRYPTED_PRIVATE_KEY_PATH}]
|
395
393
|
end
|
396
394
|
|
397
|
-
assert_equal
|
398
|
-
assert_equal
|
395
|
+
assert_equal "", @ui.output
|
396
|
+
assert_equal "", @ui.error
|
399
397
|
|
400
398
|
assert_equal ENCRYPTED_PRIVATE_KEY.to_pem, @cmd.options[:key].to_pem
|
401
399
|
end
|
@@ -414,7 +412,7 @@ Added '/CN=alternate/DC=example'
|
|
414
412
|
end
|
415
413
|
|
416
414
|
assert_equal "Removed '/CN=nobody/DC=example'\n", @ui.output
|
417
|
-
assert_equal
|
415
|
+
assert_equal "", @ui.error
|
418
416
|
|
419
417
|
assert_path_not_exist cert_path
|
420
418
|
end
|
@@ -441,7 +439,7 @@ Removed '/CN=nobody/DC=example'
|
|
441
439
|
EXPECTED
|
442
440
|
|
443
441
|
assert_equal expected, @ui.output
|
444
|
-
assert_equal
|
442
|
+
assert_equal "", @ui.error
|
445
443
|
|
446
444
|
assert_path_not_exist public_path
|
447
445
|
assert_path_not_exist alternate_path
|
@@ -469,17 +467,17 @@ Removed '/CN=alternate/DC=example'
|
|
469
467
|
EXPECTED
|
470
468
|
|
471
469
|
assert_equal expected, @ui.output
|
472
|
-
assert_equal
|
470
|
+
assert_equal "", @ui.error
|
473
471
|
|
474
472
|
assert_path_not_exist public_path
|
475
473
|
assert_path_not_exist alternate_path
|
476
474
|
end
|
477
475
|
|
478
476
|
def test_execute_sign
|
479
|
-
path = File.join @tempdir,
|
477
|
+
path = File.join @tempdir, "cert.pem"
|
480
478
|
Gem::Security.write ALTERNATE_CERT, path, 0600
|
481
479
|
|
482
|
-
assert_equal
|
480
|
+
assert_equal "/CN=alternate/DC=example", ALTERNATE_CERT.issuer.to_s
|
483
481
|
|
484
482
|
@cmd.handle_options %W[
|
485
483
|
--private-key #{PRIVATE_KEY_FILE}
|
@@ -492,12 +490,12 @@ Removed '/CN=alternate/DC=example'
|
|
492
490
|
@cmd.execute
|
493
491
|
end
|
494
492
|
|
495
|
-
assert_equal
|
496
|
-
assert_equal
|
493
|
+
assert_equal "", @ui.output
|
494
|
+
assert_equal "", @ui.error
|
497
495
|
|
498
496
|
cert = OpenSSL::X509::Certificate.new File.read path
|
499
497
|
|
500
|
-
assert_equal
|
498
|
+
assert_equal "/CN=nobody/DC=example", cert.issuer.to_s
|
501
499
|
|
502
500
|
mask = 0100600 & (~File.umask)
|
503
501
|
|
@@ -505,10 +503,10 @@ Removed '/CN=alternate/DC=example'
|
|
505
503
|
end
|
506
504
|
|
507
505
|
def test_execute_sign_encrypted_key
|
508
|
-
path = File.join @tempdir,
|
506
|
+
path = File.join @tempdir, "cert.pem"
|
509
507
|
Gem::Security.write ALTERNATE_CERT, path, 0600
|
510
508
|
|
511
|
-
assert_equal
|
509
|
+
assert_equal "/CN=alternate/DC=example", ALTERNATE_CERT.issuer.to_s
|
512
510
|
|
513
511
|
@cmd.handle_options %W[
|
514
512
|
--private-key #{ENCRYPTED_PRIVATE_KEY_PATH}
|
@@ -521,12 +519,12 @@ Removed '/CN=alternate/DC=example'
|
|
521
519
|
@cmd.execute
|
522
520
|
end
|
523
521
|
|
524
|
-
assert_equal
|
525
|
-
assert_equal
|
522
|
+
assert_equal "", @ui.output
|
523
|
+
assert_equal "", @ui.error
|
526
524
|
|
527
525
|
cert = OpenSSL::X509::Certificate.new File.read path
|
528
526
|
|
529
|
-
assert_equal
|
527
|
+
assert_equal "/CN=nobody/DC=example", cert.issuer.to_s
|
530
528
|
|
531
529
|
mask = 0100600 & (~File.umask)
|
532
530
|
|
@@ -534,18 +532,18 @@ Removed '/CN=alternate/DC=example'
|
|
534
532
|
end
|
535
533
|
|
536
534
|
def test_execute_sign_default
|
537
|
-
FileUtils.mkdir_p File.join Gem.user_home,
|
535
|
+
FileUtils.mkdir_p File.join Gem.user_home, ".gem"
|
538
536
|
|
539
|
-
private_key_path = File.join Gem.user_home,
|
537
|
+
private_key_path = File.join Gem.user_home, ".gem", "gem-private_key.pem"
|
540
538
|
Gem::Security.write PRIVATE_KEY, private_key_path
|
541
539
|
|
542
|
-
public_cert_path = File.join Gem.user_home,
|
540
|
+
public_cert_path = File.join Gem.user_home, ".gem", "gem-public_cert.pem"
|
543
541
|
Gem::Security.write PUBLIC_CERT, public_cert_path
|
544
542
|
|
545
|
-
path = File.join @tempdir,
|
543
|
+
path = File.join @tempdir, "cert.pem"
|
546
544
|
Gem::Security.write ALTERNATE_CERT, path, 0600
|
547
545
|
|
548
|
-
assert_equal
|
546
|
+
assert_equal "/CN=alternate/DC=example", ALTERNATE_CERT.issuer.to_s
|
549
547
|
|
550
548
|
@cmd.handle_options %W[--sign #{path}]
|
551
549
|
|
@@ -553,12 +551,12 @@ Removed '/CN=alternate/DC=example'
|
|
553
551
|
@cmd.execute
|
554
552
|
end
|
555
553
|
|
556
|
-
assert_equal
|
557
|
-
assert_equal
|
554
|
+
assert_equal "", @ui.output
|
555
|
+
assert_equal "", @ui.error
|
558
556
|
|
559
557
|
cert = OpenSSL::X509::Certificate.new File.read path
|
560
558
|
|
561
|
-
assert_equal
|
559
|
+
assert_equal "/CN=nobody/DC=example", cert.issuer.to_s
|
562
560
|
|
563
561
|
mask = 0100600 & (~File.umask)
|
564
562
|
|
@@ -566,18 +564,18 @@ Removed '/CN=alternate/DC=example'
|
|
566
564
|
end
|
567
565
|
|
568
566
|
def test_execute_sign_default_encrypted_key
|
569
|
-
FileUtils.mkdir_p File.join(Gem.user_home,
|
567
|
+
FileUtils.mkdir_p File.join(Gem.user_home, ".gem")
|
570
568
|
|
571
|
-
private_key_path = File.join Gem.user_home,
|
569
|
+
private_key_path = File.join Gem.user_home, ".gem", "gem-private_key.pem"
|
572
570
|
Gem::Security.write ENCRYPTED_PRIVATE_KEY, private_key_path, 0600, PRIVATE_KEY_PASSPHRASE
|
573
571
|
|
574
|
-
public_cert_path = File.join Gem.user_home,
|
572
|
+
public_cert_path = File.join Gem.user_home, ".gem", "gem-public_cert.pem"
|
575
573
|
Gem::Security.write PUBLIC_CERT, public_cert_path
|
576
574
|
|
577
|
-
path = File.join @tempdir,
|
575
|
+
path = File.join @tempdir, "cert.pem"
|
578
576
|
Gem::Security.write ALTERNATE_CERT, path, 0600
|
579
577
|
|
580
|
-
assert_equal
|
578
|
+
assert_equal "/CN=alternate/DC=example", ALTERNATE_CERT.issuer.to_s
|
581
579
|
|
582
580
|
@cmd.handle_options %W[--sign #{path}]
|
583
581
|
|
@@ -585,12 +583,12 @@ Removed '/CN=alternate/DC=example'
|
|
585
583
|
@cmd.execute
|
586
584
|
end
|
587
585
|
|
588
|
-
assert_equal
|
589
|
-
assert_equal
|
586
|
+
assert_equal "", @ui.output
|
587
|
+
assert_equal "", @ui.error
|
590
588
|
|
591
589
|
cert = OpenSSL::X509::Certificate.new File.read path
|
592
590
|
|
593
|
-
assert_equal
|
591
|
+
assert_equal "/CN=nobody/DC=example", cert.issuer.to_s
|
594
592
|
|
595
593
|
mask = 0100600 & (~File.umask)
|
596
594
|
|
@@ -598,15 +596,15 @@ Removed '/CN=alternate/DC=example'
|
|
598
596
|
end
|
599
597
|
|
600
598
|
def test_execute_sign_no_cert
|
601
|
-
FileUtils.mkdir_p File.join Gem.user_home,
|
599
|
+
FileUtils.mkdir_p File.join Gem.user_home, ".gem"
|
602
600
|
|
603
|
-
private_key_path = File.join Gem.user_home,
|
601
|
+
private_key_path = File.join Gem.user_home, ".gem", "gem-private_key.pem"
|
604
602
|
Gem::Security.write PRIVATE_KEY, private_key_path
|
605
603
|
|
606
|
-
path = File.join @tempdir,
|
604
|
+
path = File.join @tempdir, "cert.pem"
|
607
605
|
Gem::Security.write ALTERNATE_CERT, path, 0600
|
608
606
|
|
609
|
-
assert_equal
|
607
|
+
assert_equal "/CN=alternate/DC=example", ALTERNATE_CERT.issuer.to_s
|
610
608
|
|
611
609
|
@cmd.handle_options %W[--sign #{path}]
|
612
610
|
|
@@ -616,7 +614,7 @@ Removed '/CN=alternate/DC=example'
|
|
616
614
|
end
|
617
615
|
end
|
618
616
|
|
619
|
-
assert_equal
|
617
|
+
assert_equal "", @ui.output
|
620
618
|
|
621
619
|
expected = <<-EXPECTED
|
622
620
|
ERROR: --certificate not specified and ~/.gem/gem-public_cert.pem does not exist
|
@@ -626,15 +624,15 @@ ERROR: --certificate not specified and ~/.gem/gem-public_cert.pem does not exis
|
|
626
624
|
end
|
627
625
|
|
628
626
|
def test_execute_sign_no_key
|
629
|
-
FileUtils.mkdir_p File.join Gem.user_home,
|
627
|
+
FileUtils.mkdir_p File.join Gem.user_home, ".gem"
|
630
628
|
|
631
|
-
public_cert_path = File.join Gem.user_home,
|
629
|
+
public_cert_path = File.join Gem.user_home, ".gem", "gem-public_cert.pem"
|
632
630
|
Gem::Security.write PUBLIC_CERT, public_cert_path
|
633
631
|
|
634
|
-
path = File.join @tempdir,
|
632
|
+
path = File.join @tempdir, "cert.pem"
|
635
633
|
Gem::Security.write ALTERNATE_CERT, path, 0600
|
636
634
|
|
637
|
-
assert_equal
|
635
|
+
assert_equal "/CN=alternate/DC=example", ALTERNATE_CERT.issuer.to_s
|
638
636
|
|
639
637
|
@cmd.handle_options %W[--sign #{path}]
|
640
638
|
|
@@ -644,7 +642,7 @@ ERROR: --certificate not specified and ~/.gem/gem-public_cert.pem does not exis
|
|
644
642
|
end
|
645
643
|
end
|
646
644
|
|
647
|
-
assert_equal
|
645
|
+
assert_equal "", @ui.output
|
648
646
|
|
649
647
|
expected = <<-EXPECTED
|
650
648
|
ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exist
|
@@ -657,10 +655,10 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
657
655
|
gem_path = File.join Gem.user_home, ".gem"
|
658
656
|
Dir.mkdir gem_path
|
659
657
|
|
660
|
-
path = File.join @tempdir,
|
658
|
+
path = File.join @tempdir, "cert.pem"
|
661
659
|
Gem::Security.write EXPIRED_PUBLIC_CERT, path, 0600
|
662
660
|
|
663
|
-
assert_equal
|
661
|
+
assert_equal "/CN=nobody/DC=example", EXPIRED_PUBLIC_CERT.issuer.to_s
|
664
662
|
|
665
663
|
tmp_expired_cert_file = File.join(Dir.tmpdir, File.basename(EXPIRED_PUBLIC_CERT_FILE))
|
666
664
|
@cleanup << tmp_expired_cert_file
|
@@ -682,17 +680,17 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
682
680
|
/INFO: Your certificate #{tmp_expired_cert_file} has been re-signed\nINFO: Your expired certificate will be located at: #{expected_path}\.[0-9]+/,
|
683
681
|
@ui.output
|
684
682
|
)
|
685
|
-
assert_equal
|
683
|
+
assert_equal "", @ui.error
|
686
684
|
end
|
687
685
|
|
688
686
|
def test_execute_re_sign_with_cert_expiration_length_days
|
689
687
|
gem_path = File.join Gem.user_home, ".gem"
|
690
688
|
Dir.mkdir gem_path
|
691
689
|
|
692
|
-
path = File.join @tempdir,
|
690
|
+
path = File.join @tempdir, "cert.pem"
|
693
691
|
Gem::Security.write EXPIRED_PUBLIC_CERT, path, 0600
|
694
692
|
|
695
|
-
assert_equal
|
693
|
+
assert_equal "/CN=nobody/DC=example", EXPIRED_PUBLIC_CERT.issuer.to_s
|
696
694
|
|
697
695
|
tmp_expired_cert_file = File.join(Dir.tmpdir, File.basename(EXPIRED_PUBLIC_CERT_FILE))
|
698
696
|
@cleanup << tmp_expired_cert_file
|
@@ -714,7 +712,7 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
714
712
|
cert_days_to_expire = (re_signed_cert.not_after - re_signed_cert.not_before).to_i / (24 * 60 * 60)
|
715
713
|
|
716
714
|
assert_equal(28, cert_days_to_expire)
|
717
|
-
assert_equal
|
715
|
+
assert_equal "", @ui.error
|
718
716
|
end
|
719
717
|
|
720
718
|
def test_handle_options
|
@@ -740,11 +738,11 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
740
738
|
assert_equal %w[nobody@example other@example],
|
741
739
|
@cmd.options[:build].map {|name| name.to_s }
|
742
740
|
|
743
|
-
assert_equal [
|
741
|
+
assert_equal ["", "example"], @cmd.options[:list]
|
744
742
|
end
|
745
743
|
|
746
744
|
def test_handle_options_add_bad
|
747
|
-
nonexistent = File.join @tempdir,
|
745
|
+
nonexistent = File.join @tempdir, "nonexistent"
|
748
746
|
e = assert_raise Gem::OptionParser::InvalidArgument do
|
749
747
|
@cmd.handle_options %W[--add #{nonexistent}]
|
750
748
|
end
|
@@ -752,7 +750,7 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
752
750
|
assert_equal "invalid argument: --add #{nonexistent}: does not exist",
|
753
751
|
e.message
|
754
752
|
|
755
|
-
bad = File.join @tempdir,
|
753
|
+
bad = File.join @tempdir, "bad"
|
756
754
|
FileUtils.touch bad
|
757
755
|
|
758
756
|
e = assert_raise Gem::OptionParser::InvalidArgument do
|
@@ -764,7 +762,7 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
764
762
|
end
|
765
763
|
|
766
764
|
def test_handle_options_certificate
|
767
|
-
nonexistent = File.join @tempdir,
|
765
|
+
nonexistent = File.join @tempdir, "nonexistent"
|
768
766
|
e = assert_raise Gem::OptionParser::InvalidArgument do
|
769
767
|
@cmd.handle_options %W[--certificate #{nonexistent}]
|
770
768
|
end
|
@@ -772,7 +770,7 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
772
770
|
assert_equal "invalid argument: --certificate #{nonexistent}: does not exist",
|
773
771
|
e.message
|
774
772
|
|
775
|
-
bad = File.join @tempdir,
|
773
|
+
bad = File.join @tempdir, "bad"
|
776
774
|
FileUtils.touch bad
|
777
775
|
|
778
776
|
e = assert_raise Gem::OptionParser::InvalidArgument do
|
@@ -785,7 +783,7 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
785
783
|
end
|
786
784
|
|
787
785
|
def test_handle_options_key_bad
|
788
|
-
nonexistent = File.join @tempdir,
|
786
|
+
nonexistent = File.join @tempdir, "nonexistent"
|
789
787
|
e = assert_raise Gem::OptionParser::InvalidArgument do
|
790
788
|
@cmd.handle_options %W[--private-key #{nonexistent}]
|
791
789
|
end
|
@@ -794,7 +792,7 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
794
792
|
"--private-key #{nonexistent}: does not exist",
|
795
793
|
e.message
|
796
794
|
|
797
|
-
bad = File.join @tempdir,
|
795
|
+
bad = File.join @tempdir, "bad"
|
798
796
|
FileUtils.touch bad
|
799
797
|
|
800
798
|
e = assert_raise Gem::OptionParser::InvalidArgument do
|
@@ -850,7 +848,7 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
850
848
|
end
|
851
849
|
|
852
850
|
def test_handle_options_sign_nonexistent
|
853
|
-
nonexistent = File.join @tempdir,
|
851
|
+
nonexistent = File.join @tempdir, "nonexistent"
|
854
852
|
e = assert_raise Gem::OptionParser::InvalidArgument do
|
855
853
|
@cmd.handle_options %W[
|
856
854
|
--private-key #{ALTERNATE_KEY_FILE}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require_relative
|
3
|
-
require
|
2
|
+
require_relative "helper"
|
3
|
+
require "rubygems/commands/check_command"
|
4
4
|
|
5
5
|
class TestGemCommandsCheckCommand < Gem::TestCase
|
6
6
|
def setup
|
@@ -45,8 +45,8 @@ class TestGemCommandsCheckCommand < Gem::TestCase
|
|
45
45
|
end
|
46
46
|
|
47
47
|
def test_doctor
|
48
|
-
gem
|
49
|
-
b = gem
|
48
|
+
gem "a"
|
49
|
+
b = gem "b"
|
50
50
|
|
51
51
|
FileUtils.rm b.spec_file
|
52
52
|
|