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,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require_relative
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
2
|
+
require_relative "helper"
|
3
|
+
require "rubygems"
|
4
|
+
require "rubygems/command"
|
5
|
+
require "rubygems/gemcutter_utilities"
|
6
6
|
|
7
7
|
class TestGemGemcutterUtilities < Gem::TestCase
|
8
8
|
def setup
|
@@ -13,17 +13,17 @@ class TestGemGemcutterUtilities < Gem::TestCase
|
|
13
13
|
# below needed for random testing, class property
|
14
14
|
Gem.configuration.disable_default_gem_server = nil
|
15
15
|
|
16
|
-
ENV[
|
17
|
-
ENV[
|
16
|
+
ENV["RUBYGEMS_HOST"] = nil
|
17
|
+
ENV["GEM_HOST_OTP_CODE"] = nil
|
18
18
|
Gem.configuration.rubygems_api_key = nil
|
19
19
|
|
20
|
-
@cmd = Gem::Command.new
|
20
|
+
@cmd = Gem::Command.new "", "summary"
|
21
21
|
@cmd.extend Gem::GemcutterUtilities
|
22
22
|
end
|
23
23
|
|
24
24
|
def teardown
|
25
|
-
ENV[
|
26
|
-
ENV[
|
25
|
+
ENV["RUBYGEMS_HOST"] = nil
|
26
|
+
ENV["GEM_HOST_OTP_CODE"] = nil
|
27
27
|
Gem.configuration.rubygems_api_key = nil
|
28
28
|
|
29
29
|
credential_teardown
|
@@ -33,11 +33,11 @@ class TestGemGemcutterUtilities < Gem::TestCase
|
|
33
33
|
|
34
34
|
def test_alternate_key_alternate_host
|
35
35
|
keys = {
|
36
|
-
:rubygems_api_key =>
|
36
|
+
:rubygems_api_key => "KEY",
|
37
37
|
"http://rubygems.engineyard.com" => "EYKEY",
|
38
38
|
}
|
39
39
|
|
40
|
-
File.open Gem.configuration.credentials_path,
|
40
|
+
File.open Gem.configuration.credentials_path, "w" do |f|
|
41
41
|
f.write keys.to_yaml
|
42
42
|
end
|
43
43
|
|
@@ -45,25 +45,25 @@ class TestGemGemcutterUtilities < Gem::TestCase
|
|
45
45
|
|
46
46
|
Gem.configuration.load_api_keys
|
47
47
|
|
48
|
-
assert_equal
|
48
|
+
assert_equal "EYKEY", @cmd.api_key
|
49
49
|
end
|
50
50
|
|
51
51
|
def test_api_key
|
52
|
-
keys = { :rubygems_api_key =>
|
52
|
+
keys = { :rubygems_api_key => "KEY" }
|
53
53
|
|
54
|
-
File.open Gem.configuration.credentials_path,
|
54
|
+
File.open Gem.configuration.credentials_path, "w" do |f|
|
55
55
|
f.write keys.to_yaml
|
56
56
|
end
|
57
57
|
|
58
58
|
Gem.configuration.load_api_keys
|
59
59
|
|
60
|
-
assert_equal
|
60
|
+
assert_equal "KEY", @cmd.api_key
|
61
61
|
end
|
62
62
|
|
63
63
|
def test_api_key_override
|
64
|
-
keys = { :rubygems_api_key =>
|
64
|
+
keys = { :rubygems_api_key => "KEY", :other => "OTHER" }
|
65
65
|
|
66
|
-
File.open Gem.configuration.credentials_path,
|
66
|
+
File.open Gem.configuration.credentials_path, "w" do |f|
|
67
67
|
f.write keys.to_yaml
|
68
68
|
end
|
69
69
|
|
@@ -72,28 +72,28 @@ class TestGemGemcutterUtilities < Gem::TestCase
|
|
72
72
|
@cmd.add_key_option
|
73
73
|
@cmd.handle_options %w[--key other]
|
74
74
|
|
75
|
-
assert_equal
|
75
|
+
assert_equal "OTHER", @cmd.api_key
|
76
76
|
end
|
77
77
|
|
78
78
|
def test_host
|
79
|
-
assert_equal
|
79
|
+
assert_equal "https://rubygems.org", @cmd.host
|
80
80
|
end
|
81
81
|
|
82
82
|
def test_host_RUBYGEMS_HOST
|
83
|
-
ENV[
|
83
|
+
ENV["RUBYGEMS_HOST"] = "https://other.example"
|
84
84
|
|
85
|
-
assert_equal
|
85
|
+
assert_equal "https://other.example", @cmd.host
|
86
86
|
end
|
87
87
|
|
88
88
|
def test_host_RUBYGEMS_HOST_empty
|
89
|
-
ENV[
|
89
|
+
ENV["RUBYGEMS_HOST"] = ""
|
90
90
|
|
91
|
-
assert_equal
|
91
|
+
assert_equal "https://rubygems.org", @cmd.host
|
92
92
|
end
|
93
93
|
|
94
94
|
def test_sign_in
|
95
|
-
api_key =
|
96
|
-
util_sign_in [api_key, 200,
|
95
|
+
api_key = "a5fdbb6ba150cbb83aad2bb2fede64cf040453903"
|
96
|
+
util_sign_in [api_key, 200, "OK"]
|
97
97
|
|
98
98
|
assert_match %r{Enter your RubyGems.org credentials.}, @sign_in_ui.output
|
99
99
|
assert @fetcher.last_request["authorization"]
|
@@ -104,9 +104,9 @@ class TestGemGemcutterUtilities < Gem::TestCase
|
|
104
104
|
end
|
105
105
|
|
106
106
|
def test_sign_in_with_host
|
107
|
-
api_key =
|
107
|
+
api_key = "a5fdbb6ba150cbb83aad2bb2fede64cf040453903"
|
108
108
|
|
109
|
-
util_sign_in [api_key, 200,
|
109
|
+
util_sign_in [api_key, 200, "OK"], "http://example.com", ["http://example.com"]
|
110
110
|
|
111
111
|
assert_match "Enter your http://example.com credentials.",
|
112
112
|
@sign_in_ui.output
|
@@ -114,13 +114,13 @@ class TestGemGemcutterUtilities < Gem::TestCase
|
|
114
114
|
assert_match %r{Signed in.}, @sign_in_ui.output
|
115
115
|
|
116
116
|
credentials = load_yaml_file Gem.configuration.credentials_path
|
117
|
-
assert_equal api_key, credentials[
|
117
|
+
assert_equal api_key, credentials["http://example.com"]
|
118
118
|
end
|
119
119
|
|
120
120
|
def test_sign_in_with_host_nil
|
121
|
-
api_key =
|
121
|
+
api_key = "a5fdbb6ba150cbb83aad2bb2fede64cf040453903"
|
122
122
|
|
123
|
-
util_sign_in [api_key, 200,
|
123
|
+
util_sign_in [api_key, 200, "OK"], nil, [nil]
|
124
124
|
|
125
125
|
assert_match "Enter your RubyGems.org credentials.",
|
126
126
|
@sign_in_ui.output
|
@@ -132,8 +132,8 @@ class TestGemGemcutterUtilities < Gem::TestCase
|
|
132
132
|
end
|
133
133
|
|
134
134
|
def test_sign_in_with_host_ENV
|
135
|
-
api_key =
|
136
|
-
util_sign_in [api_key, 200,
|
135
|
+
api_key = "a5fdbb6ba150cbb83aad2bb2fede64cf040453903"
|
136
|
+
util_sign_in [api_key, 200, "OK"], "http://example.com"
|
137
137
|
|
138
138
|
assert_match "Enter your http://example.com credentials.",
|
139
139
|
@sign_in_ui.output
|
@@ -141,35 +141,35 @@ class TestGemGemcutterUtilities < Gem::TestCase
|
|
141
141
|
assert_match %r{Signed in.}, @sign_in_ui.output
|
142
142
|
|
143
143
|
credentials = load_yaml_file Gem.configuration.credentials_path
|
144
|
-
assert_equal api_key, credentials[
|
144
|
+
assert_equal api_key, credentials["http://example.com"]
|
145
145
|
end
|
146
146
|
|
147
147
|
def test_sign_in_skips_with_existing_credentials
|
148
|
-
api_key =
|
148
|
+
api_key = "a5fdbb6ba150cbb83aad2bb2fede64cf040453903"
|
149
149
|
Gem.configuration.rubygems_api_key = api_key
|
150
150
|
|
151
|
-
util_sign_in [api_key, 200,
|
151
|
+
util_sign_in [api_key, 200, "OK"]
|
152
152
|
|
153
153
|
assert_equal "", @sign_in_ui.output
|
154
154
|
end
|
155
155
|
|
156
156
|
def test_sign_in_skips_with_key_override
|
157
|
-
api_key =
|
158
|
-
Gem.configuration.api_keys[:KEY] =
|
157
|
+
api_key = "a5fdbb6ba150cbb83aad2bb2fede64cf040453903"
|
158
|
+
Gem.configuration.api_keys[:KEY] = "other"
|
159
159
|
@cmd.options[:key] = :KEY
|
160
|
-
util_sign_in [api_key, 200,
|
160
|
+
util_sign_in [api_key, 200, "OK"]
|
161
161
|
|
162
162
|
assert_equal "", @sign_in_ui.output
|
163
163
|
end
|
164
164
|
|
165
165
|
def test_sign_in_with_other_credentials_doesnt_overwrite_other_keys
|
166
|
-
api_key =
|
167
|
-
other_api_key =
|
166
|
+
api_key = "a5fdbb6ba150cbb83aad2bb2fede64cf040453903"
|
167
|
+
other_api_key = "f46dbb18bb6a9c97cdc61b5b85c186a17403cdcbf"
|
168
168
|
|
169
|
-
File.open Gem.configuration.credentials_path,
|
169
|
+
File.open Gem.configuration.credentials_path, "w" do |f|
|
170
170
|
f.write Hash[:other_api_key, other_api_key].to_yaml
|
171
171
|
end
|
172
|
-
util_sign_in [api_key, 200,
|
172
|
+
util_sign_in [api_key, 200, "OK"]
|
173
173
|
|
174
174
|
assert_match %r{Enter your RubyGems.org credentials.}, @sign_in_ui.output
|
175
175
|
assert_match %r{Signed in.}, @sign_in_ui.output
|
@@ -181,7 +181,7 @@ class TestGemGemcutterUtilities < Gem::TestCase
|
|
181
181
|
|
182
182
|
def test_sign_in_with_bad_credentials
|
183
183
|
assert_raise Gem::MockGemUi::TermError do
|
184
|
-
util_sign_in [
|
184
|
+
util_sign_in ["Access Denied.", 403, "Forbidden"]
|
185
185
|
end
|
186
186
|
|
187
187
|
assert_match %r{Enter your RubyGems.org credentials.}, @sign_in_ui.output
|
@@ -189,50 +189,50 @@ class TestGemGemcutterUtilities < Gem::TestCase
|
|
189
189
|
end
|
190
190
|
|
191
191
|
def test_signin_with_env_otp_code
|
192
|
-
ENV[
|
193
|
-
api_key =
|
192
|
+
ENV["GEM_HOST_OTP_CODE"] = "111111"
|
193
|
+
api_key = "a5fdbb6ba150cbb83aad2bb2fede64cf040453903"
|
194
194
|
|
195
|
-
util_sign_in [api_key, 200,
|
195
|
+
util_sign_in [api_key, 200, "OK"]
|
196
196
|
|
197
|
-
assert_match
|
198
|
-
assert_equal
|
197
|
+
assert_match "Signed in with API key:", @sign_in_ui.output
|
198
|
+
assert_equal "111111", @fetcher.last_request["OTP"]
|
199
199
|
end
|
200
200
|
|
201
201
|
def test_sign_in_with_correct_otp_code
|
202
|
-
api_key =
|
202
|
+
api_key = "a5fdbb6ba150cbb83aad2bb2fede64cf040453903"
|
203
203
|
response_fail = "You have enabled multifactor authentication but your request doesn't have the correct OTP code. Please check it and retry."
|
204
204
|
|
205
205
|
util_sign_in(proc do
|
206
206
|
@call_count ||= 0
|
207
|
-
(@call_count += 1).odd? ? [response_fail, 401,
|
207
|
+
(@call_count += 1).odd? ? [response_fail, 401, "Unauthorized"] : [api_key, 200, "OK"]
|
208
208
|
end, nil, [], "111111\n")
|
209
209
|
|
210
|
-
assert_match
|
211
|
-
assert_match
|
212
|
-
assert_match
|
213
|
-
assert_equal
|
210
|
+
assert_match "You have enabled multi-factor authentication. Please enter OTP code.", @sign_in_ui.output
|
211
|
+
assert_match "Code: ", @sign_in_ui.output
|
212
|
+
assert_match "Signed in with API key:", @sign_in_ui.output
|
213
|
+
assert_equal "111111", @fetcher.last_request["OTP"]
|
214
214
|
end
|
215
215
|
|
216
216
|
def test_sign_in_with_incorrect_otp_code
|
217
217
|
response = "You have enabled multifactor authentication but your request doesn't have the correct OTP code. Please check it and retry."
|
218
218
|
|
219
219
|
assert_raise Gem::MockGemUi::TermError do
|
220
|
-
util_sign_in [response, 401,
|
220
|
+
util_sign_in [response, 401, "Unauthorized"], nil, [], "111111\n"
|
221
221
|
end
|
222
222
|
|
223
|
-
assert_match
|
224
|
-
assert_match
|
223
|
+
assert_match "You have enabled multi-factor authentication. Please enter OTP code.", @sign_in_ui.output
|
224
|
+
assert_match "Code: ", @sign_in_ui.output
|
225
225
|
assert_match response, @sign_in_ui.output
|
226
|
-
assert_equal
|
226
|
+
assert_equal "111111", @fetcher.last_request["OTP"]
|
227
227
|
end
|
228
228
|
|
229
|
-
def util_sign_in(response, host = nil, args = [], extra_input =
|
230
|
-
email =
|
231
|
-
password =
|
232
|
-
profile_response = [ "mfa: disabled\n" , 200,
|
229
|
+
def util_sign_in(response, host = nil, args = [], extra_input = "")
|
230
|
+
email = "you@example.com"
|
231
|
+
password = "secret"
|
232
|
+
profile_response = [ "mfa: disabled\n" , 200, "OK"]
|
233
233
|
|
234
234
|
if host
|
235
|
-
ENV[
|
235
|
+
ENV["RUBYGEMS_HOST"] = host
|
236
236
|
else
|
237
237
|
host = Gem.host
|
238
238
|
end
|
@@ -254,13 +254,13 @@ class TestGemGemcutterUtilities < Gem::TestCase
|
|
254
254
|
end
|
255
255
|
|
256
256
|
def test_verify_api_key
|
257
|
-
keys = { :other =>
|
258
|
-
File.open Gem.configuration.credentials_path,
|
257
|
+
keys = { :other => "a5fdbb6ba150cbb83aad2bb2fede64cf040453903" }
|
258
|
+
File.open Gem.configuration.credentials_path, "w" do |f|
|
259
259
|
f.write keys.to_yaml
|
260
260
|
end
|
261
261
|
Gem.configuration.load_api_keys
|
262
262
|
|
263
|
-
assert_equal
|
263
|
+
assert_equal "a5fdbb6ba150cbb83aad2bb2fede64cf040453903",
|
264
264
|
@cmd.verify_api_key(:other)
|
265
265
|
end
|
266
266
|
|
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require_relative
|
2
|
+
require_relative "helper"
|
3
3
|
|
4
4
|
class TestGemImpossibleDependenciesError < Gem::TestCase
|
5
5
|
def test_message_conflict
|
6
|
-
request = dependency_request dep(
|
6
|
+
request = dependency_request dep("net-ssh", ">= 2.0.13"), "rye", "0.9.8"
|
7
7
|
|
8
8
|
conflicts = []
|
9
9
|
|
@@ -11,9 +11,9 @@ class TestGemImpossibleDependenciesError < Gem::TestCase
|
|
11
11
|
# requested-by entries, but they are suitable for testing the message.
|
12
12
|
# See #485 to construct a correct conflict.
|
13
13
|
net_ssh_2_2_2 =
|
14
|
-
dependency_request dep(
|
14
|
+
dependency_request dep("net-ssh", ">= 2.6.5"), "net-ssh", "2.2.2", request
|
15
15
|
net_ssh_2_6_5 =
|
16
|
-
dependency_request dep(
|
16
|
+
dependency_request dep("net-ssh", "~> 2.2.2"), "net-ssh", "2.6.5", request
|
17
17
|
|
18
18
|
conflict1 = Gem::Resolver::Conflict.new \
|
19
19
|
net_ssh_2_6_5, net_ssh_2_6_5.requester
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require_relative
|
3
|
-
require
|
2
|
+
require_relative "helper"
|
3
|
+
require "rubygems/indexer"
|
4
4
|
|
5
5
|
class TestGemIndexer < Gem::TestCase
|
6
6
|
def setup
|
@@ -8,25 +8,25 @@ class TestGemIndexer < Gem::TestCase
|
|
8
8
|
|
9
9
|
util_make_gems
|
10
10
|
|
11
|
-
@d2_0 = util_spec
|
11
|
+
@d2_0 = util_spec "d", "2.0" do |s|
|
12
12
|
s.date = Gem::Specification::TODAY - 86400 * 3
|
13
13
|
end
|
14
14
|
util_build_gem @d2_0
|
15
15
|
|
16
|
-
@d2_0_a = util_spec
|
16
|
+
@d2_0_a = util_spec "d", "2.0.a"
|
17
17
|
util_build_gem @d2_0_a
|
18
18
|
|
19
|
-
@d2_0_b = util_spec
|
19
|
+
@d2_0_b = util_spec "d", "2.0.b"
|
20
20
|
util_build_gem @d2_0_b
|
21
21
|
|
22
|
-
@default = new_default_spec
|
22
|
+
@default = new_default_spec "default", 2
|
23
23
|
install_default_gems @default
|
24
24
|
|
25
|
-
@indexerdir = File.join(@tempdir,
|
25
|
+
@indexerdir = File.join(@tempdir, "indexer")
|
26
26
|
|
27
|
-
gems = File.join(@indexerdir,
|
27
|
+
gems = File.join(@indexerdir, "gems")
|
28
28
|
FileUtils.mkdir_p gems
|
29
|
-
FileUtils.mv Dir[File.join(@gemhome, "cache",
|
29
|
+
FileUtils.mv Dir[File.join(@gemhome, "cache", "*.gem")], gems
|
30
30
|
|
31
31
|
@indexer = Gem::Indexer.new(@indexerdir)
|
32
32
|
end
|
@@ -79,7 +79,7 @@ class TestGemIndexer < Gem::TestCase
|
|
79
79
|
["pl", Gem::Version.new("1"), "i386-linux"],
|
80
80
|
["x", Gem::Version.new("1"), "ruby"]]
|
81
81
|
|
82
|
-
assert_equal expected, latest_specs,
|
82
|
+
assert_equal expected, latest_specs, "latest_specs"
|
83
83
|
end
|
84
84
|
|
85
85
|
def test_generate_index
|
@@ -87,7 +87,7 @@ class TestGemIndexer < Gem::TestCase
|
|
87
87
|
@indexer.generate_index
|
88
88
|
end
|
89
89
|
|
90
|
-
quickdir = File.join @indexerdir,
|
90
|
+
quickdir = File.join @indexerdir, "quick"
|
91
91
|
marshal_quickdir = File.join quickdir, "Marshal.#{@marshal_version}"
|
92
92
|
|
93
93
|
assert_directory_exists quickdir
|
@@ -114,15 +114,15 @@ class TestGemIndexer < Gem::TestCase
|
|
114
114
|
@indexer.generate_index
|
115
115
|
end
|
116
116
|
|
117
|
-
refute_indexed @indexerdir,
|
118
|
-
refute_indexed @indexerdir,
|
117
|
+
refute_indexed @indexerdir, "yaml"
|
118
|
+
refute_indexed @indexerdir, "yaml.Z"
|
119
119
|
refute_indexed @indexerdir, "Marshal.#{@marshal_version}"
|
120
120
|
refute_indexed @indexerdir, "Marshal.#{@marshal_version}.Z"
|
121
121
|
|
122
|
-
quickdir = File.join @indexerdir,
|
122
|
+
quickdir = File.join @indexerdir, "quick"
|
123
123
|
marshal_quickdir = File.join quickdir, "Marshal.#{@marshal_version}"
|
124
124
|
|
125
|
-
assert_directory_exists quickdir,
|
125
|
+
assert_directory_exists quickdir, "quickdir should be directory"
|
126
126
|
assert_directory_exists marshal_quickdir
|
127
127
|
|
128
128
|
refute_indexed quickdir, "index"
|
@@ -165,7 +165,7 @@ class TestGemIndexer < Gem::TestCase
|
|
165
165
|
use_ui @ui do
|
166
166
|
@indexer.generate_index
|
167
167
|
end
|
168
|
-
quickdir = File.join @indexerdir,
|
168
|
+
quickdir = File.join @indexerdir, "quick"
|
169
169
|
marshal_quickdir = File.join quickdir, "Marshal.#{@marshal_version}"
|
170
170
|
|
171
171
|
assert_directory_exists quickdir
|
@@ -196,7 +196,7 @@ class TestGemIndexer < Gem::TestCase
|
|
196
196
|
assert_match %r{^Complete$}, @ui.output
|
197
197
|
assert_match %r{^Compressing indices$}, @ui.output
|
198
198
|
|
199
|
-
assert_equal
|
199
|
+
assert_equal "", @ui.error
|
200
200
|
end
|
201
201
|
|
202
202
|
def test_generate_index_specs
|
@@ -210,30 +210,30 @@ class TestGemIndexer < Gem::TestCase
|
|
210
210
|
specs = Marshal.load specs_dump
|
211
211
|
|
212
212
|
expected = [
|
213
|
-
[
|
214
|
-
[
|
215
|
-
[
|
216
|
-
[
|
217
|
-
[
|
218
|
-
[
|
219
|
-
[
|
220
|
-
[
|
221
|
-
[
|
213
|
+
["a", Gem::Version.new(1), "ruby"],
|
214
|
+
["a", Gem::Version.new(2), "ruby"],
|
215
|
+
["a_evil", Gem::Version.new(9), "ruby"],
|
216
|
+
["b", Gem::Version.new(2), "ruby"],
|
217
|
+
["c", Gem::Version.new("1.2"), "ruby"],
|
218
|
+
["d", Gem::Version.new("2.0"), "ruby"],
|
219
|
+
["dep_x", Gem::Version.new(1), "ruby"],
|
220
|
+
["pl", Gem::Version.new(1), "i386-linux"],
|
221
|
+
["x", Gem::Version.new(1), "ruby"],
|
222
222
|
]
|
223
223
|
|
224
224
|
assert_equal expected, specs
|
225
225
|
|
226
226
|
assert_same specs[0].first, specs[1].first,
|
227
|
-
|
227
|
+
"identical names not identical"
|
228
228
|
|
229
229
|
assert_same specs[0][1], specs[-1][1],
|
230
|
-
|
230
|
+
"identical versions not identical"
|
231
231
|
|
232
232
|
assert_same specs[0].last, specs[1].last,
|
233
|
-
|
233
|
+
"identical platforms not identical"
|
234
234
|
|
235
235
|
refute_same specs[1][1], specs[5][1],
|
236
|
-
|
236
|
+
"different versions not different"
|
237
237
|
end
|
238
238
|
|
239
239
|
def test_generate_index_latest_specs
|
@@ -247,23 +247,23 @@ class TestGemIndexer < Gem::TestCase
|
|
247
247
|
latest_specs = Marshal.load latest_specs_dump
|
248
248
|
|
249
249
|
expected = [
|
250
|
-
[
|
251
|
-
[
|
252
|
-
[
|
253
|
-
[
|
254
|
-
[
|
255
|
-
[
|
256
|
-
[
|
257
|
-
[
|
250
|
+
["a", Gem::Version.new(2), "ruby"],
|
251
|
+
["a_evil", Gem::Version.new(9), "ruby"],
|
252
|
+
["b", Gem::Version.new(2), "ruby"],
|
253
|
+
["c", Gem::Version.new("1.2"), "ruby"],
|
254
|
+
["d", Gem::Version.new("2.0"), "ruby"],
|
255
|
+
["dep_x", Gem::Version.new(1), "ruby"],
|
256
|
+
["pl", Gem::Version.new(1), "i386-linux"],
|
257
|
+
["x", Gem::Version.new(1), "ruby"],
|
258
258
|
]
|
259
259
|
|
260
260
|
assert_equal expected, latest_specs
|
261
261
|
|
262
262
|
assert_same latest_specs[0][1], latest_specs[2][1],
|
263
|
-
|
263
|
+
"identical versions not identical"
|
264
264
|
|
265
265
|
assert_same latest_specs[0].last, latest_specs[1].last,
|
266
|
-
|
266
|
+
"identical platforms not identical"
|
267
267
|
end
|
268
268
|
|
269
269
|
def test_generate_index_prerelease_specs
|
@@ -276,9 +276,9 @@ class TestGemIndexer < Gem::TestCase
|
|
276
276
|
prerelease_specs_dump = Gem.read_binary prerelease_specs_path
|
277
277
|
prerelease_specs = Marshal.load prerelease_specs_dump
|
278
278
|
|
279
|
-
assert_equal [[
|
280
|
-
[
|
281
|
-
[
|
279
|
+
assert_equal [["a", Gem::Version.new("3.a"), "ruby"],
|
280
|
+
["d", Gem::Version.new("2.0.a"), "ruby"],
|
281
|
+
["d", Gem::Version.new("2.0.b"), "ruby"]],
|
282
282
|
prerelease_specs
|
283
283
|
end
|
284
284
|
|
@@ -288,7 +288,7 @@ class TestGemIndexer < Gem::TestCase
|
|
288
288
|
def with_system_gems
|
289
289
|
Gem::Specification.reset
|
290
290
|
|
291
|
-
sys_gem = util_spec
|
291
|
+
sys_gem = util_spec "systemgem", "1.0"
|
292
292
|
util_build_gem sys_gem
|
293
293
|
install_default_gems sys_gem
|
294
294
|
yield
|
@@ -300,21 +300,21 @@ class TestGemIndexer < Gem::TestCase
|
|
300
300
|
@indexer.generate_index
|
301
301
|
end
|
302
302
|
|
303
|
-
quickdir = File.join @indexerdir,
|
303
|
+
quickdir = File.join @indexerdir, "quick"
|
304
304
|
marshal_quickdir = File.join quickdir, "Marshal.#{@marshal_version}"
|
305
305
|
|
306
306
|
assert_directory_exists quickdir
|
307
307
|
assert_directory_exists marshal_quickdir
|
308
308
|
|
309
|
-
@d2_1 = util_spec
|
309
|
+
@d2_1 = util_spec "d", "2.1"
|
310
310
|
util_build_gem @d2_1
|
311
311
|
@d2_1_tuple = [@d2_1.name, @d2_1.version, @d2_1.original_platform]
|
312
312
|
|
313
|
-
@d2_1_a = util_spec
|
313
|
+
@d2_1_a = util_spec "d", "2.2.a"
|
314
314
|
util_build_gem @d2_1_a
|
315
315
|
@d2_1_a_tuple = [@d2_1_a.name, @d2_1_a.version, @d2_1_a.original_platform]
|
316
316
|
|
317
|
-
gems = File.join @indexerdir,
|
317
|
+
gems = File.join @indexerdir, "gems"
|
318
318
|
|
319
319
|
FileUtils.mv @d2_1.cache_file, gems
|
320
320
|
FileUtils.mv @d2_1_a.cache_file, gems
|
@@ -1,14 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require_relative
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
2
|
+
require_relative "installer_test_case"
|
3
|
+
require "rubygems/install_update_options"
|
4
|
+
require "rubygems/command"
|
5
|
+
require "rubygems/dependency_installer"
|
6
6
|
|
7
7
|
class TestGemInstallUpdateOptions < Gem::InstallerTestCase
|
8
8
|
def setup
|
9
9
|
super
|
10
10
|
|
11
|
-
@cmd = Gem::Command.new
|
11
|
+
@cmd = Gem::Command.new "dummy", "dummy",
|
12
12
|
Gem::DependencyInstaller::DEFAULT_OPTIONS
|
13
13
|
@cmd.extend Gem::InstallUpdateOptions
|
14
14
|
@cmd.add_install_update_options
|
@@ -38,7 +38,7 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
|
|
38
38
|
def test_build_root
|
39
39
|
@cmd.handle_options %w[--build-root build_root]
|
40
40
|
|
41
|
-
assert_equal File.expand_path(
|
41
|
+
assert_equal File.expand_path("build_root"), @cmd.options[:build_root]
|
42
42
|
end
|
43
43
|
|
44
44
|
def test_doc
|
@@ -92,7 +92,7 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
|
|
92
92
|
end
|
93
93
|
|
94
94
|
def test_security_policy
|
95
|
-
pend
|
95
|
+
pend "openssl is missing" unless Gem::HAVE_OPENSSL
|
96
96
|
|
97
97
|
@cmd.handle_options %w[-P HighSecurity]
|
98
98
|
|
@@ -100,7 +100,7 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
|
|
100
100
|
end
|
101
101
|
|
102
102
|
def test_security_policy_unknown
|
103
|
-
pend
|
103
|
+
pend "openssl is missing" unless Gem::HAVE_OPENSSL
|
104
104
|
|
105
105
|
@cmd.add_install_update_options
|
106
106
|
|
@@ -111,7 +111,7 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
|
|
111
111
|
end
|
112
112
|
|
113
113
|
def test_user_install_enabled
|
114
|
-
@spec = quick_gem
|
114
|
+
@spec = quick_gem "a" do |spec|
|
115
115
|
util_make_exec spec
|
116
116
|
end
|
117
117
|
|
@@ -124,12 +124,12 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
|
|
124
124
|
|
125
125
|
@installer = Gem::Installer.at @gem, @cmd.options
|
126
126
|
@installer.install
|
127
|
-
assert_path_exist File.join(Gem.user_dir,
|
128
|
-
assert_path_exist File.join(Gem.user_dir,
|
127
|
+
assert_path_exist File.join(Gem.user_dir, "gems")
|
128
|
+
assert_path_exist File.join(Gem.user_dir, "gems", @spec.full_name)
|
129
129
|
end
|
130
130
|
|
131
131
|
def test_user_install_disabled_read_only
|
132
|
-
@spec = quick_gem
|
132
|
+
@spec = quick_gem "a" do |spec|
|
133
133
|
util_make_exec spec
|
134
134
|
end
|
135
135
|
|
@@ -137,9 +137,9 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
|
|
137
137
|
@gem = @spec.cache_file
|
138
138
|
|
139
139
|
if win_platform?
|
140
|
-
pend(
|
140
|
+
pend("test_user_install_disabled_read_only test skipped on MS Windows")
|
141
141
|
elsif Process.uid.zero?
|
142
|
-
pend(
|
142
|
+
pend("test_user_install_disabled_read_only test skipped in root privilege")
|
143
143
|
else
|
144
144
|
@cmd.handle_options %w[--no-user-install]
|
145
145
|
|
@@ -159,7 +159,7 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
|
|
159
159
|
end
|
160
160
|
|
161
161
|
def test_vendor
|
162
|
-
vendordir(File.join(@tempdir,
|
162
|
+
vendordir(File.join(@tempdir, "vendor")) do
|
163
163
|
@cmd.handle_options %w[--vendor]
|
164
164
|
|
165
165
|
assert @cmd.options[:vendor]
|
@@ -173,7 +173,7 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
|
|
173
173
|
@cmd.handle_options %w[--vendor]
|
174
174
|
end
|
175
175
|
|
176
|
-
assert_equal
|
176
|
+
assert_equal "invalid option: --vendor your platform is not supported",
|
177
177
|
e.message
|
178
178
|
|
179
179
|
refute @cmd.options[:vendor]
|