rubygems-update 3.3.18 → 3.4.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1429 -1064
- data/CONTRIBUTING.md +31 -8
- data/Manifest.txt +61 -36
- data/POLICIES.md +55 -20
- data/README.md +19 -6
- data/bundler/CHANGELOG.md +457 -1
- data/bundler/README.md +3 -6
- data/bundler/UPGRADING.md +11 -4
- data/bundler/bundler.gemspec +8 -10
- data/bundler/exe/bundle +5 -16
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/cli/add.rb +1 -1
- data/bundler/lib/bundler/cli/binstubs.rb +6 -2
- data/bundler/lib/bundler/cli/check.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +2 -0
- data/bundler/lib/bundler/cli/console.rb +2 -2
- data/bundler/lib/bundler/cli/doctor.rb +4 -6
- data/bundler/lib/bundler/cli/gem.rb +62 -40
- data/bundler/lib/bundler/cli/info.rb +1 -1
- data/bundler/lib/bundler/cli/init.rb +6 -2
- data/bundler/lib/bundler/cli/install.rb +8 -6
- data/bundler/lib/bundler/cli/lock.rb +8 -5
- data/bundler/lib/bundler/cli/open.rb +6 -4
- data/bundler/lib/bundler/cli/outdated.rb +14 -7
- data/bundler/lib/bundler/cli/platform.rb +7 -5
- data/bundler/lib/bundler/cli/viz.rb +1 -1
- data/bundler/lib/bundler/cli.rb +53 -7
- data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
- data/bundler/lib/bundler/compact_index_client/updater.rb +40 -39
- data/bundler/lib/bundler/constants.rb +1 -1
- data/bundler/lib/bundler/current_ruby.rb +16 -5
- data/bundler/lib/bundler/definition.rb +262 -133
- data/bundler/lib/bundler/dependency.rb +20 -86
- data/bundler/lib/bundler/digest.rb +1 -1
- data/bundler/lib/bundler/dsl.rb +6 -7
- data/bundler/lib/bundler/endpoint_specification.rb +2 -13
- data/bundler/lib/bundler/env.rb +2 -2
- data/bundler/lib/bundler/environment_preserver.rb +3 -2
- data/bundler/lib/bundler/errors.rb +1 -11
- data/bundler/lib/bundler/feature_flag.rb +0 -2
- data/bundler/lib/bundler/fetcher/compact_index.rb +11 -13
- data/bundler/lib/bundler/fetcher/dependency.rb +2 -6
- data/bundler/lib/bundler/fetcher/downloader.rb +4 -5
- data/bundler/lib/bundler/fetcher/index.rb +1 -2
- data/bundler/lib/bundler/fetcher.rb +21 -15
- data/bundler/lib/bundler/force_platform.rb +18 -0
- data/bundler/lib/bundler/friendly_errors.rb +1 -4
- data/bundler/lib/bundler/gem_helper.rb +3 -4
- data/bundler/lib/bundler/gem_helpers.rb +7 -2
- data/bundler/lib/bundler/gem_version_promoter.rb +53 -98
- data/bundler/lib/bundler/graph.rb +3 -3
- data/bundler/lib/bundler/index.rb +13 -47
- data/bundler/lib/bundler/injector.rb +5 -4
- data/bundler/lib/bundler/inline.rb +9 -11
- data/bundler/lib/bundler/installer/parallel_installer.rb +4 -34
- data/bundler/lib/bundler/installer/standalone.rb +13 -9
- data/bundler/lib/bundler/installer.rb +17 -29
- data/bundler/lib/bundler/lazy_specification.rb +54 -53
- data/bundler/lib/bundler/lockfile_generator.rb +3 -3
- data/bundler/lib/bundler/lockfile_parser.rb +17 -16
- data/bundler/lib/bundler/man/bundle-add.1 +6 -2
- data/bundler/lib/bundler/man/bundle-add.1.ronn +4 -1
- data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
- data/bundler/lib/bundler/man/bundle-cache.1 +9 -3
- data/bundler/lib/bundler/man/bundle-cache.1.ronn +9 -2
- data/bundler/lib/bundler/man/bundle-check.1 +1 -1
- data/bundler/lib/bundler/man/bundle-clean.1 +2 -2
- data/bundler/lib/bundler/man/bundle-clean.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-config.1 +26 -10
- data/bundler/lib/bundler/man/bundle-config.1.ronn +17 -10
- data/bundler/lib/bundler/man/bundle-console.1 +53 -0
- data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
- data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
- data/bundler/lib/bundler/man/bundle-exec.1 +6 -6
- data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -6
- data/bundler/lib/bundler/man/bundle-gem.1 +27 -37
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +5 -5
- data/bundler/lib/bundler/man/bundle-help.1 +13 -0
- data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
- data/bundler/lib/bundler/man/bundle-info.1 +3 -3
- data/bundler/lib/bundler/man/bundle-info.1.ronn +3 -3
- data/bundler/lib/bundler/man/bundle-init.1 +5 -1
- data/bundler/lib/bundler/man/bundle-init.1.ronn +2 -0
- data/bundler/lib/bundler/man/bundle-inject.1 +5 -2
- data/bundler/lib/bundler/man/bundle-inject.1.ronn +3 -1
- data/bundler/lib/bundler/man/bundle-install.1 +5 -30
- data/bundler/lib/bundler/man/bundle-install.1.ronn +6 -29
- data/bundler/lib/bundler/man/bundle-list.1 +1 -1
- data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
- data/bundler/lib/bundler/man/bundle-open.1 +22 -2
- data/bundler/lib/bundler/man/bundle-open.1.ronn +9 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +13 -9
- data/bundler/lib/bundler/man/bundle-outdated.1.ronn +12 -9
- data/bundler/lib/bundler/man/bundle-platform.1 +16 -6
- data/bundler/lib/bundler/man/bundle-platform.1.ronn +14 -7
- data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
- data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
- data/bundler/lib/bundler/man/bundle-show.1 +1 -1
- data/bundler/lib/bundler/man/bundle-update.1 +1 -1
- data/bundler/lib/bundler/man/bundle-version.1 +35 -0
- data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
- data/bundler/lib/bundler/man/bundle-viz.1 +4 -1
- data/bundler/lib/bundler/man/bundle-viz.1.ronn +2 -0
- data/bundler/lib/bundler/man/bundle.1 +15 -10
- data/bundler/lib/bundler/man/bundle.1.ronn +12 -7
- data/bundler/lib/bundler/man/gemfile.5 +55 -55
- data/bundler/lib/bundler/man/gemfile.5.ronn +57 -53
- data/bundler/lib/bundler/man/index.txt +4 -0
- data/bundler/lib/bundler/match_metadata.rb +13 -0
- data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
- data/bundler/lib/bundler/mirror.rb +5 -7
- data/bundler/lib/bundler/plugin/index.rb +5 -5
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -4
- data/bundler/lib/bundler/plugin/installer.rb +5 -2
- data/bundler/lib/bundler/plugin.rb +3 -1
- data/bundler/lib/bundler/remote_specification.rb +7 -12
- data/bundler/lib/bundler/resolver/base.rb +107 -0
- data/bundler/lib/bundler/resolver/candidate.rb +94 -0
- data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
- data/bundler/lib/bundler/resolver/package.rb +72 -0
- data/bundler/lib/bundler/resolver/root.rb +25 -0
- data/bundler/lib/bundler/resolver/spec_group.rb +42 -71
- data/bundler/lib/bundler/resolver.rb +335 -328
- data/bundler/lib/bundler/ruby_dsl.rb +7 -1
- data/bundler/lib/bundler/ruby_version.rb +8 -8
- data/bundler/lib/bundler/rubygems_ext.rb +100 -9
- data/bundler/lib/bundler/rubygems_gem_installer.rb +23 -14
- data/bundler/lib/bundler/rubygems_integration.rb +11 -15
- data/bundler/lib/bundler/runtime.rb +2 -6
- data/bundler/lib/bundler/safe_marshal.rb +31 -0
- data/bundler/lib/bundler/settings.rb +5 -11
- data/bundler/lib/bundler/setup.rb +4 -1
- data/bundler/lib/bundler/shared_helpers.rb +3 -3
- data/bundler/lib/bundler/source/git/git_proxy.rb +237 -74
- data/bundler/lib/bundler/source/git.rb +55 -30
- data/bundler/lib/bundler/source/metadata.rb +1 -2
- data/bundler/lib/bundler/source/path/installer.rb +1 -22
- data/bundler/lib/bundler/source/path.rb +6 -6
- data/bundler/lib/bundler/source/rubygems.rb +26 -81
- data/bundler/lib/bundler/source.rb +1 -1
- data/bundler/lib/bundler/source_list.rb +8 -2
- data/bundler/lib/bundler/spec_set.rb +60 -37
- data/bundler/lib/bundler/templates/Executable +1 -1
- data/bundler/lib/bundler/templates/Executable.bundler +5 -10
- data/bundler/lib/bundler/templates/Executable.standalone +2 -0
- data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/README.md.tt +6 -4
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +12 -1
- data/bundler/lib/bundler/templates/newgem/bin/console.tt +0 -4
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt +10 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +1 -1
- data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +10 -0
- data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +13 -4
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +9 -2
- data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
- data/bundler/lib/bundler/ui/shell.rb +35 -12
- data/bundler/lib/bundler/ui/silent.rb +21 -5
- data/bundler/lib/bundler/uri_normalizer.rb +23 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1351 -409
- data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
- data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +248 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +64 -16
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +27 -7
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +15 -9
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +11 -6
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +1 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -2
- data/bundler/lib/bundler/vendored_persistent.rb +1 -33
- data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_pub_grub.rb} +1 -1
- data/bundler/lib/bundler/version.rb +5 -1
- data/bundler/lib/bundler/worker.rb +5 -7
- data/bundler/lib/bundler.rb +25 -77
- data/{bin → exe}/gem +4 -5
- data/{bin → exe}/update_rubygems +12 -10
- data/lib/rubygems/available_set.rb +4 -3
- data/lib/rubygems/basic_specification.rb +5 -4
- data/lib/rubygems/bundler_version_finder.rb +2 -2
- data/lib/rubygems/command.rb +41 -32
- data/lib/rubygems/command_manager.rb +30 -15
- data/lib/rubygems/commands/build_command.rb +12 -8
- data/lib/rubygems/commands/cert_command.rb +34 -33
- data/lib/rubygems/commands/check_command.rb +21 -20
- data/lib/rubygems/commands/cleanup_command.rb +18 -17
- data/lib/rubygems/commands/contents_command.rb +14 -13
- data/lib/rubygems/commands/dependency_command.rb +17 -16
- data/lib/rubygems/commands/environment_command.rb +6 -5
- data/lib/rubygems/commands/exec_command.rb +249 -0
- data/lib/rubygems/commands/fetch_command.rb +10 -9
- data/lib/rubygems/commands/generate_index_command.rb +18 -17
- data/lib/rubygems/commands/help_command.rb +7 -6
- data/lib/rubygems/commands/info_command.rb +3 -3
- data/lib/rubygems/commands/install_command.rb +28 -23
- data/lib/rubygems/commands/list_command.rb +4 -3
- data/lib/rubygems/commands/lock_command.rb +5 -4
- data/lib/rubygems/commands/mirror_command.rb +4 -3
- data/lib/rubygems/commands/open_command.rb +10 -9
- data/lib/rubygems/commands/outdated_command.rb +6 -5
- data/lib/rubygems/commands/owner_command.rb +17 -14
- data/lib/rubygems/commands/pristine_command.rb +46 -36
- data/lib/rubygems/commands/push_command.rb +9 -8
- data/lib/rubygems/commands/query_command.rb +9 -8
- data/lib/rubygems/commands/rdoc_command.rb +21 -19
- data/lib/rubygems/commands/search_command.rb +4 -3
- data/lib/rubygems/commands/server_command.rb +4 -3
- data/lib/rubygems/commands/setup_command.rb +97 -106
- data/lib/rubygems/commands/signin_command.rb +10 -9
- data/lib/rubygems/commands/signout_command.rb +8 -7
- data/lib/rubygems/commands/sources_command.rb +22 -21
- data/lib/rubygems/commands/specification_command.rb +14 -13
- data/lib/rubygems/commands/stale_command.rb +3 -2
- data/lib/rubygems/commands/uninstall_command.rb +44 -40
- data/lib/rubygems/commands/unpack_command.rb +14 -13
- data/lib/rubygems/commands/update_command.rb +42 -63
- data/lib/rubygems/commands/which_command.rb +8 -7
- data/lib/rubygems/commands/yank_command.rb +12 -11
- data/lib/rubygems/config_file.rb +55 -21
- data/lib/rubygems/core_ext/kernel_gem.rb +1 -6
- data/lib/rubygems/core_ext/kernel_require.rb +109 -115
- data/lib/rubygems/core_ext/kernel_warn.rb +33 -37
- data/lib/rubygems/core_ext/tcpsocket_init.rb +3 -1
- data/lib/rubygems/defaults.rb +33 -18
- data/lib/rubygems/dependency.rb +15 -11
- data/lib/rubygems/dependency_installer.rb +38 -37
- data/lib/rubygems/dependency_list.rb +7 -6
- data/lib/rubygems/deprecate.rb +3 -2
- data/lib/rubygems/doctor.rb +19 -18
- data/lib/rubygems/errors.rb +3 -2
- data/lib/rubygems/exceptions.rb +16 -8
- data/lib/rubygems/ext/build_error.rb +2 -1
- data/lib/rubygems/ext/builder.rb +37 -21
- data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +9 -5
- data/lib/rubygems/ext/cargo_builder.rb +150 -111
- data/lib/rubygems/ext/cmake_builder.rb +2 -2
- data/lib/rubygems/ext/configure_builder.rb +2 -1
- data/lib/rubygems/ext/ext_conf_builder.rb +11 -9
- data/lib/rubygems/ext/rake_builder.rb +7 -5
- data/lib/rubygems/ext.rb +8 -7
- data/lib/rubygems/gem_runner.rb +6 -5
- data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +163 -0
- data/lib/rubygems/gemcutter_utilities/webauthn_listener.rb +105 -0
- data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +78 -0
- data/lib/rubygems/gemcutter_utilities.rb +90 -34
- data/lib/rubygems/indexer.rb +29 -28
- data/lib/rubygems/install_default_message.rb +3 -2
- data/lib/rubygems/install_message.rb +3 -2
- data/lib/rubygems/install_update_options.rb +56 -55
- data/lib/rubygems/installer.rb +54 -46
- data/lib/rubygems/installer_uninstaller_utils.rb +2 -2
- data/lib/rubygems/local_remote_options.rb +19 -20
- data/lib/rubygems/mock_gem_ui.rb +3 -2
- data/lib/rubygems/name_tuple.rb +5 -4
- data/lib/rubygems/optparse/lib/optparse.rb +20 -15
- data/lib/rubygems/optparse.rb +1 -1
- data/lib/rubygems/package/digest_io.rb +1 -0
- data/lib/rubygems/package/file_source.rb +3 -2
- data/lib/rubygems/package/io_source.rb +1 -0
- data/lib/rubygems/package/old.rb +9 -8
- data/lib/rubygems/package/source.rb +1 -0
- data/lib/rubygems/package/tar_header.rb +63 -62
- data/lib/rubygems/package/tar_reader/entry.rb +91 -9
- data/lib/rubygems/package/tar_reader.rb +2 -29
- data/lib/rubygems/package/tar_writer.rb +8 -7
- data/lib/rubygems/package.rb +64 -48
- data/lib/rubygems/package_task.rb +5 -4
- data/lib/rubygems/path_support.rb +1 -0
- data/lib/rubygems/platform.rb +79 -53
- data/lib/rubygems/psych_tree.rb +2 -1
- data/lib/rubygems/query_utils.rb +35 -35
- data/lib/rubygems/rdoc.rb +3 -2
- data/lib/rubygems/remote_fetcher.rb +23 -22
- data/lib/rubygems/request/connection_pools.rb +4 -4
- data/lib/rubygems/request/http_pool.rb +2 -1
- data/lib/rubygems/request/https_pool.rb +1 -0
- data/lib/rubygems/request.rb +23 -22
- data/lib/rubygems/request_set/gem_dependency_api.rb +123 -123
- data/lib/rubygems/request_set/lockfile/parser.rb +28 -27
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -3
- data/lib/rubygems/request_set/lockfile.rb +6 -5
- data/lib/rubygems/request_set.rb +20 -19
- data/lib/rubygems/requirement.rb +15 -14
- data/lib/rubygems/resolver/activation_request.rb +4 -3
- data/lib/rubygems/resolver/api_set.rb +5 -4
- data/lib/rubygems/resolver/api_specification.rb +7 -6
- data/lib/rubygems/resolver/best_set.rb +6 -5
- data/lib/rubygems/resolver/composed_set.rb +1 -0
- data/lib/rubygems/resolver/conflict.rb +11 -10
- data/lib/rubygems/resolver/current_set.rb +1 -0
- data/lib/rubygems/resolver/dependency_request.rb +3 -2
- data/lib/rubygems/resolver/git_set.rb +3 -2
- data/lib/rubygems/resolver/git_specification.rb +7 -6
- data/lib/rubygems/resolver/index_set.rb +4 -3
- data/lib/rubygems/resolver/index_specification.rb +7 -5
- data/lib/rubygems/resolver/installed_specification.rb +5 -4
- data/lib/rubygems/resolver/installer_set.rb +15 -17
- data/lib/rubygems/resolver/local_specification.rb +3 -2
- data/lib/rubygems/resolver/lock_set.rb +5 -4
- data/lib/rubygems/resolver/lock_specification.rb +5 -4
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +1 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/lib/rubygems/resolver/molinillo.rb +2 -1
- data/lib/rubygems/resolver/requirement_list.rb +1 -0
- data/lib/rubygems/resolver/set.rb +1 -0
- data/lib/rubygems/resolver/source_set.rb +2 -0
- data/lib/rubygems/resolver/spec_specification.rb +1 -0
- data/lib/rubygems/resolver/specification.rb +2 -1
- data/lib/rubygems/resolver/stats.rb +2 -1
- data/lib/rubygems/resolver/vendor_set.rb +2 -1
- data/lib/rubygems/resolver/vendor_specification.rb +4 -3
- data/lib/rubygems/resolver.rb +41 -40
- data/lib/rubygems/s3_uri_signer.rb +10 -8
- data/lib/rubygems/safe_yaml.rb +4 -2
- data/lib/rubygems/security/policies.rb +48 -47
- data/lib/rubygems/security/policy.rb +19 -18
- data/lib/rubygems/security/signer.rb +6 -5
- data/lib/rubygems/security/trust_dir.rb +5 -4
- data/lib/rubygems/security.rb +30 -42
- data/lib/rubygems/security_option.rb +6 -5
- data/lib/rubygems/shellwords.rb +3 -0
- data/lib/rubygems/source/git.rb +22 -22
- data/lib/rubygems/source/installed.rb +2 -1
- data/lib/rubygems/source/local.rb +3 -2
- data/lib/rubygems/source/lock.rb +1 -0
- data/lib/rubygems/source/specific_file.rb +2 -1
- data/lib/rubygems/source/vendor.rb +1 -0
- data/lib/rubygems/source.rb +16 -16
- data/lib/rubygems/spec_fetcher.rb +10 -9
- data/lib/rubygems/specification.rb +121 -114
- data/lib/rubygems/specification_policy.rb +36 -15
- data/lib/rubygems/stub_specification.rb +11 -9
- data/lib/rubygems/text.rb +2 -2
- data/lib/rubygems/tsort/lib/tsort.rb +308 -310
- data/lib/rubygems/tsort.rb +1 -1
- data/lib/rubygems/uninstaller.rb +19 -18
- data/lib/rubygems/update_suggestion.rb +69 -0
- data/lib/rubygems/uri.rb +4 -4
- data/lib/rubygems/uri_formatter.rb +1 -1
- data/lib/rubygems/user_interaction.rb +37 -21
- data/lib/rubygems/util/licenses.rb +4 -3
- data/lib/rubygems/util/list.rb +1 -0
- data/lib/rubygems/util.rb +12 -15
- data/lib/rubygems/validator.rb +7 -6
- data/lib/rubygems/version.rb +17 -11
- data/lib/rubygems/version_option.rb +4 -3
- data/lib/rubygems.rb +89 -68
- data/rubygems-update.gemspec +10 -8
- data/setup.rb +10 -9
- data/test/rubygems/alternate_cert.pem +14 -14
- data/test/rubygems/alternate_cert_32.pem +15 -15
- data/test/rubygems/alternate_key.pem +25 -25
- data/test/rubygems/bad_rake.rb +1 -0
- data/test/rubygems/bundler_test_gem.rb +421 -0
- data/test/rubygems/child_cert.pem +15 -16
- data/test/rubygems/child_cert_32.pem +15 -16
- data/test/rubygems/child_key.pem +25 -25
- data/test/rubygems/encrypted_private_key.pem +26 -26
- data/test/rubygems/expired_cert.pem +15 -15
- data/test/rubygems/fake_certlib/openssl.rb +1 -0
- data/test/rubygems/future_cert.pem +15 -15
- data/test/rubygems/future_cert_32.pem +15 -15
- data/test/rubygems/good_rake.rb +1 -0
- data/test/rubygems/grandchild_cert.pem +15 -16
- data/test/rubygems/grandchild_cert_32.pem +15 -16
- data/test/rubygems/grandchild_key.pem +25 -25
- data/test/rubygems/helper.rb +172 -151
- data/test/rubygems/installer_test_case.rb +14 -13
- data/test/rubygems/invalid_issuer_cert.pem +16 -16
- data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
- data/test/rubygems/invalid_key.pem +25 -25
- data/test/rubygems/invalid_signer_cert.pem +15 -15
- data/test/rubygems/invalid_signer_cert_32.pem +15 -15
- data/test/rubygems/invalidchild_cert.pem +15 -16
- data/test/rubygems/invalidchild_cert_32.pem +15 -16
- data/test/rubygems/invalidchild_key.pem +25 -25
- data/test/rubygems/multifactor_auth_utilities.rb +111 -0
- data/test/rubygems/package/tar_test_case.rb +53 -17
- data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
- data/test/rubygems/plugin/exception/rubygems_plugin.rb +2 -1
- data/test/rubygems/plugin/load/rubygems_plugin.rb +1 -0
- data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +2 -1
- data/test/rubygems/private_key.pem +25 -25
- data/test/rubygems/public_cert.pem +16 -16
- data/test/rubygems/public_cert_32.pem +15 -15
- data/test/rubygems/public_key.pem +7 -7
- data/test/rubygems/rubygems/commands/crash_command.rb +1 -0
- data/test/rubygems/rubygems_plugin.rb +3 -2
- data/test/rubygems/simple_gem.rb +2 -1
- data/test/rubygems/specifications/bar-0.0.2.gemspec +2 -0
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +6 -4
- data/test/rubygems/test_bundled_ca.rb +13 -12
- data/test/rubygems/test_config.rb +5 -4
- data/test/rubygems/test_deprecate.rb +5 -4
- data/test/rubygems/test_exit.rb +9 -3
- data/test/rubygems/test_gem.rb +339 -677
- data/test/rubygems/test_gem_available_set.rb +22 -21
- data/test/rubygems/test_gem_bundler_version_finder.rb +6 -4
- data/test/rubygems/test_gem_command.rb +45 -44
- data/test/rubygems/test_gem_command_manager.rb +96 -30
- data/test/rubygems/test_gem_commands_build_command.rb +74 -63
- data/test/rubygems/test_gem_commands_cert_command.rb +98 -99
- data/test/rubygems/test_gem_commands_check_command.rb +5 -4
- data/test/rubygems/test_gem_commands_cleanup_command.rb +41 -40
- data/test/rubygems/test_gem_commands_contents_command.rb +28 -27
- data/test/rubygems/test_gem_commands_dependency_command.rb +37 -36
- data/test/rubygems/test_gem_commands_environment_command.rb +17 -16
- data/test/rubygems/test_gem_commands_exec_command.rb +853 -0
- data/test/rubygems/test_gem_commands_fetch_command.rb +38 -37
- data/test/rubygems/test_gem_commands_generate_index_command.rb +8 -7
- data/test/rubygems/test_gem_commands_help_command.rb +14 -13
- data/test/rubygems/test_gem_commands_info_command.rb +29 -2
- data/test/rubygems/test_gem_commands_install_command.rb +152 -132
- data/test/rubygems/test_gem_commands_list_command.rb +5 -4
- data/test/rubygems/test_gem_commands_lock_command.rb +11 -10
- data/test/rubygems/test_gem_commands_mirror.rb +3 -2
- data/test/rubygems/test_gem_commands_open_command.rb +5 -4
- data/test/rubygems/test_gem_commands_outdated_command.rb +10 -9
- data/test/rubygems/test_gem_commands_owner_command.rb +227 -50
- data/test/rubygems/test_gem_commands_pristine_command.rb +142 -93
- data/test/rubygems/test_gem_commands_push_command.rb +189 -64
- data/test/rubygems/test_gem_commands_query_command.rb +74 -73
- data/test/rubygems/test_gem_commands_search_command.rb +3 -2
- data/test/rubygems/test_gem_commands_server_command.rb +3 -2
- data/test/rubygems/test_gem_commands_setup_command.rb +123 -96
- data/test/rubygems/test_gem_commands_signin_command.rb +71 -31
- data/test/rubygems/test_gem_commands_signout_command.rb +3 -3
- data/test/rubygems/test_gem_commands_sources_command.rb +29 -29
- data/test/rubygems/test_gem_commands_specification_command.rb +33 -32
- data/test/rubygems/test_gem_commands_stale_command.rb +5 -4
- data/test/rubygems/test_gem_commands_uninstall_command.rb +99 -81
- data/test/rubygems/test_gem_commands_unpack_command.rb +32 -31
- data/test/rubygems/test_gem_commands_update_command.rb +96 -95
- data/test/rubygems/test_gem_commands_which_command.rb +7 -6
- data/test/rubygems/test_gem_commands_yank_command.rb +162 -43
- data/test/rubygems/test_gem_config_file.rb +94 -81
- data/test/rubygems/test_gem_dependency.rb +76 -73
- data/test/rubygems/test_gem_dependency_installer.rb +200 -165
- data/test/rubygems/test_gem_dependency_list.rb +48 -47
- data/test/rubygems/test_gem_dependency_resolution_error.rb +5 -4
- data/test/rubygems/test_gem_doctor.rb +27 -26
- data/test/rubygems/test_gem_ext_builder.rb +60 -61
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +4 -4
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{Cargo.lock → ext/custom_name_lib/Cargo.lock} +23 -33
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{Cargo.toml → ext/custom_name_lib/Cargo.toml} +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{src → ext/custom_name_lib/src}/lib.rs +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +3 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +37 -33
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +2 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +12 -0
- data/test/rubygems/test_gem_ext_cargo_builder.rb +48 -59
- data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +20 -19
- data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +21 -36
- data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -15
- data/test/rubygems/test_gem_ext_configure_builder.rb +14 -13
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +51 -52
- data/test/rubygems/test_gem_ext_rake_builder.rb +16 -15
- data/test/rubygems/test_gem_gem_runner.rb +15 -9
- data/test/rubygems/test_gem_gemcutter_utilities.rb +170 -84
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +5 -4
- data/test/rubygems/test_gem_indexer.rb +87 -67
- data/test/rubygems/test_gem_install_update_options.rb +17 -16
- data/test/rubygems/test_gem_installer.rb +422 -304
- data/test/rubygems/test_gem_local_remote_options.rb +11 -10
- data/test/rubygems/test_gem_name_tuple.rb +5 -4
- data/test/rubygems/test_gem_package.rb +243 -231
- data/test/rubygems/test_gem_package_old.rb +14 -13
- data/test/rubygems/test_gem_package_tar_header.rb +48 -47
- data/test/rubygems/test_gem_package_tar_reader.rb +56 -8
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +162 -16
- data/test/rubygems/test_gem_package_tar_writer.rb +77 -76
- data/test/rubygems/test_gem_package_task.rb +19 -18
- data/test/rubygems/test_gem_path_support.rb +15 -14
- data/test/rubygems/test_gem_platform.rb +333 -227
- data/test/rubygems/test_gem_rdoc.rb +15 -14
- data/test/rubygems/test_gem_remote_fetcher.rb +155 -154
- data/test/rubygems/test_gem_request.rb +64 -58
- data/test/rubygems/test_gem_request_connection_pools.rb +30 -29
- data/test/rubygems/test_gem_request_set.rb +101 -100
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +210 -211
- data/test/rubygems/test_gem_request_set_lockfile.rb +87 -86
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +58 -57
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +63 -62
- data/test/rubygems/test_gem_requirement.rb +48 -41
- data/test/rubygems/test_gem_resolver.rb +167 -99
- data/test/rubygems/test_gem_resolver_activation_request.rb +7 -6
- data/test/rubygems/test_gem_resolver_api_set.rb +34 -33
- data/test/rubygems/test_gem_resolver_api_specification.rb +48 -47
- data/test/rubygems/test_gem_resolver_best_set.rb +23 -22
- data/test/rubygems/test_gem_resolver_composed_set.rb +2 -1
- data/test/rubygems/test_gem_resolver_conflict.rb +13 -12
- data/test/rubygems/test_gem_resolver_dependency_request.rb +16 -15
- data/test/rubygems/test_gem_resolver_git_set.rb +22 -21
- data/test/rubygems/test_gem_resolver_git_specification.rb +22 -21
- data/test/rubygems/test_gem_resolver_index_set.rb +13 -12
- data/test/rubygems/test_gem_resolver_index_specification.rb +17 -16
- data/test/rubygems/test_gem_resolver_installed_specification.rb +6 -5
- data/test/rubygems/test_gem_resolver_installer_set.rb +79 -34
- data/test/rubygems/test_gem_resolver_local_specification.rb +8 -7
- data/test/rubygems/test_gem_resolver_lock_set.rb +13 -12
- data/test/rubygems/test_gem_resolver_lock_specification.rb +18 -17
- data/test/rubygems/test_gem_resolver_requirement_list.rb +2 -1
- data/test/rubygems/test_gem_resolver_specification.rb +9 -8
- data/test/rubygems/test_gem_resolver_vendor_set.rb +7 -6
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +11 -10
- data/test/rubygems/test_gem_security.rb +69 -68
- data/test/rubygems/test_gem_security_policy.rb +72 -72
- data/test/rubygems/test_gem_security_signer.rb +35 -34
- data/test/rubygems/test_gem_security_trust_dir.rb +7 -6
- data/test/rubygems/test_gem_silent_ui.rb +39 -32
- data/test/rubygems/test_gem_source.rb +45 -44
- data/test/rubygems/test_gem_source_fetch_problem.rb +10 -9
- data/test/rubygems/test_gem_source_git.rb +69 -62
- data/test/rubygems/test_gem_source_installed.rb +17 -16
- data/test/rubygems/test_gem_source_list.rb +6 -5
- data/test/rubygems/test_gem_source_local.rb +15 -14
- data/test/rubygems/test_gem_source_lock.rb +32 -31
- data/test/rubygems/test_gem_source_specific_file.rb +18 -17
- data/test/rubygems/test_gem_source_subpath_problem.rb +8 -7
- data/test/rubygems/test_gem_source_vendor.rb +14 -13
- data/test/rubygems/test_gem_spec_fetcher.rb +73 -72
- data/test/rubygems/test_gem_specification.rb +533 -469
- data/test/rubygems/test_gem_stream_ui.rb +53 -22
- data/test/rubygems/test_gem_stub_specification.rb +33 -32
- data/test/rubygems/test_gem_text.rb +2 -1
- data/test/rubygems/test_gem_uninstaller.rb +118 -117
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +4 -3
- data/test/rubygems/test_gem_update_suggestion.rb +209 -0
- data/test/rubygems/test_gem_uri.rb +6 -4
- data/test/rubygems/test_gem_uri_formatter.rb +15 -14
- data/test/rubygems/test_gem_util.rb +24 -23
- data/test/rubygems/test_gem_validator.rb +8 -8
- data/test/rubygems/test_gem_version.rb +24 -16
- data/test/rubygems/test_gem_version_option.rb +16 -15
- data/test/rubygems/test_kernel.rb +43 -48
- data/test/rubygems/test_project_sanity.rb +32 -3
- data/test/rubygems/test_remote_fetch_error.rb +8 -7
- data/test/rubygems/test_require.rb +118 -103
- data/test/rubygems/test_rubygems.rb +10 -8
- data/test/rubygems/test_webauthn_listener.rb +143 -0
- data/test/rubygems/test_webauthn_listener_response.rb +93 -0
- data/test/rubygems/test_webauthn_poller.rb +124 -0
- data/test/rubygems/utilities.rb +98 -34
- data/test/rubygems/wrong_key_cert.pem +15 -15
- data/test/rubygems/wrong_key_cert_32.pem +15 -15
- data/test/test_changelog_generator.rb +1 -1
- metadata +99 -46
- data/bundler/lib/bundler/dep_proxy.rb +0 -55
- data/bundler/lib/bundler/templates/gems.rb +0 -5
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +0 -5
- data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
- data/bundler/lib/bundler/vendor/molinillo/LICENSE +0 -9
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -149
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
- data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
- data/bundler/lib/bundler/vendored_molinillo.rb +0 -4
- data/bundler/lib/bundler/version_ranges.rb +0 -122
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/build.rb +0 -21
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/build.rb +0 -21
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
3
|
-
|
2
|
+
|
3
|
+
require_relative "helper"
|
4
|
+
require "rubygems/commands/pristine_command"
|
4
5
|
|
5
6
|
class TestGemCommandsPristineCommand < Gem::TestCase
|
6
7
|
def setup
|
@@ -11,29 +12,29 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|
11
12
|
end
|
12
13
|
|
13
14
|
def test_execute
|
14
|
-
a = util_spec
|
15
|
+
a = util_spec "a" do |s|
|
15
16
|
s.executables = %w[foo]
|
16
17
|
s.files = %w[bin/foo lib/a.rb]
|
17
18
|
end
|
18
19
|
|
19
|
-
write_file File.join(@tempdir,
|
20
|
+
write_file File.join(@tempdir, "lib", "a.rb") do |fp|
|
20
21
|
fp.puts "puts __FILE__"
|
21
22
|
end
|
22
|
-
write_file File.join(@tempdir,
|
23
|
+
write_file File.join(@tempdir, "bin", "foo") do |fp|
|
23
24
|
fp.puts "#!/usr/bin/ruby"
|
24
25
|
end
|
25
26
|
|
26
27
|
install_gem a
|
27
28
|
|
28
|
-
foo_path = File.join @gemhome,
|
29
|
-
a_rb_path = File.join @gemhome,
|
29
|
+
foo_path = File.join @gemhome, "gems", a.full_name, "bin", "foo"
|
30
|
+
a_rb_path = File.join @gemhome, "gems", a.full_name, "lib", "a.rb"
|
30
31
|
|
31
32
|
write_file foo_path do |io|
|
32
|
-
io.puts
|
33
|
+
io.puts "I changed it!"
|
33
34
|
end
|
34
35
|
|
35
36
|
write_file a_rb_path do |io|
|
36
|
-
io.puts
|
37
|
+
io.puts "I changed it!"
|
37
38
|
end
|
38
39
|
|
39
40
|
@cmd.options[:args] = %w[a]
|
@@ -102,18 +103,18 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|
102
103
|
end
|
103
104
|
|
104
105
|
def test_execute_all
|
105
|
-
a = util_spec
|
106
|
+
a = util_spec "a" do |s|
|
106
107
|
s.executables = %w[foo]
|
107
108
|
end
|
108
109
|
|
109
|
-
write_file File.join(@tempdir,
|
110
|
+
write_file File.join(@tempdir, "bin", "foo") do |fp|
|
110
111
|
fp.puts "#!/usr/bin/ruby"
|
111
112
|
end
|
112
113
|
|
113
114
|
install_gem a
|
114
115
|
|
115
|
-
gem_bin = File.join @gemhome,
|
116
|
-
gem_stub = File.join @gemhome,
|
116
|
+
gem_bin = File.join @gemhome, "gems", a.full_name, "bin", "foo"
|
117
|
+
gem_stub = File.join @gemhome, "bin", "foo"
|
117
118
|
|
118
119
|
FileUtils.rm gem_bin
|
119
120
|
FileUtils.rm gem_stub
|
@@ -135,17 +136,17 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|
135
136
|
end
|
136
137
|
|
137
138
|
def test_execute_env_shebang
|
138
|
-
a = util_spec
|
139
|
+
a = util_spec "a" do |s|
|
139
140
|
s.executables = %w[foo]
|
140
141
|
s.files = %w[bin/foo]
|
141
142
|
end
|
142
|
-
write_file File.join(@tempdir,
|
143
|
+
write_file File.join(@tempdir, "bin", "foo") do |fp|
|
143
144
|
fp.puts "#!/usr/bin/ruby"
|
144
145
|
end
|
145
146
|
|
146
147
|
install_gem a
|
147
148
|
|
148
|
-
gem_exec = File.join @gemhome,
|
149
|
+
gem_exec = File.join @gemhome, "bin", "foo"
|
149
150
|
|
150
151
|
FileUtils.rm gem_exec
|
151
152
|
|
@@ -157,7 +158,7 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|
157
158
|
|
158
159
|
assert_path_exist gem_exec
|
159
160
|
|
160
|
-
ruby_exec = sprintf Gem.default_exec_format,
|
161
|
+
ruby_exec = sprintf Gem.default_exec_format, "ruby"
|
161
162
|
|
162
163
|
bin_env = win_platform? ? "" : %w[/usr/bin/env /bin/env].find {|f| File.executable?(f) } + " "
|
163
164
|
|
@@ -165,11 +166,11 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|
165
166
|
end
|
166
167
|
|
167
168
|
def test_execute_extensions_explicit
|
168
|
-
a = util_spec
|
169
|
-
s.extensions <<
|
169
|
+
a = util_spec "a" do |s|
|
170
|
+
s.extensions << "ext/a/extconf.rb"
|
170
171
|
end
|
171
172
|
|
172
|
-
ext_path = File.join @tempdir,
|
173
|
+
ext_path = File.join @tempdir, "ext", "a", "extconf.rb"
|
173
174
|
write_file ext_path do |io|
|
174
175
|
io.write <<-'RUBY'
|
175
176
|
File.open "Makefile", "w" do |f|
|
@@ -180,7 +181,7 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|
180
181
|
RUBY
|
181
182
|
end
|
182
183
|
|
183
|
-
b = util_spec
|
184
|
+
b = util_spec "b"
|
184
185
|
|
185
186
|
install_gem a
|
186
187
|
install_gem b
|
@@ -195,19 +196,67 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|
195
196
|
|
196
197
|
out = @ui.output.split "\n"
|
197
198
|
|
198
|
-
assert_equal
|
199
|
-
assert_equal
|
199
|
+
assert_equal "Restoring gems to pristine condition...", out.shift
|
200
|
+
assert_equal "Building native extensions. This could take a while...",
|
200
201
|
out.shift
|
201
202
|
assert_equal "Restored #{a.full_name}", out.shift
|
202
203
|
assert_empty out, out.inspect
|
203
204
|
end
|
204
205
|
|
206
|
+
def test_execute_extensions_only_missing_extensions
|
207
|
+
a = util_spec "a" do |s|
|
208
|
+
s.extensions << "ext/a/extconf.rb"
|
209
|
+
end
|
210
|
+
|
211
|
+
ext_path = File.join @tempdir, "ext", "a", "extconf.rb"
|
212
|
+
write_file ext_path do |io|
|
213
|
+
io.write <<-'RUBY'
|
214
|
+
File.open "Makefile", "w" do |f|
|
215
|
+
f.puts "clean:\n\techo cleaned\n"
|
216
|
+
f.puts "all:\n\techo built\n"
|
217
|
+
f.puts "install:\n\techo installed\n"
|
218
|
+
end
|
219
|
+
RUBY
|
220
|
+
end
|
221
|
+
|
222
|
+
b = util_spec "b" do |s|
|
223
|
+
s.extensions << "ext/b/extconf.rb"
|
224
|
+
end
|
225
|
+
|
226
|
+
ext_path = File.join @tempdir, "ext", "b", "extconf.rb"
|
227
|
+
write_file ext_path do |io|
|
228
|
+
io.write <<-'RUBY'
|
229
|
+
File.open "Makefile", "w" do |f|
|
230
|
+
f.puts "clean:\n\techo cleaned\n"
|
231
|
+
f.puts "all:\n\techo built\n"
|
232
|
+
f.puts "install:\n\techo installed\n"
|
233
|
+
end
|
234
|
+
RUBY
|
235
|
+
end
|
236
|
+
|
237
|
+
install_gem a
|
238
|
+
install_gem b
|
239
|
+
|
240
|
+
# Remove the extension files for b
|
241
|
+
FileUtils.rm_rf b.gem_build_complete_path
|
242
|
+
|
243
|
+
@cmd.options[:only_missing_extensions] = true
|
244
|
+
@cmd.options[:args] = []
|
245
|
+
|
246
|
+
use_ui @ui do
|
247
|
+
@cmd.execute
|
248
|
+
end
|
249
|
+
|
250
|
+
refute_includes @ui.output, "Restored #{a.full_name}"
|
251
|
+
assert_includes @ui.output, "Restored #{b.full_name}"
|
252
|
+
end
|
253
|
+
|
205
254
|
def test_execute_no_extension
|
206
|
-
a = util_spec
|
207
|
-
s.extensions <<
|
255
|
+
a = util_spec "a" do |s|
|
256
|
+
s.extensions << "ext/a/extconf.rb"
|
208
257
|
end
|
209
258
|
|
210
|
-
ext_path = File.join @tempdir,
|
259
|
+
ext_path = File.join @tempdir, "ext", "a", "extconf.rb"
|
211
260
|
write_file ext_path do |io|
|
212
261
|
io.write "# extconf.rb\nrequire 'mkmf'; create_makefile 'a'"
|
213
262
|
end
|
@@ -223,18 +272,18 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|
223
272
|
|
224
273
|
out = @ui.output.split "\n"
|
225
274
|
|
226
|
-
assert_equal
|
275
|
+
assert_equal "Restoring gems to pristine condition...", out.shift
|
227
276
|
assert_equal "Skipped #{a.full_name}, it needs to compile an extension",
|
228
277
|
out.shift
|
229
278
|
assert_empty out, out.inspect
|
230
279
|
end
|
231
280
|
|
232
281
|
def test_execute_with_extension_with_build_args
|
233
|
-
a = util_spec
|
234
|
-
s.extensions <<
|
282
|
+
a = util_spec "a" do |s|
|
283
|
+
s.extensions << "ext/a/extconf.rb"
|
235
284
|
end
|
236
285
|
|
237
|
-
ext_path = File.join @tempdir,
|
286
|
+
ext_path = File.join @tempdir, "ext", "a", "extconf.rb"
|
238
287
|
write_file ext_path do |io|
|
239
288
|
io.write <<-'RUBY'
|
240
289
|
File.open "Makefile", "w" do |f|
|
@@ -257,7 +306,7 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|
257
306
|
|
258
307
|
out = @ui.output.split "\n"
|
259
308
|
|
260
|
-
assert_equal
|
309
|
+
assert_equal "Restoring gems to pristine condition...", out.shift
|
261
310
|
assert_equal "Building native extensions with: '--with-awesome=true --sweet'", out.shift
|
262
311
|
assert_equal "This could take a while...", out.shift
|
263
312
|
assert_equal "Restored #{a.full_name}", out.shift
|
@@ -265,8 +314,8 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|
265
314
|
end
|
266
315
|
|
267
316
|
def test_execute_many
|
268
|
-
a = util_spec
|
269
|
-
b = util_spec
|
317
|
+
a = util_spec "a"
|
318
|
+
b = util_spec "b"
|
270
319
|
|
271
320
|
install_gem a
|
272
321
|
install_gem b
|
@@ -286,14 +335,14 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|
286
335
|
end
|
287
336
|
|
288
337
|
def test_skip
|
289
|
-
a = util_spec
|
290
|
-
b = util_spec
|
338
|
+
a = util_spec "a"
|
339
|
+
b = util_spec "b"
|
291
340
|
|
292
341
|
install_gem a
|
293
342
|
install_gem b
|
294
343
|
|
295
344
|
@cmd.options[:args] = %w[a b]
|
296
|
-
@cmd.options[:skip] =
|
345
|
+
@cmd.options[:skip] = "a"
|
297
346
|
|
298
347
|
use_ui @ui do
|
299
348
|
@cmd.execute
|
@@ -308,16 +357,16 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|
308
357
|
end
|
309
358
|
|
310
359
|
def test_skip_many_gems
|
311
|
-
a = util_spec
|
312
|
-
b = util_spec
|
313
|
-
c = util_spec
|
360
|
+
a = util_spec "a"
|
361
|
+
b = util_spec "b"
|
362
|
+
c = util_spec "c"
|
314
363
|
|
315
364
|
install_gem a
|
316
365
|
install_gem b
|
317
366
|
install_gem c
|
318
367
|
|
319
368
|
@cmd.options[:args] = %w[a b c]
|
320
|
-
@cmd.options[:skip] = [
|
369
|
+
@cmd.options[:skip] = ["a", "c"]
|
321
370
|
|
322
371
|
use_ui @ui do
|
323
372
|
@cmd.execute
|
@@ -333,14 +382,14 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|
333
382
|
end
|
334
383
|
|
335
384
|
def test_execute_many_multi_repo
|
336
|
-
a = util_spec
|
385
|
+
a = util_spec "a"
|
337
386
|
install_gem a
|
338
387
|
|
339
388
|
Gem.clear_paths
|
340
|
-
gemhome2 = File.join @tempdir,
|
389
|
+
gemhome2 = File.join @tempdir, "gemhome2"
|
341
390
|
Gem.use_paths gemhome2, [gemhome2, @gemhome]
|
342
391
|
|
343
|
-
b = util_spec
|
392
|
+
b = util_spec "b"
|
344
393
|
install_gem b
|
345
394
|
|
346
395
|
@cmd.options[:args] = %w[a b]
|
@@ -356,21 +405,21 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|
356
405
|
assert_equal "Restored #{b.full_name}", out.shift
|
357
406
|
assert_empty out, out.inspect
|
358
407
|
|
359
|
-
assert_path_exist File.join(@gemhome, "gems",
|
360
|
-
assert_path_not_exist File.join(gemhome2, "gems",
|
361
|
-
assert_path_exist File.join(gemhome2, "gems",
|
362
|
-
assert_path_not_exist File.join(@gemhome, "gems",
|
408
|
+
assert_path_exist File.join(@gemhome, "gems", "a-2")
|
409
|
+
assert_path_not_exist File.join(gemhome2, "gems", "a-2")
|
410
|
+
assert_path_exist File.join(gemhome2, "gems", "b-2")
|
411
|
+
assert_path_not_exist File.join(@gemhome, "gems", "b-2")
|
363
412
|
end
|
364
413
|
|
365
414
|
def test_execute_missing_cache_gem
|
366
415
|
specs = spec_fetcher do |fetcher|
|
367
|
-
fetcher.gem
|
368
|
-
fetcher.gem
|
369
|
-
fetcher.gem
|
370
|
-
fetcher.gem
|
416
|
+
fetcher.gem "a", 1
|
417
|
+
fetcher.gem "a", 2
|
418
|
+
fetcher.gem "a", 3
|
419
|
+
fetcher.gem "a", "3.a"
|
371
420
|
end
|
372
421
|
|
373
|
-
FileUtils.rm specs[
|
422
|
+
FileUtils.rm specs["a-2"].cache_file
|
374
423
|
|
375
424
|
@cmd.options[:args] = %w[a]
|
376
425
|
|
@@ -396,22 +445,22 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|
396
445
|
|
397
446
|
def test_execute_missing_cache_gem_when_multi_repo
|
398
447
|
specs = spec_fetcher do |fetcher|
|
399
|
-
fetcher.gem
|
400
|
-
fetcher.gem
|
448
|
+
fetcher.gem "a", 1
|
449
|
+
fetcher.gem "b", 1
|
401
450
|
end
|
402
451
|
|
403
|
-
FileUtils.rm_rf File.join(@gemhome,
|
404
|
-
FileUtils.rm_rf File.join(@gemhome,
|
452
|
+
FileUtils.rm_rf File.join(@gemhome, "gems", "a-1")
|
453
|
+
FileUtils.rm_rf File.join(@gemhome, "gems", "b-1")
|
405
454
|
|
406
455
|
install_gem specs["a-1"]
|
407
|
-
FileUtils.rm File.join(@gemhome,
|
456
|
+
FileUtils.rm File.join(@gemhome, "cache", "a-1.gem")
|
408
457
|
|
409
458
|
Gem.clear_paths
|
410
|
-
gemhome2 = File.join(@tempdir,
|
459
|
+
gemhome2 = File.join(@tempdir, "gemhome2")
|
411
460
|
Gem.use_paths gemhome2, [gemhome2, @gemhome]
|
412
461
|
|
413
462
|
install_gem specs["b-1"]
|
414
|
-
FileUtils.rm File.join(gemhome2,
|
463
|
+
FileUtils.rm File.join(gemhome2, "cache", "b-1.gem")
|
415
464
|
Gem::Specification.reset
|
416
465
|
|
417
466
|
@cmd.options[:args] = %w[a b]
|
@@ -435,15 +484,15 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|
435
484
|
assert_empty out, out.inspect
|
436
485
|
assert_empty @ui.error
|
437
486
|
|
438
|
-
assert_path_exist File.join(@gemhome, "cache",
|
439
|
-
assert_path_not_exist File.join(gemhome2, "cache",
|
440
|
-
assert_path_exist File.join(@gemhome, "gems",
|
441
|
-
assert_path_not_exist File.join(gemhome2, "gems",
|
487
|
+
assert_path_exist File.join(@gemhome, "cache", "a-1.gem")
|
488
|
+
assert_path_not_exist File.join(gemhome2, "cache", "a-2.gem")
|
489
|
+
assert_path_exist File.join(@gemhome, "gems", "a-1")
|
490
|
+
assert_path_not_exist File.join(gemhome2, "gems", "a-1")
|
442
491
|
|
443
|
-
assert_path_exist File.join(gemhome2, "cache",
|
444
|
-
assert_path_not_exist File.join(@gemhome, "cache",
|
445
|
-
assert_path_exist File.join(gemhome2, "gems",
|
446
|
-
assert_path_not_exist File.join(@gemhome, "gems",
|
492
|
+
assert_path_exist File.join(gemhome2, "cache", "b-1.gem")
|
493
|
+
assert_path_not_exist File.join(@gemhome, "cache", "b-2.gem")
|
494
|
+
assert_path_exist File.join(gemhome2, "gems", "b-1")
|
495
|
+
assert_path_not_exist File.join(@gemhome, "gems", "b-1")
|
447
496
|
end
|
448
497
|
|
449
498
|
def test_execute_no_gem
|
@@ -459,21 +508,21 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|
459
508
|
end
|
460
509
|
|
461
510
|
def test_execute_only_executables
|
462
|
-
a = util_spec
|
511
|
+
a = util_spec "a" do |s|
|
463
512
|
s.executables = %w[foo]
|
464
513
|
s.files = %w[bin/foo lib/a.rb]
|
465
514
|
end
|
466
|
-
write_file File.join(@tempdir,
|
515
|
+
write_file File.join(@tempdir, "lib", "a.rb") do |fp|
|
467
516
|
fp.puts "puts __FILE__"
|
468
517
|
end
|
469
|
-
write_file File.join(@tempdir,
|
518
|
+
write_file File.join(@tempdir, "bin", "foo") do |fp|
|
470
519
|
fp.puts "#!/usr/bin/ruby"
|
471
520
|
end
|
472
521
|
|
473
522
|
install_gem a
|
474
523
|
|
475
|
-
gem_lib = File.join @gemhome,
|
476
|
-
gem_exec = File.join @gemhome,
|
524
|
+
gem_lib = File.join @gemhome, "gems", a.full_name, "lib", "a.rb"
|
525
|
+
gem_exec = File.join @gemhome, "bin", "foo"
|
477
526
|
|
478
527
|
FileUtils.rm gem_exec
|
479
528
|
FileUtils.rm gem_lib
|
@@ -489,25 +538,25 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|
489
538
|
end
|
490
539
|
|
491
540
|
def test_execute_only_plugins
|
492
|
-
a = util_spec
|
541
|
+
a = util_spec "a" do |s|
|
493
542
|
s.executables = %w[foo]
|
494
543
|
s.files = %w[bin/foo lib/a.rb lib/rubygems_plugin.rb]
|
495
544
|
end
|
496
|
-
write_file File.join(@tempdir,
|
545
|
+
write_file File.join(@tempdir, "lib", "a.rb") do |fp|
|
497
546
|
fp.puts "puts __FILE__"
|
498
547
|
end
|
499
|
-
write_file File.join(@tempdir,
|
500
|
-
fp.puts "
|
548
|
+
write_file File.join(@tempdir, "lib", "rubygems_plugin.rb") do |fp|
|
549
|
+
fp.puts "# do nothing"
|
501
550
|
end
|
502
|
-
write_file File.join(@tempdir,
|
551
|
+
write_file File.join(@tempdir, "bin", "foo") do |fp|
|
503
552
|
fp.puts "#!/usr/bin/ruby"
|
504
553
|
end
|
505
554
|
|
506
555
|
install_gem a
|
507
556
|
|
508
|
-
gem_lib = File.join @gemhome,
|
509
|
-
gem_plugin = File.join @gemhome,
|
510
|
-
gem_exec = File.join @gemhome,
|
557
|
+
gem_lib = File.join @gemhome, "gems", a.full_name, "lib", "a.rb"
|
558
|
+
gem_plugin = File.join @gemhome, "plugins", "a_plugin.rb"
|
559
|
+
gem_exec = File.join @gemhome, "bin", "foo"
|
511
560
|
|
512
561
|
FileUtils.rm gem_exec
|
513
562
|
FileUtils.rm gem_plugin
|
@@ -525,24 +574,24 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|
525
574
|
end
|
526
575
|
|
527
576
|
def test_execute_bindir
|
528
|
-
a = util_spec
|
577
|
+
a = util_spec "a" do |s|
|
529
578
|
s.name = "test_gem"
|
530
579
|
s.executables = %w[foo]
|
531
580
|
s.files = %w[bin/foo]
|
532
581
|
end
|
533
582
|
|
534
|
-
write_file File.join(@tempdir,
|
583
|
+
write_file File.join(@tempdir, "bin", "foo") do |fp|
|
535
584
|
fp.puts "#!/usr/bin/ruby"
|
536
585
|
end
|
537
586
|
|
538
|
-
write_file File.join(@tempdir,
|
587
|
+
write_file File.join(@tempdir, "test_bin", "foo") do |fp|
|
539
588
|
fp.puts "#!/usr/bin/ruby"
|
540
589
|
end
|
541
590
|
|
542
591
|
install_gem a
|
543
592
|
|
544
|
-
gem_exec = File.join @gemhome,
|
545
|
-
gem_bindir = File.join @tempdir,
|
593
|
+
gem_exec = File.join @gemhome, "bin", "foo"
|
594
|
+
gem_bindir = File.join @tempdir, "test_bin", "foo"
|
546
595
|
|
547
596
|
FileUtils.rm gem_exec
|
548
597
|
FileUtils.rm gem_bindir
|
@@ -558,7 +607,7 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|
558
607
|
end
|
559
608
|
|
560
609
|
def test_execute_unknown_gem_at_remote_source
|
561
|
-
install_specs util_spec
|
610
|
+
install_specs util_spec "a"
|
562
611
|
|
563
612
|
@cmd.options[:args] = %w[a]
|
564
613
|
|
@@ -597,16 +646,16 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|
597
646
|
end
|
598
647
|
|
599
648
|
def test_execute_multi_platform
|
600
|
-
a = util_spec
|
601
|
-
s.extensions <<
|
649
|
+
a = util_spec "a" do |s|
|
650
|
+
s.extensions << "ext/a/extconf.rb"
|
602
651
|
end
|
603
652
|
|
604
|
-
b = util_spec
|
605
|
-
s.extensions <<
|
653
|
+
b = util_spec "b" do |s|
|
654
|
+
s.extensions << "ext/a/extconf.rb"
|
606
655
|
s.platform = Gem::Platform.new("java")
|
607
656
|
end
|
608
657
|
|
609
|
-
ext_path = File.join @tempdir,
|
658
|
+
ext_path = File.join @tempdir, "ext", "a", "extconf.rb"
|
610
659
|
write_file ext_path do |io|
|
611
660
|
io.write <<-'RUBY'
|
612
661
|
File.open "Makefile", "w" do |f|
|
@@ -632,8 +681,8 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|
632
681
|
|
633
682
|
out = @ui.output.split "\n"
|
634
683
|
|
635
|
-
assert_equal
|
636
|
-
assert_equal
|
684
|
+
assert_equal "Restoring gems to pristine condition...", out.shift
|
685
|
+
assert_equal "Building native extensions. This could take a while...",
|
637
686
|
out.shift
|
638
687
|
assert_equal "Restored #{a.full_name}", out.shift
|
639
688
|
assert_empty out, out.inspect
|