rubygems-update 3.3.18 → 3.4.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1429 -1064
- data/CONTRIBUTING.md +31 -8
- data/Manifest.txt +61 -36
- data/POLICIES.md +55 -20
- data/README.md +19 -6
- data/bundler/CHANGELOG.md +457 -1
- data/bundler/README.md +3 -6
- data/bundler/UPGRADING.md +11 -4
- data/bundler/bundler.gemspec +8 -10
- data/bundler/exe/bundle +5 -16
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/cli/add.rb +1 -1
- data/bundler/lib/bundler/cli/binstubs.rb +6 -2
- data/bundler/lib/bundler/cli/check.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +2 -0
- data/bundler/lib/bundler/cli/console.rb +2 -2
- data/bundler/lib/bundler/cli/doctor.rb +4 -6
- data/bundler/lib/bundler/cli/gem.rb +62 -40
- data/bundler/lib/bundler/cli/info.rb +1 -1
- data/bundler/lib/bundler/cli/init.rb +6 -2
- data/bundler/lib/bundler/cli/install.rb +8 -6
- data/bundler/lib/bundler/cli/lock.rb +8 -5
- data/bundler/lib/bundler/cli/open.rb +6 -4
- data/bundler/lib/bundler/cli/outdated.rb +14 -7
- data/bundler/lib/bundler/cli/platform.rb +7 -5
- data/bundler/lib/bundler/cli/viz.rb +1 -1
- data/bundler/lib/bundler/cli.rb +53 -7
- data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
- data/bundler/lib/bundler/compact_index_client/updater.rb +40 -39
- data/bundler/lib/bundler/constants.rb +1 -1
- data/bundler/lib/bundler/current_ruby.rb +16 -5
- data/bundler/lib/bundler/definition.rb +262 -133
- data/bundler/lib/bundler/dependency.rb +20 -86
- data/bundler/lib/bundler/digest.rb +1 -1
- data/bundler/lib/bundler/dsl.rb +6 -7
- data/bundler/lib/bundler/endpoint_specification.rb +2 -13
- data/bundler/lib/bundler/env.rb +2 -2
- data/bundler/lib/bundler/environment_preserver.rb +3 -2
- data/bundler/lib/bundler/errors.rb +1 -11
- data/bundler/lib/bundler/feature_flag.rb +0 -2
- data/bundler/lib/bundler/fetcher/compact_index.rb +11 -13
- data/bundler/lib/bundler/fetcher/dependency.rb +2 -6
- data/bundler/lib/bundler/fetcher/downloader.rb +4 -5
- data/bundler/lib/bundler/fetcher/index.rb +1 -2
- data/bundler/lib/bundler/fetcher.rb +21 -15
- data/bundler/lib/bundler/force_platform.rb +18 -0
- data/bundler/lib/bundler/friendly_errors.rb +1 -4
- data/bundler/lib/bundler/gem_helper.rb +3 -4
- data/bundler/lib/bundler/gem_helpers.rb +7 -2
- data/bundler/lib/bundler/gem_version_promoter.rb +53 -98
- data/bundler/lib/bundler/graph.rb +3 -3
- data/bundler/lib/bundler/index.rb +13 -47
- data/bundler/lib/bundler/injector.rb +5 -4
- data/bundler/lib/bundler/inline.rb +9 -11
- data/bundler/lib/bundler/installer/parallel_installer.rb +4 -34
- data/bundler/lib/bundler/installer/standalone.rb +13 -9
- data/bundler/lib/bundler/installer.rb +17 -29
- data/bundler/lib/bundler/lazy_specification.rb +54 -53
- data/bundler/lib/bundler/lockfile_generator.rb +3 -3
- data/bundler/lib/bundler/lockfile_parser.rb +17 -16
- data/bundler/lib/bundler/man/bundle-add.1 +6 -2
- data/bundler/lib/bundler/man/bundle-add.1.ronn +4 -1
- data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
- data/bundler/lib/bundler/man/bundle-cache.1 +9 -3
- data/bundler/lib/bundler/man/bundle-cache.1.ronn +9 -2
- data/bundler/lib/bundler/man/bundle-check.1 +1 -1
- data/bundler/lib/bundler/man/bundle-clean.1 +2 -2
- data/bundler/lib/bundler/man/bundle-clean.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-config.1 +26 -10
- data/bundler/lib/bundler/man/bundle-config.1.ronn +17 -10
- data/bundler/lib/bundler/man/bundle-console.1 +53 -0
- data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
- data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
- data/bundler/lib/bundler/man/bundle-exec.1 +6 -6
- data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -6
- data/bundler/lib/bundler/man/bundle-gem.1 +27 -37
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +5 -5
- data/bundler/lib/bundler/man/bundle-help.1 +13 -0
- data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
- data/bundler/lib/bundler/man/bundle-info.1 +3 -3
- data/bundler/lib/bundler/man/bundle-info.1.ronn +3 -3
- data/bundler/lib/bundler/man/bundle-init.1 +5 -1
- data/bundler/lib/bundler/man/bundle-init.1.ronn +2 -0
- data/bundler/lib/bundler/man/bundle-inject.1 +5 -2
- data/bundler/lib/bundler/man/bundle-inject.1.ronn +3 -1
- data/bundler/lib/bundler/man/bundle-install.1 +5 -30
- data/bundler/lib/bundler/man/bundle-install.1.ronn +6 -29
- data/bundler/lib/bundler/man/bundle-list.1 +1 -1
- data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
- data/bundler/lib/bundler/man/bundle-open.1 +22 -2
- data/bundler/lib/bundler/man/bundle-open.1.ronn +9 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +13 -9
- data/bundler/lib/bundler/man/bundle-outdated.1.ronn +12 -9
- data/bundler/lib/bundler/man/bundle-platform.1 +16 -6
- data/bundler/lib/bundler/man/bundle-platform.1.ronn +14 -7
- data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
- data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
- data/bundler/lib/bundler/man/bundle-show.1 +1 -1
- data/bundler/lib/bundler/man/bundle-update.1 +1 -1
- data/bundler/lib/bundler/man/bundle-version.1 +35 -0
- data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
- data/bundler/lib/bundler/man/bundle-viz.1 +4 -1
- data/bundler/lib/bundler/man/bundle-viz.1.ronn +2 -0
- data/bundler/lib/bundler/man/bundle.1 +15 -10
- data/bundler/lib/bundler/man/bundle.1.ronn +12 -7
- data/bundler/lib/bundler/man/gemfile.5 +55 -55
- data/bundler/lib/bundler/man/gemfile.5.ronn +57 -53
- data/bundler/lib/bundler/man/index.txt +4 -0
- data/bundler/lib/bundler/match_metadata.rb +13 -0
- data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
- data/bundler/lib/bundler/mirror.rb +5 -7
- data/bundler/lib/bundler/plugin/index.rb +5 -5
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -4
- data/bundler/lib/bundler/plugin/installer.rb +5 -2
- data/bundler/lib/bundler/plugin.rb +3 -1
- data/bundler/lib/bundler/remote_specification.rb +7 -12
- data/bundler/lib/bundler/resolver/base.rb +107 -0
- data/bundler/lib/bundler/resolver/candidate.rb +94 -0
- data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
- data/bundler/lib/bundler/resolver/package.rb +72 -0
- data/bundler/lib/bundler/resolver/root.rb +25 -0
- data/bundler/lib/bundler/resolver/spec_group.rb +42 -71
- data/bundler/lib/bundler/resolver.rb +335 -328
- data/bundler/lib/bundler/ruby_dsl.rb +7 -1
- data/bundler/lib/bundler/ruby_version.rb +8 -8
- data/bundler/lib/bundler/rubygems_ext.rb +100 -9
- data/bundler/lib/bundler/rubygems_gem_installer.rb +23 -14
- data/bundler/lib/bundler/rubygems_integration.rb +11 -15
- data/bundler/lib/bundler/runtime.rb +2 -6
- data/bundler/lib/bundler/safe_marshal.rb +31 -0
- data/bundler/lib/bundler/settings.rb +5 -11
- data/bundler/lib/bundler/setup.rb +4 -1
- data/bundler/lib/bundler/shared_helpers.rb +3 -3
- data/bundler/lib/bundler/source/git/git_proxy.rb +237 -74
- data/bundler/lib/bundler/source/git.rb +55 -30
- data/bundler/lib/bundler/source/metadata.rb +1 -2
- data/bundler/lib/bundler/source/path/installer.rb +1 -22
- data/bundler/lib/bundler/source/path.rb +6 -6
- data/bundler/lib/bundler/source/rubygems.rb +26 -81
- data/bundler/lib/bundler/source.rb +1 -1
- data/bundler/lib/bundler/source_list.rb +8 -2
- data/bundler/lib/bundler/spec_set.rb +60 -37
- data/bundler/lib/bundler/templates/Executable +1 -1
- data/bundler/lib/bundler/templates/Executable.bundler +5 -10
- data/bundler/lib/bundler/templates/Executable.standalone +2 -0
- data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/README.md.tt +6 -4
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +12 -1
- data/bundler/lib/bundler/templates/newgem/bin/console.tt +0 -4
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt +10 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +1 -1
- data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +10 -0
- data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +13 -4
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +9 -2
- data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
- data/bundler/lib/bundler/ui/shell.rb +35 -12
- data/bundler/lib/bundler/ui/silent.rb +21 -5
- data/bundler/lib/bundler/uri_normalizer.rb +23 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1351 -409
- data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
- data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +248 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +64 -16
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +27 -7
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +15 -9
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +11 -6
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +1 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -2
- data/bundler/lib/bundler/vendored_persistent.rb +1 -33
- data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_pub_grub.rb} +1 -1
- data/bundler/lib/bundler/version.rb +5 -1
- data/bundler/lib/bundler/worker.rb +5 -7
- data/bundler/lib/bundler.rb +25 -77
- data/{bin → exe}/gem +4 -5
- data/{bin → exe}/update_rubygems +12 -10
- data/lib/rubygems/available_set.rb +4 -3
- data/lib/rubygems/basic_specification.rb +5 -4
- data/lib/rubygems/bundler_version_finder.rb +2 -2
- data/lib/rubygems/command.rb +41 -32
- data/lib/rubygems/command_manager.rb +30 -15
- data/lib/rubygems/commands/build_command.rb +12 -8
- data/lib/rubygems/commands/cert_command.rb +34 -33
- data/lib/rubygems/commands/check_command.rb +21 -20
- data/lib/rubygems/commands/cleanup_command.rb +18 -17
- data/lib/rubygems/commands/contents_command.rb +14 -13
- data/lib/rubygems/commands/dependency_command.rb +17 -16
- data/lib/rubygems/commands/environment_command.rb +6 -5
- data/lib/rubygems/commands/exec_command.rb +249 -0
- data/lib/rubygems/commands/fetch_command.rb +10 -9
- data/lib/rubygems/commands/generate_index_command.rb +18 -17
- data/lib/rubygems/commands/help_command.rb +7 -6
- data/lib/rubygems/commands/info_command.rb +3 -3
- data/lib/rubygems/commands/install_command.rb +28 -23
- data/lib/rubygems/commands/list_command.rb +4 -3
- data/lib/rubygems/commands/lock_command.rb +5 -4
- data/lib/rubygems/commands/mirror_command.rb +4 -3
- data/lib/rubygems/commands/open_command.rb +10 -9
- data/lib/rubygems/commands/outdated_command.rb +6 -5
- data/lib/rubygems/commands/owner_command.rb +17 -14
- data/lib/rubygems/commands/pristine_command.rb +46 -36
- data/lib/rubygems/commands/push_command.rb +9 -8
- data/lib/rubygems/commands/query_command.rb +9 -8
- data/lib/rubygems/commands/rdoc_command.rb +21 -19
- data/lib/rubygems/commands/search_command.rb +4 -3
- data/lib/rubygems/commands/server_command.rb +4 -3
- data/lib/rubygems/commands/setup_command.rb +97 -106
- data/lib/rubygems/commands/signin_command.rb +10 -9
- data/lib/rubygems/commands/signout_command.rb +8 -7
- data/lib/rubygems/commands/sources_command.rb +22 -21
- data/lib/rubygems/commands/specification_command.rb +14 -13
- data/lib/rubygems/commands/stale_command.rb +3 -2
- data/lib/rubygems/commands/uninstall_command.rb +44 -40
- data/lib/rubygems/commands/unpack_command.rb +14 -13
- data/lib/rubygems/commands/update_command.rb +42 -63
- data/lib/rubygems/commands/which_command.rb +8 -7
- data/lib/rubygems/commands/yank_command.rb +12 -11
- data/lib/rubygems/config_file.rb +55 -21
- data/lib/rubygems/core_ext/kernel_gem.rb +1 -6
- data/lib/rubygems/core_ext/kernel_require.rb +109 -115
- data/lib/rubygems/core_ext/kernel_warn.rb +33 -37
- data/lib/rubygems/core_ext/tcpsocket_init.rb +3 -1
- data/lib/rubygems/defaults.rb +33 -18
- data/lib/rubygems/dependency.rb +15 -11
- data/lib/rubygems/dependency_installer.rb +38 -37
- data/lib/rubygems/dependency_list.rb +7 -6
- data/lib/rubygems/deprecate.rb +3 -2
- data/lib/rubygems/doctor.rb +19 -18
- data/lib/rubygems/errors.rb +3 -2
- data/lib/rubygems/exceptions.rb +16 -8
- data/lib/rubygems/ext/build_error.rb +2 -1
- data/lib/rubygems/ext/builder.rb +37 -21
- data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +9 -5
- data/lib/rubygems/ext/cargo_builder.rb +150 -111
- data/lib/rubygems/ext/cmake_builder.rb +2 -2
- data/lib/rubygems/ext/configure_builder.rb +2 -1
- data/lib/rubygems/ext/ext_conf_builder.rb +11 -9
- data/lib/rubygems/ext/rake_builder.rb +7 -5
- data/lib/rubygems/ext.rb +8 -7
- data/lib/rubygems/gem_runner.rb +6 -5
- data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +163 -0
- data/lib/rubygems/gemcutter_utilities/webauthn_listener.rb +105 -0
- data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +78 -0
- data/lib/rubygems/gemcutter_utilities.rb +90 -34
- data/lib/rubygems/indexer.rb +29 -28
- data/lib/rubygems/install_default_message.rb +3 -2
- data/lib/rubygems/install_message.rb +3 -2
- data/lib/rubygems/install_update_options.rb +56 -55
- data/lib/rubygems/installer.rb +54 -46
- data/lib/rubygems/installer_uninstaller_utils.rb +2 -2
- data/lib/rubygems/local_remote_options.rb +19 -20
- data/lib/rubygems/mock_gem_ui.rb +3 -2
- data/lib/rubygems/name_tuple.rb +5 -4
- data/lib/rubygems/optparse/lib/optparse.rb +20 -15
- data/lib/rubygems/optparse.rb +1 -1
- data/lib/rubygems/package/digest_io.rb +1 -0
- data/lib/rubygems/package/file_source.rb +3 -2
- data/lib/rubygems/package/io_source.rb +1 -0
- data/lib/rubygems/package/old.rb +9 -8
- data/lib/rubygems/package/source.rb +1 -0
- data/lib/rubygems/package/tar_header.rb +63 -62
- data/lib/rubygems/package/tar_reader/entry.rb +91 -9
- data/lib/rubygems/package/tar_reader.rb +2 -29
- data/lib/rubygems/package/tar_writer.rb +8 -7
- data/lib/rubygems/package.rb +64 -48
- data/lib/rubygems/package_task.rb +5 -4
- data/lib/rubygems/path_support.rb +1 -0
- data/lib/rubygems/platform.rb +79 -53
- data/lib/rubygems/psych_tree.rb +2 -1
- data/lib/rubygems/query_utils.rb +35 -35
- data/lib/rubygems/rdoc.rb +3 -2
- data/lib/rubygems/remote_fetcher.rb +23 -22
- data/lib/rubygems/request/connection_pools.rb +4 -4
- data/lib/rubygems/request/http_pool.rb +2 -1
- data/lib/rubygems/request/https_pool.rb +1 -0
- data/lib/rubygems/request.rb +23 -22
- data/lib/rubygems/request_set/gem_dependency_api.rb +123 -123
- data/lib/rubygems/request_set/lockfile/parser.rb +28 -27
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -3
- data/lib/rubygems/request_set/lockfile.rb +6 -5
- data/lib/rubygems/request_set.rb +20 -19
- data/lib/rubygems/requirement.rb +15 -14
- data/lib/rubygems/resolver/activation_request.rb +4 -3
- data/lib/rubygems/resolver/api_set.rb +5 -4
- data/lib/rubygems/resolver/api_specification.rb +7 -6
- data/lib/rubygems/resolver/best_set.rb +6 -5
- data/lib/rubygems/resolver/composed_set.rb +1 -0
- data/lib/rubygems/resolver/conflict.rb +11 -10
- data/lib/rubygems/resolver/current_set.rb +1 -0
- data/lib/rubygems/resolver/dependency_request.rb +3 -2
- data/lib/rubygems/resolver/git_set.rb +3 -2
- data/lib/rubygems/resolver/git_specification.rb +7 -6
- data/lib/rubygems/resolver/index_set.rb +4 -3
- data/lib/rubygems/resolver/index_specification.rb +7 -5
- data/lib/rubygems/resolver/installed_specification.rb +5 -4
- data/lib/rubygems/resolver/installer_set.rb +15 -17
- data/lib/rubygems/resolver/local_specification.rb +3 -2
- data/lib/rubygems/resolver/lock_set.rb +5 -4
- data/lib/rubygems/resolver/lock_specification.rb +5 -4
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +1 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/lib/rubygems/resolver/molinillo.rb +2 -1
- data/lib/rubygems/resolver/requirement_list.rb +1 -0
- data/lib/rubygems/resolver/set.rb +1 -0
- data/lib/rubygems/resolver/source_set.rb +2 -0
- data/lib/rubygems/resolver/spec_specification.rb +1 -0
- data/lib/rubygems/resolver/specification.rb +2 -1
- data/lib/rubygems/resolver/stats.rb +2 -1
- data/lib/rubygems/resolver/vendor_set.rb +2 -1
- data/lib/rubygems/resolver/vendor_specification.rb +4 -3
- data/lib/rubygems/resolver.rb +41 -40
- data/lib/rubygems/s3_uri_signer.rb +10 -8
- data/lib/rubygems/safe_yaml.rb +4 -2
- data/lib/rubygems/security/policies.rb +48 -47
- data/lib/rubygems/security/policy.rb +19 -18
- data/lib/rubygems/security/signer.rb +6 -5
- data/lib/rubygems/security/trust_dir.rb +5 -4
- data/lib/rubygems/security.rb +30 -42
- data/lib/rubygems/security_option.rb +6 -5
- data/lib/rubygems/shellwords.rb +3 -0
- data/lib/rubygems/source/git.rb +22 -22
- data/lib/rubygems/source/installed.rb +2 -1
- data/lib/rubygems/source/local.rb +3 -2
- data/lib/rubygems/source/lock.rb +1 -0
- data/lib/rubygems/source/specific_file.rb +2 -1
- data/lib/rubygems/source/vendor.rb +1 -0
- data/lib/rubygems/source.rb +16 -16
- data/lib/rubygems/spec_fetcher.rb +10 -9
- data/lib/rubygems/specification.rb +121 -114
- data/lib/rubygems/specification_policy.rb +36 -15
- data/lib/rubygems/stub_specification.rb +11 -9
- data/lib/rubygems/text.rb +2 -2
- data/lib/rubygems/tsort/lib/tsort.rb +308 -310
- data/lib/rubygems/tsort.rb +1 -1
- data/lib/rubygems/uninstaller.rb +19 -18
- data/lib/rubygems/update_suggestion.rb +69 -0
- data/lib/rubygems/uri.rb +4 -4
- data/lib/rubygems/uri_formatter.rb +1 -1
- data/lib/rubygems/user_interaction.rb +37 -21
- data/lib/rubygems/util/licenses.rb +4 -3
- data/lib/rubygems/util/list.rb +1 -0
- data/lib/rubygems/util.rb +12 -15
- data/lib/rubygems/validator.rb +7 -6
- data/lib/rubygems/version.rb +17 -11
- data/lib/rubygems/version_option.rb +4 -3
- data/lib/rubygems.rb +89 -68
- data/rubygems-update.gemspec +10 -8
- data/setup.rb +10 -9
- data/test/rubygems/alternate_cert.pem +14 -14
- data/test/rubygems/alternate_cert_32.pem +15 -15
- data/test/rubygems/alternate_key.pem +25 -25
- data/test/rubygems/bad_rake.rb +1 -0
- data/test/rubygems/bundler_test_gem.rb +421 -0
- data/test/rubygems/child_cert.pem +15 -16
- data/test/rubygems/child_cert_32.pem +15 -16
- data/test/rubygems/child_key.pem +25 -25
- data/test/rubygems/encrypted_private_key.pem +26 -26
- data/test/rubygems/expired_cert.pem +15 -15
- data/test/rubygems/fake_certlib/openssl.rb +1 -0
- data/test/rubygems/future_cert.pem +15 -15
- data/test/rubygems/future_cert_32.pem +15 -15
- data/test/rubygems/good_rake.rb +1 -0
- data/test/rubygems/grandchild_cert.pem +15 -16
- data/test/rubygems/grandchild_cert_32.pem +15 -16
- data/test/rubygems/grandchild_key.pem +25 -25
- data/test/rubygems/helper.rb +172 -151
- data/test/rubygems/installer_test_case.rb +14 -13
- data/test/rubygems/invalid_issuer_cert.pem +16 -16
- data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
- data/test/rubygems/invalid_key.pem +25 -25
- data/test/rubygems/invalid_signer_cert.pem +15 -15
- data/test/rubygems/invalid_signer_cert_32.pem +15 -15
- data/test/rubygems/invalidchild_cert.pem +15 -16
- data/test/rubygems/invalidchild_cert_32.pem +15 -16
- data/test/rubygems/invalidchild_key.pem +25 -25
- data/test/rubygems/multifactor_auth_utilities.rb +111 -0
- data/test/rubygems/package/tar_test_case.rb +53 -17
- data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
- data/test/rubygems/plugin/exception/rubygems_plugin.rb +2 -1
- data/test/rubygems/plugin/load/rubygems_plugin.rb +1 -0
- data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +2 -1
- data/test/rubygems/private_key.pem +25 -25
- data/test/rubygems/public_cert.pem +16 -16
- data/test/rubygems/public_cert_32.pem +15 -15
- data/test/rubygems/public_key.pem +7 -7
- data/test/rubygems/rubygems/commands/crash_command.rb +1 -0
- data/test/rubygems/rubygems_plugin.rb +3 -2
- data/test/rubygems/simple_gem.rb +2 -1
- data/test/rubygems/specifications/bar-0.0.2.gemspec +2 -0
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +6 -4
- data/test/rubygems/test_bundled_ca.rb +13 -12
- data/test/rubygems/test_config.rb +5 -4
- data/test/rubygems/test_deprecate.rb +5 -4
- data/test/rubygems/test_exit.rb +9 -3
- data/test/rubygems/test_gem.rb +339 -677
- data/test/rubygems/test_gem_available_set.rb +22 -21
- data/test/rubygems/test_gem_bundler_version_finder.rb +6 -4
- data/test/rubygems/test_gem_command.rb +45 -44
- data/test/rubygems/test_gem_command_manager.rb +96 -30
- data/test/rubygems/test_gem_commands_build_command.rb +74 -63
- data/test/rubygems/test_gem_commands_cert_command.rb +98 -99
- data/test/rubygems/test_gem_commands_check_command.rb +5 -4
- data/test/rubygems/test_gem_commands_cleanup_command.rb +41 -40
- data/test/rubygems/test_gem_commands_contents_command.rb +28 -27
- data/test/rubygems/test_gem_commands_dependency_command.rb +37 -36
- data/test/rubygems/test_gem_commands_environment_command.rb +17 -16
- data/test/rubygems/test_gem_commands_exec_command.rb +853 -0
- data/test/rubygems/test_gem_commands_fetch_command.rb +38 -37
- data/test/rubygems/test_gem_commands_generate_index_command.rb +8 -7
- data/test/rubygems/test_gem_commands_help_command.rb +14 -13
- data/test/rubygems/test_gem_commands_info_command.rb +29 -2
- data/test/rubygems/test_gem_commands_install_command.rb +152 -132
- data/test/rubygems/test_gem_commands_list_command.rb +5 -4
- data/test/rubygems/test_gem_commands_lock_command.rb +11 -10
- data/test/rubygems/test_gem_commands_mirror.rb +3 -2
- data/test/rubygems/test_gem_commands_open_command.rb +5 -4
- data/test/rubygems/test_gem_commands_outdated_command.rb +10 -9
- data/test/rubygems/test_gem_commands_owner_command.rb +227 -50
- data/test/rubygems/test_gem_commands_pristine_command.rb +142 -93
- data/test/rubygems/test_gem_commands_push_command.rb +189 -64
- data/test/rubygems/test_gem_commands_query_command.rb +74 -73
- data/test/rubygems/test_gem_commands_search_command.rb +3 -2
- data/test/rubygems/test_gem_commands_server_command.rb +3 -2
- data/test/rubygems/test_gem_commands_setup_command.rb +123 -96
- data/test/rubygems/test_gem_commands_signin_command.rb +71 -31
- data/test/rubygems/test_gem_commands_signout_command.rb +3 -3
- data/test/rubygems/test_gem_commands_sources_command.rb +29 -29
- data/test/rubygems/test_gem_commands_specification_command.rb +33 -32
- data/test/rubygems/test_gem_commands_stale_command.rb +5 -4
- data/test/rubygems/test_gem_commands_uninstall_command.rb +99 -81
- data/test/rubygems/test_gem_commands_unpack_command.rb +32 -31
- data/test/rubygems/test_gem_commands_update_command.rb +96 -95
- data/test/rubygems/test_gem_commands_which_command.rb +7 -6
- data/test/rubygems/test_gem_commands_yank_command.rb +162 -43
- data/test/rubygems/test_gem_config_file.rb +94 -81
- data/test/rubygems/test_gem_dependency.rb +76 -73
- data/test/rubygems/test_gem_dependency_installer.rb +200 -165
- data/test/rubygems/test_gem_dependency_list.rb +48 -47
- data/test/rubygems/test_gem_dependency_resolution_error.rb +5 -4
- data/test/rubygems/test_gem_doctor.rb +27 -26
- data/test/rubygems/test_gem_ext_builder.rb +60 -61
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +4 -4
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{Cargo.lock → ext/custom_name_lib/Cargo.lock} +23 -33
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{Cargo.toml → ext/custom_name_lib/Cargo.toml} +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{src → ext/custom_name_lib/src}/lib.rs +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +3 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +37 -33
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +2 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +12 -0
- data/test/rubygems/test_gem_ext_cargo_builder.rb +48 -59
- data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +20 -19
- data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +21 -36
- data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -15
- data/test/rubygems/test_gem_ext_configure_builder.rb +14 -13
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +51 -52
- data/test/rubygems/test_gem_ext_rake_builder.rb +16 -15
- data/test/rubygems/test_gem_gem_runner.rb +15 -9
- data/test/rubygems/test_gem_gemcutter_utilities.rb +170 -84
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +5 -4
- data/test/rubygems/test_gem_indexer.rb +87 -67
- data/test/rubygems/test_gem_install_update_options.rb +17 -16
- data/test/rubygems/test_gem_installer.rb +422 -304
- data/test/rubygems/test_gem_local_remote_options.rb +11 -10
- data/test/rubygems/test_gem_name_tuple.rb +5 -4
- data/test/rubygems/test_gem_package.rb +243 -231
- data/test/rubygems/test_gem_package_old.rb +14 -13
- data/test/rubygems/test_gem_package_tar_header.rb +48 -47
- data/test/rubygems/test_gem_package_tar_reader.rb +56 -8
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +162 -16
- data/test/rubygems/test_gem_package_tar_writer.rb +77 -76
- data/test/rubygems/test_gem_package_task.rb +19 -18
- data/test/rubygems/test_gem_path_support.rb +15 -14
- data/test/rubygems/test_gem_platform.rb +333 -227
- data/test/rubygems/test_gem_rdoc.rb +15 -14
- data/test/rubygems/test_gem_remote_fetcher.rb +155 -154
- data/test/rubygems/test_gem_request.rb +64 -58
- data/test/rubygems/test_gem_request_connection_pools.rb +30 -29
- data/test/rubygems/test_gem_request_set.rb +101 -100
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +210 -211
- data/test/rubygems/test_gem_request_set_lockfile.rb +87 -86
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +58 -57
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +63 -62
- data/test/rubygems/test_gem_requirement.rb +48 -41
- data/test/rubygems/test_gem_resolver.rb +167 -99
- data/test/rubygems/test_gem_resolver_activation_request.rb +7 -6
- data/test/rubygems/test_gem_resolver_api_set.rb +34 -33
- data/test/rubygems/test_gem_resolver_api_specification.rb +48 -47
- data/test/rubygems/test_gem_resolver_best_set.rb +23 -22
- data/test/rubygems/test_gem_resolver_composed_set.rb +2 -1
- data/test/rubygems/test_gem_resolver_conflict.rb +13 -12
- data/test/rubygems/test_gem_resolver_dependency_request.rb +16 -15
- data/test/rubygems/test_gem_resolver_git_set.rb +22 -21
- data/test/rubygems/test_gem_resolver_git_specification.rb +22 -21
- data/test/rubygems/test_gem_resolver_index_set.rb +13 -12
- data/test/rubygems/test_gem_resolver_index_specification.rb +17 -16
- data/test/rubygems/test_gem_resolver_installed_specification.rb +6 -5
- data/test/rubygems/test_gem_resolver_installer_set.rb +79 -34
- data/test/rubygems/test_gem_resolver_local_specification.rb +8 -7
- data/test/rubygems/test_gem_resolver_lock_set.rb +13 -12
- data/test/rubygems/test_gem_resolver_lock_specification.rb +18 -17
- data/test/rubygems/test_gem_resolver_requirement_list.rb +2 -1
- data/test/rubygems/test_gem_resolver_specification.rb +9 -8
- data/test/rubygems/test_gem_resolver_vendor_set.rb +7 -6
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +11 -10
- data/test/rubygems/test_gem_security.rb +69 -68
- data/test/rubygems/test_gem_security_policy.rb +72 -72
- data/test/rubygems/test_gem_security_signer.rb +35 -34
- data/test/rubygems/test_gem_security_trust_dir.rb +7 -6
- data/test/rubygems/test_gem_silent_ui.rb +39 -32
- data/test/rubygems/test_gem_source.rb +45 -44
- data/test/rubygems/test_gem_source_fetch_problem.rb +10 -9
- data/test/rubygems/test_gem_source_git.rb +69 -62
- data/test/rubygems/test_gem_source_installed.rb +17 -16
- data/test/rubygems/test_gem_source_list.rb +6 -5
- data/test/rubygems/test_gem_source_local.rb +15 -14
- data/test/rubygems/test_gem_source_lock.rb +32 -31
- data/test/rubygems/test_gem_source_specific_file.rb +18 -17
- data/test/rubygems/test_gem_source_subpath_problem.rb +8 -7
- data/test/rubygems/test_gem_source_vendor.rb +14 -13
- data/test/rubygems/test_gem_spec_fetcher.rb +73 -72
- data/test/rubygems/test_gem_specification.rb +533 -469
- data/test/rubygems/test_gem_stream_ui.rb +53 -22
- data/test/rubygems/test_gem_stub_specification.rb +33 -32
- data/test/rubygems/test_gem_text.rb +2 -1
- data/test/rubygems/test_gem_uninstaller.rb +118 -117
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +4 -3
- data/test/rubygems/test_gem_update_suggestion.rb +209 -0
- data/test/rubygems/test_gem_uri.rb +6 -4
- data/test/rubygems/test_gem_uri_formatter.rb +15 -14
- data/test/rubygems/test_gem_util.rb +24 -23
- data/test/rubygems/test_gem_validator.rb +8 -8
- data/test/rubygems/test_gem_version.rb +24 -16
- data/test/rubygems/test_gem_version_option.rb +16 -15
- data/test/rubygems/test_kernel.rb +43 -48
- data/test/rubygems/test_project_sanity.rb +32 -3
- data/test/rubygems/test_remote_fetch_error.rb +8 -7
- data/test/rubygems/test_require.rb +118 -103
- data/test/rubygems/test_rubygems.rb +10 -8
- data/test/rubygems/test_webauthn_listener.rb +143 -0
- data/test/rubygems/test_webauthn_listener_response.rb +93 -0
- data/test/rubygems/test_webauthn_poller.rb +124 -0
- data/test/rubygems/utilities.rb +98 -34
- data/test/rubygems/wrong_key_cert.pem +15 -15
- data/test/rubygems/wrong_key_cert_32.pem +15 -15
- data/test/test_changelog_generator.rb +1 -1
- metadata +99 -46
- data/bundler/lib/bundler/dep_proxy.rb +0 -55
- data/bundler/lib/bundler/templates/gems.rb +0 -5
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +0 -5
- data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
- data/bundler/lib/bundler/vendor/molinillo/LICENSE +0 -9
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -149
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
- data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
- data/bundler/lib/bundler/vendored_molinillo.rb +0 -4
- data/bundler/lib/bundler/version_ranges.rb +0 -122
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/build.rb +0 -21
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/build.rb +0 -21
data/test/rubygems/helper.rb
CHANGED
@@ -1,43 +1,28 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
|
5
|
-
# If bundler gemspec exists, add to stubs
|
6
|
-
bundler_gemspec = File.expand_path('../../bundler/bundler.gemspec', __dir__)
|
7
|
-
if File.exist?(bundler_gemspec)
|
8
|
-
Gem::Specification.dirs.unshift File.dirname(bundler_gemspec)
|
9
|
-
Gem::Specification.class_variable_set :@@stubs, nil
|
10
|
-
Gem::Specification.stubs
|
11
|
-
Gem::Specification.dirs.shift
|
12
|
-
end
|
3
|
+
require "rubygems"
|
13
4
|
|
14
5
|
begin
|
15
|
-
gem
|
6
|
+
gem "test-unit", "~> 3.0"
|
16
7
|
rescue Gem::LoadError
|
17
8
|
end
|
18
9
|
|
19
|
-
|
20
|
-
require_relative '../../bundler/lib/bundler'
|
21
|
-
else
|
22
|
-
require 'bundler'
|
23
|
-
end
|
24
|
-
|
25
|
-
require 'test/unit'
|
10
|
+
require "test/unit"
|
26
11
|
|
27
12
|
ENV["JARS_SKIP"] = "true" if Gem.java_platform? # avoid unnecessary and noisy `jar-dependencies` post install hook
|
28
13
|
|
29
|
-
require
|
14
|
+
require "rubygems/deprecate"
|
30
15
|
|
31
|
-
require
|
32
|
-
require
|
33
|
-
require
|
34
|
-
require
|
35
|
-
require
|
36
|
-
require
|
37
|
-
require
|
38
|
-
require
|
39
|
-
require
|
40
|
-
require
|
16
|
+
require "fileutils"
|
17
|
+
require "pathname"
|
18
|
+
require "pp"
|
19
|
+
require "rubygems/package"
|
20
|
+
require "shellwords"
|
21
|
+
require "tmpdir"
|
22
|
+
require "uri"
|
23
|
+
require "zlib"
|
24
|
+
require "benchmark" # stdlib
|
25
|
+
require "rubygems/mock_gem_ui"
|
41
26
|
|
42
27
|
module Gem
|
43
28
|
|
@@ -165,15 +150,15 @@ class Gem::TestCase < Test::Unit::TestCase
|
|
165
150
|
# the original value when the block ends
|
166
151
|
|
167
152
|
def enable_shared(value)
|
168
|
-
enable_shared = RbConfig::CONFIG[
|
169
|
-
RbConfig::CONFIG[
|
153
|
+
enable_shared = RbConfig::CONFIG["ENABLE_SHARED"]
|
154
|
+
RbConfig::CONFIG["ENABLE_SHARED"] = value
|
170
155
|
|
171
156
|
yield
|
172
157
|
ensure
|
173
158
|
if enable_shared
|
174
|
-
RbConfig::CONFIG[
|
159
|
+
RbConfig::CONFIG["ENABLE_SHARED"] = enable_shared
|
175
160
|
else
|
176
|
-
RbConfig::CONFIG.delete
|
161
|
+
RbConfig::CONFIG.delete "ENABLE_SHARED"
|
177
162
|
end
|
178
163
|
end
|
179
164
|
|
@@ -182,20 +167,20 @@ class Gem::TestCase < Test::Unit::TestCase
|
|
182
167
|
# original value when the block ends
|
183
168
|
#
|
184
169
|
def vendordir(value)
|
185
|
-
vendordir = RbConfig::CONFIG[
|
170
|
+
vendordir = RbConfig::CONFIG["vendordir"]
|
186
171
|
|
187
172
|
if value
|
188
|
-
RbConfig::CONFIG[
|
173
|
+
RbConfig::CONFIG["vendordir"] = value
|
189
174
|
else
|
190
|
-
RbConfig::CONFIG.delete
|
175
|
+
RbConfig::CONFIG.delete "vendordir"
|
191
176
|
end
|
192
177
|
|
193
178
|
yield
|
194
179
|
ensure
|
195
180
|
if vendordir
|
196
|
-
RbConfig::CONFIG[
|
181
|
+
RbConfig::CONFIG["vendordir"] = vendordir
|
197
182
|
else
|
198
|
-
RbConfig::CONFIG.delete
|
183
|
+
RbConfig::CONFIG.delete "vendordir"
|
199
184
|
end
|
200
185
|
end
|
201
186
|
|
@@ -205,21 +190,21 @@ class Gem::TestCase < Test::Unit::TestCase
|
|
205
190
|
#
|
206
191
|
def bindir(value)
|
207
192
|
with_clean_path_to_ruby do
|
208
|
-
bindir = RbConfig::CONFIG[
|
193
|
+
bindir = RbConfig::CONFIG["bindir"]
|
209
194
|
|
210
195
|
if value
|
211
|
-
RbConfig::CONFIG[
|
196
|
+
RbConfig::CONFIG["bindir"] = value
|
212
197
|
else
|
213
|
-
RbConfig::CONFIG.delete
|
198
|
+
RbConfig::CONFIG.delete "bindir"
|
214
199
|
end
|
215
200
|
|
216
201
|
begin
|
217
202
|
yield
|
218
203
|
ensure
|
219
204
|
if bindir
|
220
|
-
RbConfig::CONFIG[
|
205
|
+
RbConfig::CONFIG["bindir"] = bindir
|
221
206
|
else
|
222
|
-
RbConfig::CONFIG.delete
|
207
|
+
RbConfig::CONFIG.delete "bindir"
|
223
208
|
end
|
224
209
|
end
|
225
210
|
end
|
@@ -230,20 +215,20 @@ class Gem::TestCase < Test::Unit::TestCase
|
|
230
215
|
# original value when the block ends
|
231
216
|
#
|
232
217
|
def exeext(value)
|
233
|
-
exeext = RbConfig::CONFIG[
|
218
|
+
exeext = RbConfig::CONFIG["EXEEXT"]
|
234
219
|
|
235
220
|
if value
|
236
|
-
RbConfig::CONFIG[
|
221
|
+
RbConfig::CONFIG["EXEEXT"] = value
|
237
222
|
else
|
238
|
-
RbConfig::CONFIG.delete
|
223
|
+
RbConfig::CONFIG.delete "EXEEXT"
|
239
224
|
end
|
240
225
|
|
241
226
|
yield
|
242
227
|
ensure
|
243
228
|
if exeext
|
244
|
-
RbConfig::CONFIG[
|
229
|
+
RbConfig::CONFIG["EXEEXT"] = exeext
|
245
230
|
else
|
246
|
-
RbConfig::CONFIG.delete
|
231
|
+
RbConfig::CONFIG.delete "EXEEXT"
|
247
232
|
end
|
248
233
|
end
|
249
234
|
|
@@ -264,23 +249,23 @@ class Gem::TestCase < Test::Unit::TestCase
|
|
264
249
|
end
|
265
250
|
end
|
266
251
|
|
267
|
-
targets <<
|
252
|
+
targets << "" if targets.empty?
|
268
253
|
|
269
254
|
targets
|
270
255
|
end
|
271
256
|
|
272
257
|
def assert_contains_make_command(target, output, msg = nil)
|
273
|
-
if output.
|
258
|
+
if output.include?("\n")
|
274
259
|
msg = build_message(msg,
|
275
260
|
"Expected output containing make command \"%s\", but was \n\nBEGIN_OF_OUTPUT\n%sEND_OF_OUTPUT" % [
|
276
|
-
(
|
261
|
+
("%s %s" % [make_command, target]).rstrip,
|
277
262
|
output,
|
278
263
|
]
|
279
264
|
)
|
280
265
|
else
|
281
266
|
msg = build_message(msg,
|
282
267
|
'Expected make command "%s", but was "%s"' % [
|
283
|
-
(
|
268
|
+
("%s %s" % [make_command, target]).rstrip,
|
284
269
|
output,
|
285
270
|
]
|
286
271
|
)
|
@@ -317,13 +302,15 @@ class Gem::TestCase < Test::Unit::TestCase
|
|
317
302
|
@tempdir = Dir.mktmpdir("test_rubygems_", @tmp)
|
318
303
|
@tempdir.tap(&Gem::UNTAINT)
|
319
304
|
|
320
|
-
ENV[
|
321
|
-
ENV[
|
322
|
-
ENV[
|
323
|
-
ENV[
|
324
|
-
ENV[
|
325
|
-
ENV[
|
326
|
-
ENV[
|
305
|
+
ENV["GEM_VENDOR"] = nil
|
306
|
+
ENV["GEMRC"] = nil
|
307
|
+
ENV["XDG_CACHE_HOME"] = nil
|
308
|
+
ENV["XDG_CONFIG_HOME"] = nil
|
309
|
+
ENV["XDG_DATA_HOME"] = nil
|
310
|
+
ENV["XDG_STATE_HOME"] = nil
|
311
|
+
ENV["SOURCE_DATE_EPOCH"] = nil
|
312
|
+
ENV["BUNDLER_VERSION"] = nil
|
313
|
+
ENV["RUBYGEMS_PREVENT_UPDATE_SUGGESTION"] = "true"
|
327
314
|
|
328
315
|
@current_dir = Dir.pwd
|
329
316
|
@fetcher = nil
|
@@ -334,24 +321,23 @@ class Gem::TestCase < Test::Unit::TestCase
|
|
334
321
|
# capture output
|
335
322
|
Gem::DefaultUserInteraction.ui = Gem::MockGemUi.new
|
336
323
|
|
337
|
-
ENV["TMPDIR"] = @tempdir
|
338
|
-
|
339
324
|
@orig_SYSTEM_WIDE_CONFIG_FILE = Gem::ConfigFile::SYSTEM_WIDE_CONFIG_FILE
|
340
325
|
Gem::ConfigFile.send :remove_const, :SYSTEM_WIDE_CONFIG_FILE
|
341
326
|
Gem::ConfigFile.send :const_set, :SYSTEM_WIDE_CONFIG_FILE,
|
342
|
-
File.join(@tempdir,
|
327
|
+
File.join(@tempdir, "system-gemrc")
|
343
328
|
|
344
|
-
@gemhome = File.join @tempdir,
|
345
|
-
@userhome = File.join @tempdir,
|
346
|
-
|
329
|
+
@gemhome = File.join @tempdir, "gemhome"
|
330
|
+
@userhome = File.join @tempdir, "userhome"
|
331
|
+
@statehome = File.join @tempdir, "statehome"
|
332
|
+
ENV["GEM_SPEC_CACHE"] = File.join @tempdir, "spec_cache"
|
347
333
|
|
348
|
-
@orig_ruby = if ENV[
|
334
|
+
@orig_ruby = if ENV["RUBY"]
|
349
335
|
ruby = Gem.ruby
|
350
|
-
Gem.ruby = ENV[
|
336
|
+
Gem.ruby = ENV["RUBY"]
|
351
337
|
ruby
|
352
338
|
end
|
353
339
|
|
354
|
-
@git = ENV[
|
340
|
+
@git = ENV["GIT"] || "git#{RbConfig::CONFIG['EXEEXT']}"
|
355
341
|
|
356
342
|
Gem.ensure_gem_subdirectories @gemhome
|
357
343
|
Gem.ensure_default_gem_subdirectories @gemhome
|
@@ -372,11 +358,12 @@ class Gem::TestCase < Test::Unit::TestCase
|
|
372
358
|
|
373
359
|
Dir.chdir @tempdir
|
374
360
|
|
375
|
-
ENV[
|
361
|
+
ENV["HOME"] = @userhome
|
376
362
|
Gem.instance_variable_set :@config_file, nil
|
377
363
|
Gem.instance_variable_set :@user_home, nil
|
378
364
|
Gem.instance_variable_set :@config_home, nil
|
379
365
|
Gem.instance_variable_set :@data_home, nil
|
366
|
+
Gem.instance_variable_set :@state_home, @statehome
|
380
367
|
Gem.instance_variable_set :@gemdeps, nil
|
381
368
|
Gem.instance_variable_set :@env_requirements_by_name, nil
|
382
369
|
Gem.send :remove_instance_variable, :@ruby_version if
|
@@ -384,12 +371,12 @@ class Gem::TestCase < Test::Unit::TestCase
|
|
384
371
|
|
385
372
|
FileUtils.mkdir_p @userhome
|
386
373
|
|
387
|
-
ENV[
|
374
|
+
ENV["GEM_PRIVATE_KEY_PASSPHRASE"] = PRIVATE_KEY_PASSPHRASE
|
388
375
|
|
389
376
|
Gem.instance_variable_set(:@default_specifications_dir, nil)
|
390
377
|
if Gem.java_platform?
|
391
|
-
@orig_default_gem_home = RbConfig::CONFIG[
|
392
|
-
RbConfig::CONFIG[
|
378
|
+
@orig_default_gem_home = RbConfig::CONFIG["default_gem_home"]
|
379
|
+
RbConfig::CONFIG["default_gem_home"] = @gemhome
|
393
380
|
else
|
394
381
|
Gem.instance_variable_set(:@default_dir, @gemhome)
|
395
382
|
end
|
@@ -411,7 +398,6 @@ class Gem::TestCase < Test::Unit::TestCase
|
|
411
398
|
Gem.loaded_specs.clear
|
412
399
|
Gem.instance_variable_set(:@activated_gem_paths, 0)
|
413
400
|
Gem.clear_default_specs
|
414
|
-
Bundler.reset!
|
415
401
|
|
416
402
|
Gem.configuration.verbose = true
|
417
403
|
Gem.configuration.update_sources = true
|
@@ -425,12 +411,12 @@ class Gem::TestCase < Test::Unit::TestCase
|
|
425
411
|
Gem.searcher = nil
|
426
412
|
Gem::SpecFetcher.fetcher = nil
|
427
413
|
|
428
|
-
@orig_arch = RbConfig::CONFIG[
|
414
|
+
@orig_arch = RbConfig::CONFIG["arch"]
|
429
415
|
|
430
416
|
if win_platform?
|
431
|
-
util_set_arch
|
417
|
+
util_set_arch "i386-mswin32"
|
432
418
|
else
|
433
|
-
util_set_arch
|
419
|
+
util_set_arch "i686-darwin8.10.1"
|
434
420
|
end
|
435
421
|
|
436
422
|
%w[post_install_hooks done_installing_hooks post_uninstall_hooks pre_uninstall_hooks pre_install_hooks pre_reset_hooks post_reset_hooks post_build_hooks].each do |name|
|
@@ -457,7 +443,7 @@ class Gem::TestCase < Test::Unit::TestCase
|
|
457
443
|
end
|
458
444
|
end
|
459
445
|
|
460
|
-
RbConfig::CONFIG[
|
446
|
+
RbConfig::CONFIG["arch"] = @orig_arch
|
461
447
|
|
462
448
|
if defined? Gem::RemoteFetcher
|
463
449
|
Gem::RemoteFetcher.fetcher = nil
|
@@ -467,7 +453,7 @@ class Gem::TestCase < Test::Unit::TestCase
|
|
467
453
|
|
468
454
|
FileUtils.rm_rf @tempdir
|
469
455
|
|
470
|
-
|
456
|
+
restore_env
|
471
457
|
|
472
458
|
Gem::ConfigFile.send :remove_const, :SYSTEM_WIDE_CONFIG_FILE
|
473
459
|
Gem::ConfigFile.send :const_set, :SYSTEM_WIDE_CONFIG_FILE,
|
@@ -475,13 +461,13 @@ class Gem::TestCase < Test::Unit::TestCase
|
|
475
461
|
|
476
462
|
Gem.ruby = @orig_ruby if @orig_ruby
|
477
463
|
|
478
|
-
RbConfig::CONFIG[
|
479
|
-
RbConfig::CONFIG[
|
480
|
-
RbConfig::CONFIG[
|
464
|
+
RbConfig::CONFIG["mandir"] = @orig_mandir
|
465
|
+
RbConfig::CONFIG["sitelibdir"] = @orig_sitelibdir
|
466
|
+
RbConfig::CONFIG["bindir"] = @orig_bindir
|
481
467
|
|
482
468
|
Gem.instance_variable_set :@default_specifications_dir, nil
|
483
469
|
if Gem.java_platform?
|
484
|
-
RbConfig::CONFIG[
|
470
|
+
RbConfig::CONFIG["default_gem_home"] = @orig_default_gem_home
|
485
471
|
else
|
486
472
|
Gem.instance_variable_set :@default_dir, nil
|
487
473
|
end
|
@@ -497,9 +483,9 @@ class Gem::TestCase < Test::Unit::TestCase
|
|
497
483
|
end
|
498
484
|
|
499
485
|
def credential_setup
|
500
|
-
@temp_cred = File.join(@userhome,
|
486
|
+
@temp_cred = File.join(@userhome, ".gem", "credentials")
|
501
487
|
FileUtils.mkdir_p File.dirname(@temp_cred)
|
502
|
-
File.write @temp_cred,
|
488
|
+
File.write @temp_cred, ":rubygems_api_key: 701229f217cdf23b1344c7b4b54ca97"
|
503
489
|
File.chmod 0600, @temp_cred
|
504
490
|
end
|
505
491
|
|
@@ -554,10 +540,10 @@ class Gem::TestCase < Test::Unit::TestCase
|
|
554
540
|
#
|
555
541
|
# Yields the +specification+ to the block, if given
|
556
542
|
|
557
|
-
def git_gem(name =
|
543
|
+
def git_gem(name = "a", version = 1)
|
558
544
|
have_git?
|
559
545
|
|
560
|
-
directory = File.join
|
546
|
+
directory = File.join "git", name
|
561
547
|
directory = File.expand_path directory
|
562
548
|
|
563
549
|
git_spec = Gem::Specification.new name, version do |specification|
|
@@ -568,22 +554,22 @@ class Gem::TestCase < Test::Unit::TestCase
|
|
568
554
|
|
569
555
|
gemspec = "#{name}.gemspec"
|
570
556
|
|
571
|
-
File.open File.join(directory, gemspec),
|
557
|
+
File.open File.join(directory, gemspec), "w" do |io|
|
572
558
|
io.write git_spec.to_ruby
|
573
559
|
end
|
574
560
|
|
575
561
|
head = nil
|
576
562
|
|
577
563
|
Dir.chdir directory do
|
578
|
-
unless File.exist?
|
579
|
-
system @git,
|
580
|
-
system @git,
|
581
|
-
system @git,
|
564
|
+
unless File.exist? ".git"
|
565
|
+
system @git, "init", "--quiet"
|
566
|
+
system @git, "config", "user.name", "RubyGems Tests"
|
567
|
+
system @git, "config", "user.email", "rubygems@example"
|
582
568
|
end
|
583
569
|
|
584
|
-
system @git,
|
585
|
-
system @git,
|
586
|
-
head = Gem::Util.popen(@git,
|
570
|
+
system @git, "add", gemspec
|
571
|
+
system @git, "commit", "-a", "-m", "a non-empty commit message", "--quiet"
|
572
|
+
head = Gem::Util.popen(@git, "rev-parse", "HEAD").strip
|
587
573
|
end
|
588
574
|
|
589
575
|
return name, git_spec.version, directory, head
|
@@ -595,13 +581,13 @@ class Gem::TestCase < Test::Unit::TestCase
|
|
595
581
|
def have_git?
|
596
582
|
return if in_path? @git
|
597
583
|
|
598
|
-
pend
|
584
|
+
pend "cannot find git executable, use GIT environment variable to set"
|
599
585
|
end
|
600
586
|
|
601
587
|
def in_path?(executable) # :nodoc:
|
602
|
-
return true if %r{\A([A-Z]:|/)} =~ executable
|
588
|
+
return true if %r{\A([A-Z]:|/)} =~ executable && File.exist?(executable)
|
603
589
|
|
604
|
-
ENV[
|
590
|
+
ENV["PATH"].split(File::PATH_SEPARATOR).any? do |directory|
|
605
591
|
File.exist? File.join directory, executable
|
606
592
|
end
|
607
593
|
end
|
@@ -610,7 +596,7 @@ class Gem::TestCase < Test::Unit::TestCase
|
|
610
596
|
# Builds and installs the Gem::Specification +spec+
|
611
597
|
|
612
598
|
def install_gem(spec, options = {})
|
613
|
-
require
|
599
|
+
require "rubygems/installer"
|
614
600
|
|
615
601
|
gem = spec.cache_file
|
616
602
|
|
@@ -637,7 +623,7 @@ class Gem::TestCase < Test::Unit::TestCase
|
|
637
623
|
##
|
638
624
|
# Uninstalls the Gem::Specification +spec+
|
639
625
|
def uninstall_gem(spec)
|
640
|
-
require
|
626
|
+
require "rubygems/uninstaller"
|
641
627
|
|
642
628
|
Class.new(Gem::Uninstaller) do
|
643
629
|
def ask_if_ok(spec)
|
@@ -660,7 +646,7 @@ class Gem::TestCase < Test::Unit::TestCase
|
|
660
646
|
# Reads a Marshal file at +path+
|
661
647
|
|
662
648
|
def read_cache(path)
|
663
|
-
File.open path.dup.tap(&Gem::UNTAINT),
|
649
|
+
File.open path.dup.tap(&Gem::UNTAINT), "rb" do |io|
|
664
650
|
Marshal.load io.read
|
665
651
|
end
|
666
652
|
end
|
@@ -680,7 +666,7 @@ class Gem::TestCase < Test::Unit::TestCase
|
|
680
666
|
dir = File.dirname path
|
681
667
|
FileUtils.mkdir_p dir unless File.directory? dir
|
682
668
|
|
683
|
-
File.open path,
|
669
|
+
File.open path, "wb" do |io|
|
684
670
|
yield io if block_given?
|
685
671
|
end
|
686
672
|
|
@@ -723,16 +709,16 @@ class Gem::TestCase < Test::Unit::TestCase
|
|
723
709
|
#
|
724
710
|
# Use this with #write_file to build an installed gem.
|
725
711
|
|
726
|
-
def quick_gem(name, version=
|
727
|
-
require
|
712
|
+
def quick_gem(name, version="2")
|
713
|
+
require "rubygems/specification"
|
728
714
|
|
729
715
|
spec = Gem::Specification.new do |s|
|
730
716
|
s.platform = Gem::Platform::RUBY
|
731
717
|
s.name = name
|
732
718
|
s.version = version
|
733
|
-
s.author =
|
734
|
-
s.email =
|
735
|
-
s.homepage =
|
719
|
+
s.author = "A User"
|
720
|
+
s.email = "example@example.com"
|
721
|
+
s.homepage = "http://example.com"
|
736
722
|
s.summary = "this is a summary"
|
737
723
|
s.description = "This is a test description"
|
738
724
|
|
@@ -763,7 +749,7 @@ class Gem::TestCase < Test::Unit::TestCase
|
|
763
749
|
next if File.exist? file
|
764
750
|
FileUtils.mkdir_p File.dirname(file)
|
765
751
|
|
766
|
-
File.open file,
|
752
|
+
File.open file, "w" do |fp|
|
767
753
|
fp.puts "# #{file}"
|
768
754
|
end
|
769
755
|
end
|
@@ -849,15 +835,15 @@ class Gem::TestCase < Test::Unit::TestCase
|
|
849
835
|
# or a +block+ can be given for full customization of the specification.
|
850
836
|
|
851
837
|
def util_spec(name, version = 2, deps = nil, *files) # :yields: specification
|
852
|
-
raise "deps or block, not both" if deps
|
838
|
+
raise "deps or block, not both" if deps && block_given?
|
853
839
|
|
854
840
|
spec = Gem::Specification.new do |s|
|
855
841
|
s.platform = Gem::Platform::RUBY
|
856
842
|
s.name = name
|
857
843
|
s.version = version
|
858
|
-
s.author =
|
859
|
-
s.email =
|
860
|
-
s.homepage =
|
844
|
+
s.author = "A User"
|
845
|
+
s.email = "example@example.com"
|
846
|
+
s.homepage = "http://example.com"
|
861
847
|
s.summary = "this is a summary"
|
862
848
|
s.description = "This is a test description"
|
863
849
|
|
@@ -868,7 +854,7 @@ class Gem::TestCase < Test::Unit::TestCase
|
|
868
854
|
|
869
855
|
if deps
|
870
856
|
deps.keys.each do |n|
|
871
|
-
spec.add_dependency n, (deps[n] ||
|
857
|
+
spec.add_dependency n, (deps[n] || ">= 0")
|
872
858
|
end
|
873
859
|
end
|
874
860
|
|
@@ -895,7 +881,7 @@ class Gem::TestCase < Test::Unit::TestCase
|
|
895
881
|
if deps
|
896
882
|
block = proc do |s|
|
897
883
|
deps.keys.each do |n|
|
898
|
-
s.add_dependency n, (deps[n] ||
|
884
|
+
s.add_dependency n, (deps[n] || ">= 0")
|
899
885
|
end
|
900
886
|
end
|
901
887
|
end
|
@@ -904,7 +890,7 @@ class Gem::TestCase < Test::Unit::TestCase
|
|
904
890
|
|
905
891
|
util_build_gem spec
|
906
892
|
|
907
|
-
cache_file = File.join @tempdir,
|
893
|
+
cache_file = File.join @tempdir, "gems", "#{spec.original_name}.gem"
|
908
894
|
FileUtils.mkdir_p File.dirname cache_file
|
909
895
|
FileUtils.mv spec.cache_file, cache_file
|
910
896
|
FileUtils.rm spec.spec_file
|
@@ -946,11 +932,11 @@ class Gem::TestCase < Test::Unit::TestCase
|
|
946
932
|
# TODO: nuke this and fix tests. this should speed up a lot
|
947
933
|
|
948
934
|
def util_make_gems(prerelease = false)
|
949
|
-
@a1 = quick_gem
|
935
|
+
@a1 = quick_gem "a", "1" do |s|
|
950
936
|
s.files = %w[lib/code.rb]
|
951
937
|
s.require_paths = %w[lib]
|
952
938
|
s.date = Gem::Specification::TODAY - 86400
|
953
|
-
s.homepage =
|
939
|
+
s.homepage = "http://a.example.com"
|
954
940
|
s.email = %w[example@example.com example2@example.com]
|
955
941
|
s.authors = %w[Example Example2]
|
956
942
|
s.description = <<-DESC
|
@@ -967,27 +953,27 @@ Also, a list:
|
|
967
953
|
s.require_paths = %w[lib]
|
968
954
|
end
|
969
955
|
|
970
|
-
@a2 = quick_gem(
|
971
|
-
@a3a = quick_gem(
|
972
|
-
@a_evil9 = quick_gem(
|
973
|
-
@b2 = quick_gem(
|
974
|
-
@c1_2 = quick_gem(
|
975
|
-
@x = quick_gem(
|
976
|
-
@dep_x = quick_gem(
|
956
|
+
@a2 = quick_gem("a", "2", &init)
|
957
|
+
@a3a = quick_gem("a", "3.a", &init)
|
958
|
+
@a_evil9 = quick_gem("a_evil", "9", &init)
|
959
|
+
@b2 = quick_gem("b", "2", &init)
|
960
|
+
@c1_2 = quick_gem("c", "1.2", &init)
|
961
|
+
@x = quick_gem("x", "1", &init)
|
962
|
+
@dep_x = quick_gem("dep_x", "1") do |s|
|
977
963
|
s.files = %w[lib/code.rb]
|
978
964
|
s.require_paths = %w[lib]
|
979
|
-
s.add_dependency
|
965
|
+
s.add_dependency "x", ">= 1"
|
980
966
|
end
|
981
967
|
|
982
|
-
@pl1 = quick_gem
|
968
|
+
@pl1 = quick_gem "pl", "1" do |s| # l for legacy
|
983
969
|
s.files = %w[lib/code.rb]
|
984
970
|
s.require_paths = %w[lib]
|
985
|
-
s.platform = Gem::Platform.new
|
986
|
-
s.instance_variable_set :@original_platform,
|
971
|
+
s.platform = Gem::Platform.new "i386-linux"
|
972
|
+
s.instance_variable_set :@original_platform, "i386-linux"
|
987
973
|
end
|
988
974
|
|
989
975
|
if prerelease
|
990
|
-
@a2_pre = quick_gem(
|
976
|
+
@a2_pre = quick_gem("a", "2.a", &init)
|
991
977
|
write_file File.join(*%W[gems #{@a2_pre.original_name} lib code.rb])
|
992
978
|
util_build_gem @a2_pre
|
993
979
|
end
|
@@ -1013,7 +999,7 @@ Also, a list:
|
|
1013
999
|
# Set the platform to +arch+
|
1014
1000
|
|
1015
1001
|
def util_set_arch(arch)
|
1016
|
-
RbConfig::CONFIG[
|
1002
|
+
RbConfig::CONFIG["arch"] = arch
|
1017
1003
|
platform = Gem::Platform.new arch
|
1018
1004
|
|
1019
1005
|
Gem.instance_variable_set :@platforms, nil
|
@@ -1182,7 +1168,7 @@ Also, a list:
|
|
1182
1168
|
# Borland) versus Cygwin, Mingw, etc.
|
1183
1169
|
|
1184
1170
|
def self.vc_windows?
|
1185
|
-
RUBY_PLATFORM.match(
|
1171
|
+
RUBY_PLATFORM.match("mswin")
|
1186
1172
|
end
|
1187
1173
|
|
1188
1174
|
##
|
@@ -1190,7 +1176,21 @@ Also, a list:
|
|
1190
1176
|
# Borland) versus Cygwin, Mingw, etc.
|
1191
1177
|
|
1192
1178
|
def vc_windows?
|
1193
|
-
RUBY_PLATFORM.match(
|
1179
|
+
RUBY_PLATFORM.match("mswin")
|
1180
|
+
end
|
1181
|
+
|
1182
|
+
##
|
1183
|
+
# Is this test being run on a version of Ruby built with mingw?
|
1184
|
+
|
1185
|
+
def self.mingw_windows?
|
1186
|
+
RUBY_PLATFORM.match("mingw")
|
1187
|
+
end
|
1188
|
+
|
1189
|
+
##
|
1190
|
+
# Is this test being run on a version of Ruby built with mingw?
|
1191
|
+
|
1192
|
+
def mingw_windows?
|
1193
|
+
RUBY_PLATFORM.match("mingw")
|
1194
1194
|
end
|
1195
1195
|
|
1196
1196
|
##
|
@@ -1207,7 +1207,7 @@ Also, a list:
|
|
1207
1207
|
# other platforms, including Cygwin, it will return 'make'.
|
1208
1208
|
|
1209
1209
|
def self.make_command
|
1210
|
-
ENV["make"] || ENV["MAKE"] || (vc_windows? ?
|
1210
|
+
ENV["make"] || ENV["MAKE"] || (vc_windows? ? "nmake" : "make")
|
1211
1211
|
end
|
1212
1212
|
|
1213
1213
|
##
|
@@ -1216,14 +1216,14 @@ Also, a list:
|
|
1216
1216
|
# other platforms, including Cygwin, it will return 'make'.
|
1217
1217
|
|
1218
1218
|
def make_command
|
1219
|
-
ENV["make"] || ENV["MAKE"] || (vc_windows? ?
|
1219
|
+
ENV["make"] || ENV["MAKE"] || (vc_windows? ? "nmake" : "make")
|
1220
1220
|
end
|
1221
1221
|
|
1222
1222
|
##
|
1223
1223
|
# Returns whether or not the nmake command could be found.
|
1224
1224
|
|
1225
1225
|
def nmake_found?
|
1226
|
-
system(
|
1226
|
+
system("nmake /? 1>NUL 2>&1")
|
1227
1227
|
end
|
1228
1228
|
|
1229
1229
|
# In case we're building docs in a background process, this method waits for
|
@@ -1276,13 +1276,13 @@ Also, a list:
|
|
1276
1276
|
ruby = ENV["RUBY"]
|
1277
1277
|
return ruby if ruby
|
1278
1278
|
ruby = "ruby"
|
1279
|
-
rubyexe = "#{ruby}
|
1279
|
+
rubyexe = "#{ruby}#{RbConfig::CONFIG['EXEEXT']}"
|
1280
1280
|
|
1281
1281
|
3.times do
|
1282
|
-
if File.exist?
|
1282
|
+
if File.exist?(ruby) && File.executable?(ruby) && !File.directory?(ruby)
|
1283
1283
|
return File.expand_path(ruby)
|
1284
1284
|
end
|
1285
|
-
if File.exist?
|
1285
|
+
if File.exist?(rubyexe) && File.executable?(rubyexe)
|
1286
1286
|
return File.expand_path(rubyexe)
|
1287
1287
|
end
|
1288
1288
|
ruby = File.join("..", ruby)
|
@@ -1303,6 +1303,10 @@ Also, a list:
|
|
1303
1303
|
$LOAD_PATH.find {|p| p == File.dirname($LOADED_FEATURES.find {|f| f.end_with?("/rubygems.rb") }) }
|
1304
1304
|
end
|
1305
1305
|
|
1306
|
+
def bundler_path
|
1307
|
+
$LOAD_PATH.find {|p| p == File.dirname($LOADED_FEATURES.find {|f| f.end_with?("/bundler.rb") }) }
|
1308
|
+
end
|
1309
|
+
|
1306
1310
|
def with_clean_path_to_ruby
|
1307
1311
|
orig_ruby = Gem.ruby
|
1308
1312
|
|
@@ -1431,8 +1435,8 @@ Also, a list:
|
|
1431
1435
|
#
|
1432
1436
|
# Yields the +specification+ to the block, if given
|
1433
1437
|
|
1434
|
-
def vendor_gem(name =
|
1435
|
-
directory = File.join
|
1438
|
+
def vendor_gem(name = "a", version = 1)
|
1439
|
+
directory = File.join "vendor", name
|
1436
1440
|
|
1437
1441
|
FileUtils.mkdir_p directory
|
1438
1442
|
|
@@ -1445,12 +1449,12 @@ Also, a list:
|
|
1445
1449
|
#
|
1446
1450
|
# Yields the +specification+ to the block, if given
|
1447
1451
|
|
1448
|
-
def save_gemspec(name =
|
1452
|
+
def save_gemspec(name = "a", version = 1, directory = ".")
|
1449
1453
|
vendor_spec = Gem::Specification.new name, version do |specification|
|
1450
1454
|
yield specification if block_given?
|
1451
1455
|
end
|
1452
1456
|
|
1453
|
-
File.open File.join(directory, "#{name}.gemspec"),
|
1457
|
+
File.open File.join(directory, "#{name}.gemspec"), "w" do |io|
|
1454
1458
|
io.write vendor_spec.to_ruby
|
1455
1459
|
end
|
1456
1460
|
|
@@ -1564,25 +1568,42 @@ Also, a list:
|
|
1564
1568
|
# :stopdoc:
|
1565
1569
|
# only available in RubyGems tests
|
1566
1570
|
|
1567
|
-
PRIVATE_KEY_PASSPHRASE =
|
1571
|
+
PRIVATE_KEY_PASSPHRASE = "Foo bar"
|
1568
1572
|
|
1569
1573
|
begin
|
1570
|
-
PRIVATE_KEY = load_key
|
1571
|
-
PRIVATE_KEY_PATH = key_path
|
1574
|
+
PRIVATE_KEY = load_key "private"
|
1575
|
+
PRIVATE_KEY_PATH = key_path "private"
|
1572
1576
|
|
1573
1577
|
# ENCRYPTED_PRIVATE_KEY is PRIVATE_KEY encrypted with PRIVATE_KEY_PASSPHRASE
|
1574
|
-
ENCRYPTED_PRIVATE_KEY = load_key
|
1575
|
-
ENCRYPTED_PRIVATE_KEY_PATH = key_path
|
1578
|
+
ENCRYPTED_PRIVATE_KEY = load_key "encrypted_private", PRIVATE_KEY_PASSPHRASE
|
1579
|
+
ENCRYPTED_PRIVATE_KEY_PATH = key_path "encrypted_private"
|
1576
1580
|
|
1577
1581
|
PUBLIC_KEY = PRIVATE_KEY.public_key
|
1578
1582
|
|
1579
|
-
PUBLIC_CERT = load_cert
|
1580
|
-
PUBLIC_CERT_PATH = cert_path
|
1583
|
+
PUBLIC_CERT = load_cert "public"
|
1584
|
+
PUBLIC_CERT_PATH = cert_path "public"
|
1581
1585
|
rescue Errno::ENOENT
|
1582
1586
|
PRIVATE_KEY = nil
|
1583
1587
|
PUBLIC_KEY = nil
|
1584
1588
|
PUBLIC_CERT = nil
|
1585
1589
|
end if Gem::HAVE_OPENSSL
|
1590
|
+
|
1591
|
+
private
|
1592
|
+
|
1593
|
+
def restore_env
|
1594
|
+
unless Gem.win_platform?
|
1595
|
+
ENV.replace(@orig_env)
|
1596
|
+
return
|
1597
|
+
end
|
1598
|
+
|
1599
|
+
# Fallback logic for Windows below to workaround
|
1600
|
+
# https://bugs.ruby-lang.org/issues/16798. Can be dropped once all
|
1601
|
+
# supported rubies include the fix for that.
|
1602
|
+
|
1603
|
+
ENV.clear
|
1604
|
+
|
1605
|
+
@orig_env.each {|k, v| ENV[k] = v }
|
1606
|
+
end
|
1586
1607
|
end
|
1587
1608
|
|
1588
1609
|
# https://github.com/seattlerb/minitest/blob/13c48a03d84a2a87855a4de0c959f96800100357/lib/minitest/mock.rb#L192
|
@@ -1592,7 +1613,7 @@ class Object
|
|
1592
1613
|
|
1593
1614
|
metaclass = class << self; self; end
|
1594
1615
|
|
1595
|
-
if respond_to?
|
1616
|
+
if respond_to?(name) && !methods.map(&:to_s).include?(name.to_s)
|
1596
1617
|
metaclass.send :define_method, name do |*args|
|
1597
1618
|
super(*args)
|
1598
1619
|
end
|
@@ -1604,7 +1625,7 @@ class Object
|
|
1604
1625
|
if val_or_callable.respond_to? :call
|
1605
1626
|
val_or_callable.call(*args, &blk)
|
1606
1627
|
else
|
1607
|
-
blk
|
1628
|
+
blk&.call(*block_args)
|
1608
1629
|
val_or_callable
|
1609
1630
|
end
|
1610
1631
|
end
|
@@ -1619,4 +1640,4 @@ class Object
|
|
1619
1640
|
end unless method_defined?(:stub) # lib/resolv/test_dns.rb also has the same method definition
|
1620
1641
|
end
|
1621
1642
|
|
1622
|
-
require_relative
|
1643
|
+
require_relative "utilities"
|