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,18 +1,18 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require_relative
|
2
|
+
require_relative "helper"
|
3
3
|
|
4
4
|
unless Gem::HAVE_OPENSSL
|
5
|
-
warn
|
5
|
+
warn "Skipping Gem::Security::Signer tests. openssl not found."
|
6
6
|
end
|
7
7
|
|
8
8
|
class TestGemSecuritySigner < Gem::TestCase
|
9
|
-
ALTERNATE_KEY = load_key
|
10
|
-
CHILD_KEY = load_key
|
11
|
-
GRANDCHILD_KEY = load_key
|
9
|
+
ALTERNATE_KEY = load_key "alternate"
|
10
|
+
CHILD_KEY = load_key "child"
|
11
|
+
GRANDCHILD_KEY = load_key "grandchild"
|
12
12
|
|
13
|
-
CHILD_CERT = load_cert
|
14
|
-
GRANDCHILD_CERT = load_cert
|
15
|
-
EXPIRED_CERT = load_cert
|
13
|
+
CHILD_CERT = load_cert "child"
|
14
|
+
GRANDCHILD_CERT = load_cert "grandchild"
|
15
|
+
EXPIRED_CERT = load_cert "expired"
|
16
16
|
|
17
17
|
def setup
|
18
18
|
super
|
@@ -42,7 +42,7 @@ class TestGemSecuritySigner < Gem::TestCase
|
|
42
42
|
|
43
43
|
def test_initialize_cert_chain_invalid
|
44
44
|
assert_raise OpenSSL::X509::CertificateError do
|
45
|
-
Gem::Security::Signer.new nil, [
|
45
|
+
Gem::Security::Signer.new nil, ["garbage"]
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
@@ -54,12 +54,12 @@ class TestGemSecuritySigner < Gem::TestCase
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def test_initialize_default
|
57
|
-
FileUtils.mkdir_p File.join(Gem.user_home,
|
57
|
+
FileUtils.mkdir_p File.join(Gem.user_home, ".gem")
|
58
58
|
|
59
|
-
private_key_path = File.join Gem.user_home,
|
59
|
+
private_key_path = File.join Gem.user_home, ".gem", "gem-private_key.pem"
|
60
60
|
Gem::Security.write PRIVATE_KEY, private_key_path
|
61
61
|
|
62
|
-
public_cert_path = File.join Gem.user_home,
|
62
|
+
public_cert_path = File.join Gem.user_home, ".gem", "gem-public_cert.pem"
|
63
63
|
Gem::Security.write PUBLIC_CERT, public_cert_path
|
64
64
|
|
65
65
|
signer = Gem::Security::Signer.new nil, nil
|
@@ -87,7 +87,7 @@ class TestGemSecuritySigner < Gem::TestCase
|
|
87
87
|
def test_extract_name
|
88
88
|
signer = Gem::Security::Signer.new nil, nil
|
89
89
|
|
90
|
-
assert_equal
|
90
|
+
assert_equal "child@example", signer.extract_name(CHILD_CERT)
|
91
91
|
end
|
92
92
|
|
93
93
|
def test_load_cert_chain
|
@@ -117,7 +117,7 @@ class TestGemSecuritySigner < Gem::TestCase
|
|
117
117
|
def test_sign
|
118
118
|
signer = Gem::Security::Signer.new PRIVATE_KEY, [PUBLIC_CERT]
|
119
119
|
|
120
|
-
signature = signer.sign
|
120
|
+
signature = signer.sign "hello"
|
121
121
|
|
122
122
|
expected = <<-EXPECTED
|
123
123
|
cHze2sEfRysoUMCfGVAx/7o8jxj5liJJ2ptNxe2jf3l+EZvyjdqpXo9Ndzxx
|
@@ -128,14 +128,14 @@ qhlqFP4jR6zXFeyBCOr0KpTiWBNuxBFXDsxmhGyt2BOIjD6qmKn7RSIfYg/U
|
|
128
128
|
toqvglr0kdbknSRRjBVLK6tsgr07aLT9gNP7mTW2PA==
|
129
129
|
EXPECTED
|
130
130
|
|
131
|
-
assert_equal expected, [signature].pack(
|
131
|
+
assert_equal expected, [signature].pack("m")
|
132
132
|
end
|
133
133
|
|
134
134
|
def test_sign_expired
|
135
135
|
signer = Gem::Security::Signer.new PRIVATE_KEY, [EXPIRED_CERT]
|
136
136
|
|
137
137
|
e = assert_raise Gem::Security::Exception do
|
138
|
-
signer.sign
|
138
|
+
signer.sign "hello"
|
139
139
|
end
|
140
140
|
|
141
141
|
assert_match "certificate /CN=nobody/DC=example not valid after 1970-01-01 00:00:00 UTC", e.message
|
@@ -143,17 +143,17 @@ toqvglr0kdbknSRRjBVLK6tsgr07aLT9gNP7mTW2PA==
|
|
143
143
|
|
144
144
|
def test_sign_expired_auto_update
|
145
145
|
pend if Gem.java_platform?
|
146
|
-
FileUtils.mkdir_p File.join(Gem.user_home,
|
146
|
+
FileUtils.mkdir_p File.join(Gem.user_home, ".gem"), :mode => 0700
|
147
147
|
|
148
|
-
private_key_path = File.join(Gem.user_home,
|
148
|
+
private_key_path = File.join(Gem.user_home, ".gem", "gem-private_key.pem")
|
149
149
|
Gem::Security.write PRIVATE_KEY, private_key_path
|
150
150
|
|
151
|
-
cert_path = File.join Gem.user_home,
|
151
|
+
cert_path = File.join Gem.user_home, ".gem", "gem-public_cert.pem"
|
152
152
|
Gem::Security.write EXPIRED_CERT, cert_path
|
153
153
|
|
154
154
|
signer = Gem::Security::Signer.new PRIVATE_KEY, [EXPIRED_CERT]
|
155
155
|
|
156
|
-
signer.sign
|
156
|
+
signer.sign "hello"
|
157
157
|
|
158
158
|
cert = OpenSSL::X509::Certificate.new File.read cert_path
|
159
159
|
|
@@ -163,14 +163,14 @@ toqvglr0kdbknSRRjBVLK6tsgr07aLT9gNP7mTW2PA==
|
|
163
163
|
expiry = EXPIRED_CERT.not_after.strftime "%Y%m%d%H%M%S"
|
164
164
|
|
165
165
|
expired_path =
|
166
|
-
File.join Gem.user_home,
|
166
|
+
File.join Gem.user_home, ".gem", "gem-public_cert.pem.expired.#{expiry}"
|
167
167
|
|
168
168
|
assert_path_exist expired_path
|
169
169
|
assert_equal EXPIRED_CERT.to_pem, File.read(expired_path)
|
170
170
|
end
|
171
171
|
|
172
172
|
def test_sign_expired_auto_update_exists
|
173
|
-
FileUtils.mkdir_p File.join(Gem.user_home,
|
173
|
+
FileUtils.mkdir_p File.join(Gem.user_home, ".gem"), :mode => 0700
|
174
174
|
|
175
175
|
expiry = EXPIRED_CERT.not_after.strftime "%Y%m%d%H%M%S"
|
176
176
|
expired_path =
|
@@ -178,16 +178,16 @@ toqvglr0kdbknSRRjBVLK6tsgr07aLT9gNP7mTW2PA==
|
|
178
178
|
|
179
179
|
Gem::Security.write EXPIRED_CERT, expired_path
|
180
180
|
|
181
|
-
private_key_path = File.join(Gem.user_home,
|
181
|
+
private_key_path = File.join(Gem.user_home, "gem-private_key.pem")
|
182
182
|
Gem::Security.write PRIVATE_KEY, private_key_path
|
183
183
|
|
184
|
-
cert_path = File.join Gem.user_home,
|
184
|
+
cert_path = File.join Gem.user_home, "gem-public_cert.pem"
|
185
185
|
Gem::Security.write EXPIRED_CERT, cert_path
|
186
186
|
|
187
187
|
signer = Gem::Security::Signer.new PRIVATE_KEY, [EXPIRED_CERT]
|
188
188
|
|
189
189
|
e = assert_raise Gem::Security::Exception do
|
190
|
-
signer.sign
|
190
|
+
signer.sign "hello"
|
191
191
|
end
|
192
192
|
|
193
193
|
assert_match %r{certificate /CN=nobody/DC=example not valid}, e.message
|
@@ -196,14 +196,14 @@ toqvglr0kdbknSRRjBVLK6tsgr07aLT9gNP7mTW2PA==
|
|
196
196
|
def test_sign_no_key
|
197
197
|
signer = Gem::Security::Signer.new nil, nil
|
198
198
|
|
199
|
-
assert_nil signer.sign
|
199
|
+
assert_nil signer.sign "stuff"
|
200
200
|
end
|
201
201
|
|
202
202
|
def test_sign_wrong_key
|
203
203
|
signer = Gem::Security::Signer.new ALTERNATE_KEY, [PUBLIC_CERT]
|
204
204
|
|
205
205
|
assert_raise Gem::Security::Exception do
|
206
|
-
signer.sign
|
206
|
+
signer.sign "hello"
|
207
207
|
end
|
208
208
|
end
|
209
209
|
|
@@ -211,7 +211,7 @@ toqvglr0kdbknSRRjBVLK6tsgr07aLT9gNP7mTW2PA==
|
|
211
211
|
signer = Gem::Security::Signer.new ALTERNATE_KEY, []
|
212
212
|
|
213
213
|
assert_raise Gem::Security::Exception do
|
214
|
-
signer.sign
|
214
|
+
signer.sign "hello"
|
215
215
|
end
|
216
216
|
end
|
217
217
|
end if Gem::HAVE_OPENSSL
|
@@ -1,17 +1,17 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require_relative
|
2
|
+
require_relative "helper"
|
3
3
|
|
4
4
|
unless Gem::HAVE_OPENSSL
|
5
|
-
warn
|
5
|
+
warn "Skipping Gem::Security::TrustDir tests. openssl not found."
|
6
6
|
end
|
7
7
|
|
8
8
|
class TestGemSecurityTrustDir < Gem::TestCase
|
9
|
-
CHILD_CERT = load_cert
|
9
|
+
CHILD_CERT = load_cert "child"
|
10
10
|
|
11
11
|
def setup
|
12
12
|
super
|
13
13
|
|
14
|
-
@dest_dir = File.join @tempdir,
|
14
|
+
@dest_dir = File.join @tempdir, "trust"
|
15
15
|
|
16
16
|
@trust_dir = Gem::Security::TrustDir.new @dest_dir
|
17
17
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require_relative
|
3
|
-
require
|
4
|
-
require
|
2
|
+
require_relative "helper"
|
3
|
+
require "rubygems/user_interaction"
|
4
|
+
require "timeout"
|
5
5
|
|
6
6
|
class TestGemSilentUI < Gem::TestCase
|
7
7
|
def setup
|
@@ -18,28 +18,28 @@ class TestGemSilentUI < Gem::TestCase
|
|
18
18
|
value = nil
|
19
19
|
out, err = capture_output do
|
20
20
|
use_ui @sui do
|
21
|
-
value = @sui.ask
|
21
|
+
value = @sui.ask "Problem?"
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
-
assert_empty out,
|
26
|
-
assert_empty err,
|
25
|
+
assert_empty out, "No output"
|
26
|
+
assert_empty err, "No output"
|
27
27
|
|
28
|
-
assert_nil value,
|
28
|
+
assert_nil value, "No value"
|
29
29
|
end
|
30
30
|
|
31
31
|
def test_ask_for_password
|
32
32
|
value = nil
|
33
33
|
out, err = capture_output do
|
34
34
|
use_ui @sui do
|
35
|
-
value = @sui.ask_for_password
|
35
|
+
value = @sui.ask_for_password "Problem?"
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
-
assert_empty out,
|
40
|
-
assert_empty err,
|
39
|
+
assert_empty out, "No output"
|
40
|
+
assert_empty err, "No output"
|
41
41
|
|
42
|
-
assert_nil value,
|
42
|
+
assert_nil value, "No value"
|
43
43
|
end
|
44
44
|
|
45
45
|
def test_ask_yes_no
|
@@ -47,70 +47,76 @@ class TestGemSilentUI < Gem::TestCase
|
|
47
47
|
out, err = capture_output do
|
48
48
|
use_ui @sui do
|
49
49
|
assert_raise(Gem::OperationNotSupportedError) do
|
50
|
-
@sui.ask_yes_no
|
50
|
+
@sui.ask_yes_no "Problem?"
|
51
51
|
end
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
|
-
assert_empty out,
|
56
|
-
assert_empty err,
|
55
|
+
assert_empty out, "No output"
|
56
|
+
assert_empty err, "No output"
|
57
57
|
|
58
58
|
out, err = capture_output do
|
59
59
|
use_ui @sui do
|
60
|
-
value = @sui.ask_yes_no
|
60
|
+
value = @sui.ask_yes_no "Problem?", true
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
|
-
assert_empty out,
|
65
|
-
assert_empty err,
|
64
|
+
assert_empty out, "No output"
|
65
|
+
assert_empty err, "No output"
|
66
66
|
|
67
|
-
assert value,
|
67
|
+
assert value, "Value is true"
|
68
68
|
|
69
69
|
out, err = capture_output do
|
70
70
|
use_ui @sui do
|
71
|
-
value = @sui.ask_yes_no
|
71
|
+
value = @sui.ask_yes_no "Problem?", false
|
72
72
|
end
|
73
73
|
end
|
74
74
|
|
75
|
-
assert_empty out,
|
76
|
-
assert_empty err,
|
75
|
+
assert_empty out, "No output"
|
76
|
+
assert_empty err, "No output"
|
77
77
|
|
78
|
-
assert_equal value, false,
|
78
|
+
assert_equal value, false, "Value is false"
|
79
79
|
end
|
80
80
|
|
81
81
|
def test_choose_from_list
|
82
82
|
value = nil
|
83
83
|
out, err = capture_output do
|
84
84
|
use_ui @sui do
|
85
|
-
value = @sui.choose_from_list
|
85
|
+
value = @sui.choose_from_list "Problem?", %w[yes no]
|
86
86
|
end
|
87
87
|
end
|
88
88
|
|
89
|
-
assert_empty out,
|
90
|
-
assert_empty err,
|
89
|
+
assert_empty out, "No output"
|
90
|
+
assert_empty err, "No output"
|
91
91
|
|
92
|
-
assert_equal [nil, nil], value,
|
92
|
+
assert_equal [nil, nil], value, "Value is nil!"
|
93
93
|
end
|
94
94
|
|
95
95
|
def test_progress_reporter
|
96
96
|
out, err = capture_output do
|
97
97
|
use_ui @sui do
|
98
|
-
@sui.progress_reporter 10,
|
98
|
+
@sui.progress_reporter 10, "hi"
|
99
99
|
end
|
100
100
|
end
|
101
101
|
|
102
|
-
assert_empty out,
|
103
|
-
assert_empty err,
|
102
|
+
assert_empty out, "No output"
|
103
|
+
assert_empty err, "No output"
|
104
104
|
end
|
105
105
|
|
106
106
|
def test_download_reporter
|
107
107
|
out, err = capture_output do
|
108
108
|
use_ui @sui do
|
109
|
-
@sui.download_reporter.fetch
|
109
|
+
@sui.download_reporter.fetch "a.gem", 1024
|
110
110
|
end
|
111
111
|
end
|
112
112
|
|
113
|
-
assert_empty out,
|
114
|
-
assert_empty err,
|
113
|
+
assert_empty out, "No output"
|
114
|
+
assert_empty err, "No output"
|
115
|
+
end
|
116
|
+
|
117
|
+
def test_new_without_dev_null
|
118
|
+
File.stub(:open, ->(path, mode) { raise Errno::ENOTCAPABLE if path == IO::NULL }) do
|
119
|
+
Gem::SilentUI.new
|
120
|
+
end
|
115
121
|
end
|
116
122
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require_relative
|
3
|
-
require
|
4
|
-
require
|
2
|
+
require_relative "helper"
|
3
|
+
require "rubygems/source"
|
4
|
+
require "rubygems/indexer"
|
5
5
|
|
6
6
|
class TestGemSource < Gem::TestCase
|
7
7
|
def tuple(*args)
|
@@ -12,10 +12,10 @@ class TestGemSource < Gem::TestCase
|
|
12
12
|
super
|
13
13
|
|
14
14
|
@specs = spec_fetcher do |fetcher|
|
15
|
-
fetcher.spec
|
16
|
-
fetcher.gem
|
17
|
-
fetcher.spec
|
18
|
-
fetcher.spec
|
15
|
+
fetcher.spec "a", "1.a"
|
16
|
+
fetcher.gem "a", 1
|
17
|
+
fetcher.spec "a", 2
|
18
|
+
fetcher.spec "b", 2
|
19
19
|
end
|
20
20
|
|
21
21
|
@source = Gem::Source.new(@gem_repo)
|
@@ -23,14 +23,14 @@ class TestGemSource < Gem::TestCase
|
|
23
23
|
|
24
24
|
def test_initialize_invalid_uri
|
25
25
|
assert_raise URI::InvalidURIError do
|
26
|
-
Gem::Source.new
|
26
|
+
Gem::Source.new "git@example:a.git"
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
30
|
def test_initialize_git
|
31
|
-
repository =
|
31
|
+
repository = "git@example:a.git"
|
32
32
|
|
33
|
-
source = Gem::Source::Git.new
|
33
|
+
source = Gem::Source::Git.new "a", repository, "master", false
|
34
34
|
|
35
35
|
assert_equal repository, source.uri
|
36
36
|
end
|
@@ -38,13 +38,13 @@ class TestGemSource < Gem::TestCase
|
|
38
38
|
def test_cache_dir_escapes_windows_paths
|
39
39
|
uri = URI.parse("file:///C:/WINDOWS/Temp/gem_repo")
|
40
40
|
root = Gem.spec_cache_dir
|
41
|
-
cache_dir = @source.cache_dir(uri).gsub(root,
|
41
|
+
cache_dir = @source.cache_dir(uri).gsub(root, "")
|
42
42
|
assert cache_dir !~ /:/, "#{cache_dir} should not contain a :"
|
43
43
|
end
|
44
44
|
|
45
45
|
def test_dependency_resolver_set_bundler_api
|
46
|
-
response = Net::HTTPResponse.new
|
47
|
-
response.uri = URI(
|
46
|
+
response = Net::HTTPResponse.new "1.1", 200, "OK"
|
47
|
+
response.uri = URI("http://example")
|
48
48
|
|
49
49
|
@fetcher.data[@gem_repo] = response
|
50
50
|
|
@@ -70,11 +70,11 @@ class TestGemSource < Gem::TestCase
|
|
70
70
|
end
|
71
71
|
|
72
72
|
def test_fetch_spec
|
73
|
-
a1 = @specs[
|
73
|
+
a1 = @specs["a-1"]
|
74
74
|
|
75
75
|
spec_uri = "#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{a1.spec_name}"
|
76
76
|
|
77
|
-
spec = @source.fetch_spec tuple(
|
77
|
+
spec = @source.fetch_spec tuple("a", Gem::Version.new(1), "ruby")
|
78
78
|
assert_equal a1.full_name, spec.full_name
|
79
79
|
|
80
80
|
cache_dir = @source.cache_dir URI.parse(spec_uri)
|
@@ -85,7 +85,7 @@ class TestGemSource < Gem::TestCase
|
|
85
85
|
end
|
86
86
|
|
87
87
|
def test_fetch_spec_cached
|
88
|
-
a1 = @specs[
|
88
|
+
a1 = @specs["a-1"]
|
89
89
|
|
90
90
|
spec_uri = "#{@gem_repo}/#{Gem::MARSHAL_SPEC_DIR}#{a1.spec_name}"
|
91
91
|
@fetcher.data["#{spec_uri}.rz"] = nil
|
@@ -95,11 +95,11 @@ class TestGemSource < Gem::TestCase
|
|
95
95
|
|
96
96
|
cache_file = File.join cache_dir, a1.spec_name
|
97
97
|
|
98
|
-
File.open cache_file,
|
98
|
+
File.open cache_file, "wb" do |io|
|
99
99
|
Marshal.dump a1, io
|
100
100
|
end
|
101
101
|
|
102
|
-
spec = @source.fetch_spec tuple(
|
102
|
+
spec = @source.fetch_spec tuple("a", Gem::Version.new(1), "ruby")
|
103
103
|
assert_equal a1.full_name, spec.full_name
|
104
104
|
end
|
105
105
|
|
@@ -108,24 +108,24 @@ class TestGemSource < Gem::TestCase
|
|
108
108
|
fetcher.legacy_platform
|
109
109
|
end
|
110
110
|
|
111
|
-
spec = @source.fetch_spec tuple(
|
111
|
+
spec = @source.fetch_spec tuple("pl", Gem::Version.new(1), "i386-linux")
|
112
112
|
|
113
|
-
assert_equal specs[
|
113
|
+
assert_equal specs["pl-1-x86-linux"].full_name, spec.full_name
|
114
114
|
end
|
115
115
|
|
116
116
|
def test_fetch_spec_platform_ruby
|
117
|
-
spec = @source.fetch_spec tuple(
|
118
|
-
assert_equal @specs[
|
117
|
+
spec = @source.fetch_spec tuple("a", Gem::Version.new(1), nil)
|
118
|
+
assert_equal @specs["a-1"].full_name, spec.full_name
|
119
119
|
|
120
|
-
spec = @source.fetch_spec tuple(
|
121
|
-
assert_equal @specs[
|
120
|
+
spec = @source.fetch_spec tuple("a", Gem::Version.new(1), "")
|
121
|
+
assert_equal @specs["a-1"].full_name, spec.full_name
|
122
122
|
end
|
123
123
|
|
124
124
|
def test_load_specs
|
125
125
|
released = @source.load_specs(:released).map {|spec| spec.full_name }
|
126
126
|
assert_equal %W[a-2 a-1 b-2], released
|
127
127
|
|
128
|
-
cache_dir = File.join Gem.spec_cache_dir,
|
128
|
+
cache_dir = File.join Gem.spec_cache_dir, "gems.example.com%80"
|
129
129
|
assert File.exist?(cache_dir), "#{cache_dir} does not exist"
|
130
130
|
|
131
131
|
cache_file = File.join cache_dir, "specs.#{Gem.marshal_version}"
|
@@ -136,19 +136,19 @@ class TestGemSource < Gem::TestCase
|
|
136
136
|
latest_specs = @source.load_specs :latest
|
137
137
|
|
138
138
|
# Make sure the cached version is actually different:
|
139
|
-
latest_specs << Gem::NameTuple.new(
|
139
|
+
latest_specs << Gem::NameTuple.new("cached", Gem::Version.new("1.0.0"), "ruby")
|
140
140
|
|
141
141
|
@fetcher.data["#{@gem_repo}latest_specs.#{Gem.marshal_version}.gz"] = nil
|
142
142
|
@fetcher.data["#{@gem_repo}latest_specs.#{Gem.marshal_version}"] =
|
143
|
-
|
143
|
+
" " * Marshal.dump(latest_specs).length
|
144
144
|
|
145
|
-
cache_dir = File.join Gem.spec_cache_dir,
|
145
|
+
cache_dir = File.join Gem.spec_cache_dir, "gems.example.com%80"
|
146
146
|
|
147
147
|
FileUtils.mkdir_p cache_dir
|
148
148
|
|
149
149
|
cache_file = File.join cache_dir, "latest_specs.#{Gem.marshal_version}"
|
150
150
|
|
151
|
-
File.open cache_file,
|
151
|
+
File.open cache_file, "wb" do |io|
|
152
152
|
Marshal.dump latest_specs, io
|
153
153
|
end
|
154
154
|
|
@@ -161,18 +161,18 @@ class TestGemSource < Gem::TestCase
|
|
161
161
|
latest_specs = @source.load_specs :latest
|
162
162
|
|
163
163
|
# Make sure the cached version is actually different:
|
164
|
-
latest_specs << Gem::NameTuple.new(
|
164
|
+
latest_specs << Gem::NameTuple.new("fixed", Gem::Version.new("1.0.0"), "ruby")
|
165
165
|
# Setup valid data on the 'remote'
|
166
166
|
@fetcher.data["#{@gem_repo}latest_specs.#{Gem.marshal_version}.gz"] =
|
167
167
|
util_gzip(Marshal.dump(latest_specs))
|
168
168
|
|
169
|
-
cache_dir = File.join Gem.spec_cache_dir,
|
169
|
+
cache_dir = File.join Gem.spec_cache_dir, "gems.example.com%80"
|
170
170
|
|
171
171
|
FileUtils.mkdir_p cache_dir
|
172
172
|
|
173
173
|
cache_file = File.join cache_dir, "latest_specs.#{Gem.marshal_version}"
|
174
174
|
|
175
|
-
File.open cache_file,
|
175
|
+
File.open cache_file, "wb" do |io|
|
176
176
|
# Setup invalid data in the cache:
|
177
177
|
io.write Marshal.dump(latest_specs)[0, 10]
|
178
178
|
end
|
@@ -192,34 +192,34 @@ class TestGemSource < Gem::TestCase
|
|
192
192
|
|
193
193
|
def test_spaceship
|
194
194
|
remote = @source
|
195
|
-
specific = Gem::Source::SpecificFile.new @specs[
|
195
|
+
specific = Gem::Source::SpecificFile.new @specs["a-1"].cache_file
|
196
196
|
installed = Gem::Source::Installed.new
|
197
197
|
local = Gem::Source::Local.new
|
198
198
|
|
199
|
-
assert_equal(0, remote.<=>(remote),
|
199
|
+
assert_equal(0, remote.<=>(remote), "remote <=> remote")
|
200
200
|
|
201
|
-
assert_equal(-1, remote.<=>(specific),
|
202
|
-
assert_equal(1, specific.<=>(remote),
|
201
|
+
assert_equal(-1, remote.<=>(specific), "remote <=> specific")
|
202
|
+
assert_equal(1, specific.<=>(remote), "specific <=> remote")
|
203
203
|
|
204
|
-
assert_equal(-1, remote.<=>(local),
|
205
|
-
assert_equal(1, local.<=>(remote),
|
204
|
+
assert_equal(-1, remote.<=>(local), "remote <=> local")
|
205
|
+
assert_equal(1, local.<=>(remote), "local <=> remote")
|
206
206
|
|
207
|
-
assert_equal(-1, remote.<=>(installed),
|
208
|
-
assert_equal(1, installed.<=>(remote),
|
207
|
+
assert_equal(-1, remote.<=>(installed), "remote <=> installed")
|
208
|
+
assert_equal(1, installed.<=>(remote), "installed <=> remote")
|
209
209
|
|
210
210
|
no_uri = @source.dup
|
211
211
|
no_uri.instance_variable_set :@uri, nil
|
212
212
|
|
213
|
-
assert_equal(-1, remote.<=>(no_uri),
|
213
|
+
assert_equal(-1, remote.<=>(no_uri), "remote <=> no_uri")
|
214
214
|
end
|
215
215
|
|
216
216
|
def test_spaceship_order_is_preserved_when_uri_differs
|
217
217
|
sourceA = Gem::Source.new "http://example.com/a"
|
218
218
|
sourceB = Gem::Source.new "http://example.com/b"
|
219
219
|
|
220
|
-
assert_equal(0, sourceA.<=>(sourceA),
|
221
|
-
assert_equal(1, sourceA.<=>(sourceB),
|
222
|
-
assert_equal(1, sourceB.<=>(sourceA),
|
220
|
+
assert_equal(0, sourceA.<=>(sourceA), "sourceA <=> sourceA")
|
221
|
+
assert_equal(1, sourceA.<=>(sourceB), "sourceA <=> sourceB")
|
222
|
+
assert_equal(1, sourceB.<=>(sourceA), "sourceB <=> sourceA")
|
223
223
|
end
|
224
224
|
|
225
225
|
def test_update_cache_eh
|
@@ -1,10 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require_relative
|
2
|
+
require_relative "helper"
|
3
3
|
|
4
4
|
class TestGemSourceFetchProblem < Gem::TestCase
|
5
5
|
def test_exception
|
6
6
|
source = Gem::Source.new @gem_repo
|
7
|
-
error = RuntimeError.new
|
7
|
+
error = RuntimeError.new "test"
|
8
8
|
|
9
9
|
sf = Gem::SourceFetchProblem.new source, error
|
10
10
|
|
@@ -12,25 +12,25 @@ class TestGemSourceFetchProblem < Gem::TestCase
|
|
12
12
|
raise sf
|
13
13
|
end
|
14
14
|
|
15
|
-
assert_equal
|
15
|
+
assert_equal "test", e.message
|
16
16
|
end
|
17
17
|
|
18
18
|
def test_password_redacted
|
19
|
-
source = Gem::Source.new
|
20
|
-
error = RuntimeError.new
|
19
|
+
source = Gem::Source.new "https://username:secret@gemsource.com"
|
20
|
+
error = RuntimeError.new "test"
|
21
21
|
|
22
22
|
sf = Gem::SourceFetchProblem.new source, error
|
23
23
|
|
24
|
-
refute_match sf.wordy,
|
24
|
+
refute_match sf.wordy, "secret"
|
25
25
|
end
|
26
26
|
|
27
27
|
def test_source_password_no_redacted
|
28
|
-
source = Gem::Source.new
|
29
|
-
error = RuntimeError.new
|
28
|
+
source = Gem::Source.new "https://username:secret@gemsource.com"
|
29
|
+
error = RuntimeError.new "test"
|
30
30
|
|
31
31
|
sf = Gem::SourceFetchProblem.new source, error
|
32
32
|
sf.wordy
|
33
33
|
|
34
|
-
assert_match
|
34
|
+
assert_match "secret", source.uri.to_s
|
35
35
|
end
|
36
36
|
end
|