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,15 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
3
|
-
|
4
|
-
require
|
2
|
+
|
3
|
+
require_relative "helper"
|
4
|
+
require "rubygems/dependency_installer"
|
5
|
+
require "rubygems/security"
|
5
6
|
|
6
7
|
class TestGemDependencyInstaller < Gem::TestCase
|
7
8
|
def setup
|
8
9
|
super
|
9
10
|
common_installer_setup
|
10
11
|
|
11
|
-
@gems_dir = File.join @tempdir,
|
12
|
-
@cache_dir = File.join @gemhome,
|
12
|
+
@gems_dir = File.join @tempdir, "gems"
|
13
|
+
@cache_dir = File.join @gemhome, "cache"
|
13
14
|
|
14
15
|
FileUtils.mkdir @gems_dir
|
15
16
|
|
@@ -25,23 +26,23 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
25
26
|
end
|
26
27
|
|
27
28
|
def util_setup_gems
|
28
|
-
@a1, @a1_gem = util_gem
|
29
|
-
s.executables <<
|
29
|
+
@a1, @a1_gem = util_gem "a", "1" do |s|
|
30
|
+
s.executables << "a_bin"
|
30
31
|
end
|
31
32
|
|
32
|
-
@a1_pre, @a1_pre_gem = util_gem
|
33
|
+
@a1_pre, @a1_pre_gem = util_gem "a", "1.a"
|
33
34
|
|
34
|
-
@b1, @b1_gem = util_gem
|
35
|
-
s.add_dependency
|
36
|
-
s.add_development_dependency
|
35
|
+
@b1, @b1_gem = util_gem "b", "1" do |s|
|
36
|
+
s.add_dependency "a"
|
37
|
+
s.add_development_dependency "aa"
|
37
38
|
end
|
38
39
|
|
39
|
-
@c1, @c1_gem = util_gem
|
40
|
-
s.add_development_dependency
|
40
|
+
@c1, @c1_gem = util_gem "c", "1" do |s|
|
41
|
+
s.add_development_dependency "b"
|
41
42
|
end
|
42
43
|
|
43
|
-
@d1, @d1_gem = util_gem
|
44
|
-
s.add_development_dependency
|
44
|
+
@d1, @d1_gem = util_gem "d", "1" do |s|
|
45
|
+
s.add_development_dependency "c"
|
45
46
|
end
|
46
47
|
|
47
48
|
util_setup_spec_fetcher(@a1, @a1_pre, @b1, @d1)
|
@@ -55,7 +56,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
55
56
|
|
56
57
|
Dir.chdir @tempdir do
|
57
58
|
inst = Gem::DependencyInstaller.new
|
58
|
-
inst.install
|
59
|
+
inst.install "a"
|
59
60
|
end
|
60
61
|
|
61
62
|
assert_equal %w[a-1], Gem::Specification.map(&:full_name)
|
@@ -65,13 +66,13 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
65
66
|
def test_install_prerelease
|
66
67
|
util_setup_gems
|
67
68
|
|
68
|
-
p1a, gem = util_gem
|
69
|
+
p1a, gem = util_gem "a", "10.a"
|
69
70
|
|
70
71
|
util_setup_spec_fetcher(p1a, @a1, @a1_pre)
|
71
72
|
|
72
73
|
p1a_data = Gem.read_binary(gem)
|
73
74
|
|
74
|
-
@fetcher.data[
|
75
|
+
@fetcher.data["http://gems.example.com/gems/a-10.a.gem"] = p1a_data
|
75
76
|
|
76
77
|
dep = Gem::Dependency.new "a"
|
77
78
|
inst = Gem::DependencyInstaller.new :prerelease => true
|
@@ -83,18 +84,18 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
83
84
|
|
84
85
|
def test_install_prerelease_bug_990
|
85
86
|
spec_fetcher do |fetcher|
|
86
|
-
fetcher.gem
|
87
|
-
s.add_dependency
|
87
|
+
fetcher.gem "a", "1.b" do |s|
|
88
|
+
s.add_dependency "b", "~> 1.a"
|
88
89
|
end
|
89
90
|
|
90
|
-
fetcher.gem
|
91
|
-
s.add_dependency
|
91
|
+
fetcher.gem "b", "1.b" do |s|
|
92
|
+
s.add_dependency "c", ">= 1"
|
92
93
|
end
|
93
94
|
|
94
|
-
fetcher.gem
|
95
|
+
fetcher.gem "c", "1.1.b"
|
95
96
|
end
|
96
97
|
|
97
|
-
dep = Gem::Dependency.new
|
98
|
+
dep = Gem::Dependency.new "a"
|
98
99
|
|
99
100
|
inst = Gem::DependencyInstaller.new :prerelease => true
|
100
101
|
inst.install dep
|
@@ -103,13 +104,13 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
103
104
|
end
|
104
105
|
|
105
106
|
def test_install_when_only_prerelease
|
106
|
-
p1a, gem = util_gem
|
107
|
+
p1a, gem = util_gem "p", "1.a"
|
107
108
|
|
108
109
|
util_setup_spec_fetcher(p1a)
|
109
110
|
|
110
111
|
p1a_data = Gem.read_binary(gem)
|
111
112
|
|
112
|
-
@fetcher.data[
|
113
|
+
@fetcher.data["http://gems.example.com/gems/p-1.a.gem"] = p1a_data
|
113
114
|
|
114
115
|
dep = Gem::Dependency.new "p"
|
115
116
|
inst = Gem::DependencyInstaller.new
|
@@ -128,7 +129,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
128
129
|
|
129
130
|
p1a_data = Gem.read_binary(@a1_gem)
|
130
131
|
|
131
|
-
@fetcher.data[
|
132
|
+
@fetcher.data["http://gems.example.com/gems/a-1.gem"] = p1a_data
|
132
133
|
|
133
134
|
dep = Gem::Dependency.new "a"
|
134
135
|
inst = Gem::DependencyInstaller.new :prerelease => true
|
@@ -141,8 +142,8 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
141
142
|
def test_install_all_dependencies
|
142
143
|
util_setup_gems
|
143
144
|
|
144
|
-
_, e1_gem = util_gem
|
145
|
-
s.add_dependency
|
145
|
+
_, e1_gem = util_gem "e", "1" do |s|
|
146
|
+
s.add_dependency "b"
|
146
147
|
end
|
147
148
|
|
148
149
|
FileUtils.mv @a1_gem, @tempdir
|
@@ -153,15 +154,15 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
153
154
|
|
154
155
|
Dir.chdir @tempdir do
|
155
156
|
inst = Gem::DependencyInstaller.new :ignore_dependencies => true
|
156
|
-
inst.install
|
157
|
+
inst.install "b"
|
157
158
|
end
|
158
159
|
|
159
160
|
assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name },
|
160
|
-
|
161
|
+
"sanity check"
|
161
162
|
|
162
163
|
Dir.chdir @tempdir do
|
163
164
|
inst = Gem::DependencyInstaller.new
|
164
|
-
inst.install
|
165
|
+
inst.install "e"
|
165
166
|
end
|
166
167
|
|
167
168
|
assert_equal %w[a-1 e-1], inst.installed_gems.map {|s| s.full_name }
|
@@ -178,7 +179,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
178
179
|
|
179
180
|
Dir.chdir dir do
|
180
181
|
inst = Gem::DependencyInstaller.new :cache_dir => @tempdir
|
181
|
-
inst.install
|
182
|
+
inst.install "b"
|
182
183
|
end
|
183
184
|
|
184
185
|
assert_equal %w[a-1 b-1], inst.installed_gems.map {|s| s.full_name }
|
@@ -190,9 +191,9 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
190
191
|
def test_install_dependencies_satisfied
|
191
192
|
util_setup_gems
|
192
193
|
|
193
|
-
a2, a2_gem = util_gem
|
194
|
+
a2, a2_gem = util_gem "a", "2"
|
194
195
|
|
195
|
-
FileUtils.rm_rf File.join(@gemhome,
|
196
|
+
FileUtils.rm_rf File.join(@gemhome, "gems")
|
196
197
|
|
197
198
|
Gem::Specification.reset
|
198
199
|
|
@@ -203,17 +204,17 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
203
204
|
|
204
205
|
Dir.chdir @tempdir do
|
205
206
|
inst = Gem::DependencyInstaller.new
|
206
|
-
inst.install
|
207
|
+
inst.install "a", req("= 2")
|
207
208
|
end
|
208
209
|
|
209
210
|
assert_equal %w[a-2], inst.installed_gems.map {|s| s.full_name },
|
210
|
-
|
211
|
+
"sanity check"
|
211
212
|
|
212
213
|
FileUtils.rm File.join(@tempdir, a2.file_name)
|
213
214
|
|
214
215
|
Dir.chdir @tempdir do
|
215
216
|
inst = Gem::DependencyInstaller.new
|
216
|
-
inst.install
|
217
|
+
inst.install "b"
|
217
218
|
end
|
218
219
|
|
219
220
|
assert_equal %w[a-2 b-1], Gem::Specification.map(&:full_name)
|
@@ -226,12 +227,12 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
226
227
|
def test_install_doesnt_upgrade_installed_dependencies
|
227
228
|
util_setup_gems
|
228
229
|
|
229
|
-
a2, a2_gem = util_gem
|
230
|
-
a3, a3_gem = util_gem
|
230
|
+
a2, a2_gem = util_gem "a", "2"
|
231
|
+
a3, a3_gem = util_gem "a", "3"
|
231
232
|
|
232
233
|
util_setup_spec_fetcher @a1, a3, @b1
|
233
234
|
|
234
|
-
FileUtils.rm_rf File.join(@gemhome,
|
235
|
+
FileUtils.rm_rf File.join(@gemhome, "gems")
|
235
236
|
|
236
237
|
Gem::Specification.reset
|
237
238
|
|
@@ -241,7 +242,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
241
242
|
FileUtils.mv a3_gem, @tempdir
|
242
243
|
|
243
244
|
Dir.chdir @tempdir do
|
244
|
-
Gem::DependencyInstaller.new.install
|
245
|
+
Gem::DependencyInstaller.new.install "a", req("= 2")
|
245
246
|
end
|
246
247
|
|
247
248
|
FileUtils.rm File.join(@tempdir, a2.file_name)
|
@@ -250,7 +251,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
250
251
|
|
251
252
|
Dir.chdir @tempdir do
|
252
253
|
inst = Gem::DependencyInstaller.new
|
253
|
-
inst.install
|
254
|
+
inst.install "b"
|
254
255
|
end
|
255
256
|
|
256
257
|
assert_equal %w[a-2 b-1], Gem::Specification.map(&:full_name)
|
@@ -274,18 +275,18 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
274
275
|
|
275
276
|
Dir.chdir @tempdir do
|
276
277
|
inst = Gem::DependencyInstaller.new(:build_docs_in_background => false)
|
277
|
-
inst.install
|
278
|
+
inst.install "b"
|
278
279
|
end
|
279
280
|
|
280
281
|
assert_equal %w[a-1 b-1], inst.installed_gems.map {|s| s.full_name }
|
281
282
|
|
282
|
-
assert done_installing_ran,
|
283
|
+
assert done_installing_ran, "post installs hook was not run"
|
283
284
|
end
|
284
285
|
|
285
286
|
def test_install_dependency_development
|
286
287
|
util_setup_gems
|
287
288
|
|
288
|
-
@aa1, @aa1_gem = util_gem
|
289
|
+
@aa1, @aa1_gem = util_gem "aa", "1"
|
289
290
|
|
290
291
|
FileUtils.mv @a1_gem, @tempdir
|
291
292
|
FileUtils.mv @aa1_gem, @tempdir
|
@@ -294,7 +295,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
294
295
|
|
295
296
|
Dir.chdir @tempdir do
|
296
297
|
inst = Gem::DependencyInstaller.new(:development => true)
|
297
|
-
inst.install
|
298
|
+
inst.install "b"
|
298
299
|
end
|
299
300
|
|
300
301
|
assert_equal %w[a-1 aa-1 b-1], inst.installed_gems.map {|s| s.full_name }
|
@@ -303,7 +304,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
303
304
|
def test_install_dependency_development_deep
|
304
305
|
util_setup_gems
|
305
306
|
|
306
|
-
@aa1, @aa1_gem = util_gem
|
307
|
+
@aa1, @aa1_gem = util_gem "aa", "1"
|
307
308
|
|
308
309
|
FileUtils.mv @a1_gem, @tempdir
|
309
310
|
FileUtils.mv @aa1_gem, @tempdir
|
@@ -314,7 +315,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
314
315
|
|
315
316
|
Dir.chdir @tempdir do
|
316
317
|
inst = Gem::DependencyInstaller.new(:development => true)
|
317
|
-
inst.install
|
318
|
+
inst.install "d"
|
318
319
|
end
|
319
320
|
|
320
321
|
assert_equal %w[a-1 aa-1 b-1 c-1 d-1], inst.installed_gems.map {|s| s.full_name }
|
@@ -323,7 +324,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
323
324
|
def test_install_dependency_development_shallow
|
324
325
|
util_setup_gems
|
325
326
|
|
326
|
-
@aa1, @aa1_gem = util_gem
|
327
|
+
@aa1, @aa1_gem = util_gem "aa", "1"
|
327
328
|
|
328
329
|
FileUtils.mv @a1_gem, @tempdir
|
329
330
|
FileUtils.mv @aa1_gem, @tempdir
|
@@ -334,7 +335,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
334
335
|
|
335
336
|
Dir.chdir @tempdir do
|
336
337
|
inst = Gem::DependencyInstaller.new(:development => true, :dev_shallow => true)
|
337
|
-
inst.install
|
338
|
+
inst.install "d"
|
338
339
|
end
|
339
340
|
|
340
341
|
assert_equal %w[c-1 d-1], inst.installed_gems.map {|s| s.full_name }
|
@@ -350,29 +351,29 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
350
351
|
|
351
352
|
Dir.chdir @tempdir do
|
352
353
|
inst = Gem::DependencyInstaller.new
|
353
|
-
inst.install
|
354
|
+
inst.install "b"
|
354
355
|
end
|
355
356
|
|
356
357
|
assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name }
|
357
358
|
end
|
358
359
|
|
359
360
|
def test_install_dependency_existing_extension
|
360
|
-
extconf_rb = File.join @gemhome,
|
361
|
+
extconf_rb = File.join @gemhome, "gems", "e-1", "extconf.rb"
|
361
362
|
FileUtils.mkdir_p File.dirname extconf_rb
|
362
363
|
|
363
|
-
File.open extconf_rb,
|
364
|
+
File.open extconf_rb, "w" do |io|
|
364
365
|
io.write <<-EXTCONF_RB
|
365
366
|
require 'mkmf'
|
366
367
|
create_makefile 'e'
|
367
368
|
EXTCONF_RB
|
368
369
|
end
|
369
370
|
|
370
|
-
e1 = util_spec
|
371
|
-
s.extensions <<
|
371
|
+
e1 = util_spec "e", "1", nil, "extconf.rb" do |s|
|
372
|
+
s.extensions << "extconf.rb"
|
372
373
|
end
|
373
374
|
e1_gem = e1.cache_file
|
374
375
|
|
375
|
-
_, f1_gem = util_gem
|
376
|
+
_, f1_gem = util_gem "f", "1", "e" => nil
|
376
377
|
|
377
378
|
Gem::Installer.at(e1_gem).install
|
378
379
|
FileUtils.rm_r e1.extension_dir
|
@@ -385,7 +386,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
385
386
|
Dir.chdir @tempdir
|
386
387
|
begin
|
387
388
|
inst = Gem::DependencyInstaller.new
|
388
|
-
inst.install
|
389
|
+
inst.install "f"
|
389
390
|
ensure
|
390
391
|
Dir.chdir pwd
|
391
392
|
end
|
@@ -396,9 +397,9 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
396
397
|
end
|
397
398
|
|
398
399
|
def test_install_dependency_old
|
399
|
-
_, e1_gem = util_gem
|
400
|
-
_, f1_gem = util_gem
|
401
|
-
_, f2_gem = util_gem
|
400
|
+
_, e1_gem = util_gem "e", "1"
|
401
|
+
_, f1_gem = util_gem "f", "1", "e" => nil
|
402
|
+
_, f2_gem = util_gem "f", "2"
|
402
403
|
|
403
404
|
FileUtils.mv e1_gem, @tempdir
|
404
405
|
FileUtils.mv f1_gem, @tempdir
|
@@ -407,7 +408,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
407
408
|
|
408
409
|
Dir.chdir @tempdir do
|
409
410
|
inst = Gem::DependencyInstaller.new
|
410
|
-
inst.install
|
411
|
+
inst.install "f"
|
411
412
|
end
|
412
413
|
|
413
414
|
assert_equal %w[f-2], inst.installed_gems.map {|s| s.full_name }
|
@@ -421,7 +422,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
421
422
|
|
422
423
|
Dir.chdir @tempdir do
|
423
424
|
inst = Gem::DependencyInstaller.new :domain => :local
|
424
|
-
inst.install
|
425
|
+
inst.install "a-1.gem"
|
425
426
|
end
|
426
427
|
|
427
428
|
assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name }
|
@@ -435,7 +436,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
435
436
|
|
436
437
|
Dir.chdir @tempdir do
|
437
438
|
inst = Gem::DependencyInstaller.new :domain => :local
|
438
|
-
inst.install
|
439
|
+
inst.install "a-1.a.gem"
|
439
440
|
end
|
440
441
|
|
441
442
|
assert_equal %w[a-1.a], inst.installed_gems.map {|s| s.full_name }
|
@@ -451,7 +452,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
451
452
|
|
452
453
|
Dir.chdir @tempdir do
|
453
454
|
inst = Gem::DependencyInstaller.new :domain => :local
|
454
|
-
inst.install
|
455
|
+
inst.install "b-1.gem"
|
455
456
|
end
|
456
457
|
|
457
458
|
assert_equal %w[a-1 b-1], inst.installed_gems.map {|s| s.full_name }
|
@@ -466,15 +467,49 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
466
467
|
inst = nil
|
467
468
|
|
468
469
|
Dir.chdir @tempdir do
|
469
|
-
Gem::Installer.at(
|
470
|
+
Gem::Installer.at("a-1.gem").install
|
470
471
|
|
471
472
|
inst = Gem::DependencyInstaller.new :domain => :local
|
472
|
-
inst.install
|
473
|
+
inst.install "b-1.gem"
|
473
474
|
end
|
474
475
|
|
475
476
|
assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name }
|
476
477
|
end
|
477
478
|
|
479
|
+
def test_install_local_dependency_no_network_for_target_gem
|
480
|
+
a1, a1_gem = util_gem "a", "1"
|
481
|
+
_, b1_gem = util_gem "b", "1" do |s|
|
482
|
+
s.add_dependency "a"
|
483
|
+
end
|
484
|
+
|
485
|
+
util_setup_spec_fetcher(a1)
|
486
|
+
|
487
|
+
a1_data = Gem.read_binary(a1_gem)
|
488
|
+
@fetcher.data["http://gems.example.com/gems/a-1.gem"] = a1_data
|
489
|
+
|
490
|
+
# compact index is available
|
491
|
+
compact_index_response = Net::HTTPResponse.new "1.1", 200, "OK"
|
492
|
+
compact_index_response.uri = URI("http://gems.example.com")
|
493
|
+
@fetcher.data["http://gems.example.com/"] = compact_index_response
|
494
|
+
|
495
|
+
# but private local gem not present there
|
496
|
+
@fetcher.data["http://gems.example.com/info/b"] =
|
497
|
+
proc do
|
498
|
+
raise "should not happen"
|
499
|
+
end
|
500
|
+
|
501
|
+
FileUtils.mv b1_gem, @tempdir
|
502
|
+
|
503
|
+
inst = nil
|
504
|
+
|
505
|
+
Dir.chdir @tempdir do
|
506
|
+
inst = Gem::DependencyInstaller.new
|
507
|
+
inst.install "b-1.gem"
|
508
|
+
end
|
509
|
+
|
510
|
+
assert_equal %w[a-1 b-1], inst.installed_gems.map(&:full_name)
|
511
|
+
end
|
512
|
+
|
478
513
|
def test_install_local_subdir
|
479
514
|
util_setup_gems
|
480
515
|
|
@@ -482,7 +517,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
482
517
|
|
483
518
|
Dir.chdir @tempdir do
|
484
519
|
inst = Gem::DependencyInstaller.new :domain => :local
|
485
|
-
inst.install
|
520
|
+
inst.install "gems/a-1.gem"
|
486
521
|
end
|
487
522
|
|
488
523
|
assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name }
|
@@ -491,12 +526,12 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
491
526
|
def test_install_minimal_deps
|
492
527
|
util_setup_gems
|
493
528
|
|
494
|
-
_, e1_gem = util_gem
|
495
|
-
s.add_dependency
|
529
|
+
_, e1_gem = util_gem "e", "1" do |s|
|
530
|
+
s.add_dependency "b"
|
496
531
|
end
|
497
532
|
|
498
|
-
_, b2_gem = util_gem
|
499
|
-
s.add_dependency
|
533
|
+
_, b2_gem = util_gem "b", "2" do |s|
|
534
|
+
s.add_dependency "a"
|
500
535
|
end
|
501
536
|
|
502
537
|
FileUtils.mv @a1_gem, @tempdir
|
@@ -508,15 +543,15 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
508
543
|
|
509
544
|
Dir.chdir @tempdir do
|
510
545
|
inst = Gem::DependencyInstaller.new :ignore_dependencies => true
|
511
|
-
inst.install
|
546
|
+
inst.install "b", req("= 1")
|
512
547
|
end
|
513
548
|
|
514
549
|
assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name },
|
515
|
-
|
550
|
+
"sanity check"
|
516
551
|
|
517
552
|
Dir.chdir @tempdir do
|
518
553
|
inst = Gem::DependencyInstaller.new :minimal_deps => true
|
519
|
-
inst.install
|
554
|
+
inst.install "e"
|
520
555
|
end
|
521
556
|
|
522
557
|
assert_equal %w[a-1 e-1], inst.installed_gems.map {|s| s.full_name }
|
@@ -525,12 +560,12 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
525
560
|
def test_install_no_minimal_deps
|
526
561
|
util_setup_gems
|
527
562
|
|
528
|
-
_, e1_gem = util_gem
|
529
|
-
s.add_dependency
|
563
|
+
_, e1_gem = util_gem "e", "1" do |s|
|
564
|
+
s.add_dependency "b"
|
530
565
|
end
|
531
566
|
|
532
|
-
_, b2_gem = util_gem
|
533
|
-
s.add_dependency
|
567
|
+
_, b2_gem = util_gem "b", "2" do |s|
|
568
|
+
s.add_dependency "a"
|
534
569
|
end
|
535
570
|
|
536
571
|
FileUtils.mv @a1_gem, @tempdir
|
@@ -542,15 +577,15 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
542
577
|
|
543
578
|
Dir.chdir @tempdir do
|
544
579
|
inst = Gem::DependencyInstaller.new :ignore_dependencies => true
|
545
|
-
inst.install
|
580
|
+
inst.install "b", req("= 1")
|
546
581
|
end
|
547
582
|
|
548
583
|
assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name },
|
549
|
-
|
584
|
+
"sanity check"
|
550
585
|
|
551
586
|
Dir.chdir @tempdir do
|
552
587
|
inst = Gem::DependencyInstaller.new :minimal_deps => false
|
553
|
-
inst.install
|
588
|
+
inst.install "e"
|
554
589
|
end
|
555
590
|
|
556
591
|
assert_equal %w[a-1 b-2 e-1], inst.installed_gems.map {|s| s.full_name }
|
@@ -581,13 +616,13 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
581
616
|
|
582
617
|
Dir.chdir @tempdir do
|
583
618
|
inst = Gem::DependencyInstaller.new :env_shebang => true, :wrappers => true, :format_executable => false
|
584
|
-
inst.install
|
619
|
+
inst.install "a"
|
585
620
|
end
|
586
621
|
|
587
622
|
env = "/\\S+/env" unless Gem.win_platform?
|
588
623
|
|
589
624
|
assert_match %r{\A#!#{env} #{RbConfig::CONFIG['ruby_install_name']}\n},
|
590
|
-
File.read(File.join(@gemhome,
|
625
|
+
File.read(File.join(@gemhome, "bin", "a_bin"))
|
591
626
|
end
|
592
627
|
|
593
628
|
def test_install_force
|
@@ -595,12 +630,12 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
595
630
|
|
596
631
|
FileUtils.mv @b1_gem, @tempdir
|
597
632
|
si = util_setup_spec_fetcher @b1
|
598
|
-
@fetcher.data[
|
633
|
+
@fetcher.data["http://gems.example.com/gems/yaml"] = si.to_yaml
|
599
634
|
inst = nil
|
600
635
|
|
601
636
|
Dir.chdir @tempdir do
|
602
637
|
inst = Gem::DependencyInstaller.new :force => true
|
603
|
-
inst.install
|
638
|
+
inst.install "b"
|
604
639
|
end
|
605
640
|
|
606
641
|
assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name }
|
@@ -616,7 +651,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
616
651
|
Dir.chdir @tempdir do
|
617
652
|
inst = Gem::DependencyInstaller.new(
|
618
653
|
:build_args => build_args)
|
619
|
-
inst.install
|
654
|
+
inst.install "a"
|
620
655
|
end
|
621
656
|
|
622
657
|
assert_equal build_args.join("\n"), File.read(inst.installed_gems.first.build_info_file).strip
|
@@ -630,7 +665,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
630
665
|
|
631
666
|
Dir.chdir @tempdir do
|
632
667
|
inst = Gem::DependencyInstaller.new :ignore_dependencies => true
|
633
|
-
inst.install
|
668
|
+
inst.install "b"
|
634
669
|
end
|
635
670
|
|
636
671
|
assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name }
|
@@ -645,37 +680,37 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
645
680
|
inst = Gem::Installer.at @a1.file_name
|
646
681
|
inst.install
|
647
682
|
|
648
|
-
gemhome2 = File.join @tempdir,
|
683
|
+
gemhome2 = File.join @tempdir, "gemhome2"
|
649
684
|
Dir.mkdir gemhome2
|
650
685
|
inst = nil
|
651
686
|
|
652
687
|
Dir.chdir @tempdir do
|
653
688
|
inst = Gem::DependencyInstaller.new :install_dir => gemhome2
|
654
|
-
inst.install
|
689
|
+
inst.install "b"
|
655
690
|
end
|
656
691
|
|
657
692
|
assert_equal %w[a-1 b-1], inst.installed_gems.map {|s| s.full_name }
|
658
693
|
|
659
|
-
assert File.exist?(File.join(gemhome2,
|
660
|
-
assert File.exist?(File.join(gemhome2,
|
694
|
+
assert File.exist?(File.join(gemhome2, "specifications", @a1.spec_name))
|
695
|
+
assert File.exist?(File.join(gemhome2, "cache", @a1.file_name))
|
661
696
|
end
|
662
697
|
|
663
698
|
def test_install_domain_both
|
664
699
|
util_setup_gems
|
665
700
|
|
666
701
|
a1_data = nil
|
667
|
-
File.open @a1_gem,
|
702
|
+
File.open @a1_gem, "rb" do |fp|
|
668
703
|
a1_data = fp.read
|
669
704
|
end
|
670
705
|
|
671
|
-
@fetcher.data[
|
706
|
+
@fetcher.data["http://gems.example.com/gems/a-1.gem"] = a1_data
|
672
707
|
|
673
708
|
FileUtils.mv @b1_gem, @tempdir
|
674
709
|
inst = nil
|
675
710
|
|
676
711
|
Dir.chdir @tempdir do
|
677
712
|
inst = Gem::DependencyInstaller.new :domain => :both
|
678
|
-
inst.install
|
713
|
+
inst.install "b"
|
679
714
|
end
|
680
715
|
|
681
716
|
assert_equal %w[a-1 b-1], inst.installed_gems.map {|s| s.full_name }
|
@@ -699,7 +734,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
699
734
|
|
700
735
|
Dir.chdir @tempdir do
|
701
736
|
inst = Gem::DependencyInstaller.new :domain => :both
|
702
|
-
inst.install
|
737
|
+
inst.install "b"
|
703
738
|
end
|
704
739
|
|
705
740
|
assert_equal %w[a-1 b-1], inst.installed_gems.map {|s| s.full_name }
|
@@ -714,7 +749,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
714
749
|
Dir.chdir @tempdir do
|
715
750
|
e = assert_raise Gem::UnsatisfiableDependencyError do
|
716
751
|
inst = Gem::DependencyInstaller.new :domain => :local
|
717
|
-
inst.install
|
752
|
+
inst.install "b"
|
718
753
|
end
|
719
754
|
|
720
755
|
expected = "Unable to resolve dependency: 'b (>= 0)' requires 'a (>= 0)'"
|
@@ -728,14 +763,14 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
728
763
|
util_setup_gems
|
729
764
|
|
730
765
|
a1_data = nil
|
731
|
-
File.open @a1_gem,
|
766
|
+
File.open @a1_gem, "rb" do |fp|
|
732
767
|
a1_data = fp.read
|
733
768
|
end
|
734
769
|
|
735
|
-
@fetcher.data[
|
770
|
+
@fetcher.data["http://gems.example.com/gems/a-1.gem"] = a1_data
|
736
771
|
|
737
772
|
inst = Gem::DependencyInstaller.new :domain => :remote
|
738
|
-
inst.install
|
773
|
+
inst.install "a"
|
739
774
|
|
740
775
|
assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name }
|
741
776
|
end
|
@@ -751,19 +786,19 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
751
786
|
|
752
787
|
Dir.chdir @tempdir do
|
753
788
|
inst = Gem::DependencyInstaller.new :install_dir => gemhome2
|
754
|
-
inst.install
|
789
|
+
inst.install "a"
|
755
790
|
end
|
756
791
|
|
757
792
|
assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name },
|
758
|
-
|
793
|
+
"sanity check"
|
759
794
|
|
760
|
-
ENV[
|
761
|
-
ENV[
|
795
|
+
ENV["GEM_HOME"] = @gemhome
|
796
|
+
ENV["GEM_PATH"] = [@gemhome, gemhome2].join File::PATH_SEPARATOR
|
762
797
|
Gem.clear_paths
|
763
798
|
|
764
799
|
Dir.chdir @tempdir do
|
765
800
|
inst = Gem::DependencyInstaller.new
|
766
|
-
inst.install
|
801
|
+
inst.install "b"
|
767
802
|
end
|
768
803
|
|
769
804
|
assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name }
|
@@ -778,7 +813,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
778
813
|
|
779
814
|
Dir.chdir @tempdir do
|
780
815
|
inst = Gem::DependencyInstaller.new :force => true
|
781
|
-
inst.install
|
816
|
+
inst.install "a"
|
782
817
|
end
|
783
818
|
|
784
819
|
assert_equal %w[a-1], Gem::Specification.map(&:full_name)
|
@@ -789,16 +824,16 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
789
824
|
util_setup_gems
|
790
825
|
|
791
826
|
a1_data = nil
|
792
|
-
File.open @a1_gem,
|
827
|
+
File.open @a1_gem, "rb" do |fp|
|
793
828
|
a1_data = fp.read
|
794
829
|
end
|
795
830
|
|
796
|
-
@fetcher.data[
|
831
|
+
@fetcher.data["http://gems.example.com/gems/a-1.gem"] = a1_data
|
797
832
|
|
798
833
|
inst = Gem::DependencyInstaller.new
|
799
834
|
|
800
835
|
Dir.chdir @tempdir do
|
801
|
-
inst.install
|
836
|
+
inst.install "a"
|
802
837
|
end
|
803
838
|
|
804
839
|
assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name }
|
@@ -808,11 +843,11 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
808
843
|
util_setup_gems
|
809
844
|
|
810
845
|
a1_data = nil
|
811
|
-
File.open @a1_gem,
|
846
|
+
File.open @a1_gem, "rb" do |fp|
|
812
847
|
a1_data = fp.read
|
813
848
|
end
|
814
849
|
|
815
|
-
@fetcher.data[
|
850
|
+
@fetcher.data["http://gems.example.com/gems/a-1.gem"] = a1_data
|
816
851
|
|
817
852
|
inst = Gem::DependencyInstaller.new
|
818
853
|
|
@@ -827,22 +862,22 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
827
862
|
def test_install_remote_platform_newer
|
828
863
|
util_setup_gems
|
829
864
|
|
830
|
-
a2_o, a2_o_gem = util_gem
|
865
|
+
a2_o, a2_o_gem = util_gem "a", "2" do |s|
|
831
866
|
s.platform = Gem::Platform.new %w[cpu other_platform 1]
|
832
867
|
end
|
833
868
|
|
834
869
|
si = util_setup_spec_fetcher @a1, a2_o
|
835
870
|
|
836
|
-
@fetcher.data[
|
871
|
+
@fetcher.data["http://gems.example.com/gems/yaml"] = si.to_yaml
|
837
872
|
|
838
873
|
a1_data = nil
|
839
874
|
a2_o_data = nil
|
840
875
|
|
841
|
-
File.open @a1_gem,
|
876
|
+
File.open @a1_gem, "rb" do |fp|
|
842
877
|
a1_data = fp.read
|
843
878
|
end
|
844
879
|
|
845
|
-
File.open a2_o_gem,
|
880
|
+
File.open a2_o_gem, "rb" do |fp|
|
846
881
|
a2_o_data = fp.read
|
847
882
|
end
|
848
883
|
|
@@ -852,13 +887,13 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
852
887
|
a2_o_data
|
853
888
|
|
854
889
|
inst = Gem::DependencyInstaller.new :domain => :remote
|
855
|
-
inst.install
|
890
|
+
inst.install "a"
|
856
891
|
|
857
892
|
assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name }
|
858
893
|
end
|
859
894
|
|
860
895
|
def test_install_platform_is_ignored_when_a_file_is_specified
|
861
|
-
_, a_gem = util_gem
|
896
|
+
_, a_gem = util_gem "a", "1" do |s|
|
862
897
|
s.platform = Gem::Platform.new %w[cpu other_platform 1]
|
863
898
|
end
|
864
899
|
|
@@ -868,26 +903,26 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
868
903
|
assert_equal %w[a-1-cpu-other_platform-1], inst.installed_gems.map {|s| s.full_name }
|
869
904
|
end
|
870
905
|
|
871
|
-
require
|
906
|
+
require "rubygems/openssl"
|
872
907
|
|
873
908
|
if Gem::HAVE_OPENSSL
|
874
909
|
def test_install_security_policy
|
875
910
|
util_setup_gems
|
876
911
|
|
877
|
-
data = File.open(@a1_gem,
|
878
|
-
@fetcher.data[
|
912
|
+
data = File.open(@a1_gem, "rb") {|f| f.read }
|
913
|
+
@fetcher.data["http://gems.example.com/gems/a-1.gem"] = data
|
879
914
|
|
880
|
-
data = File.open(@b1_gem,
|
881
|
-
@fetcher.data[
|
915
|
+
data = File.open(@b1_gem, "rb") {|f| f.read }
|
916
|
+
@fetcher.data["http://gems.example.com/gems/b-1.gem"] = data
|
882
917
|
|
883
918
|
policy = Gem::Security::HighSecurity
|
884
919
|
inst = Gem::DependencyInstaller.new :security_policy => policy
|
885
920
|
|
886
921
|
e = assert_raise Gem::Security::Exception do
|
887
|
-
inst.install
|
922
|
+
inst.install "b"
|
888
923
|
end
|
889
924
|
|
890
|
-
assert_equal
|
925
|
+
assert_equal "unsigned gems are not allowed by the High Security policy",
|
891
926
|
e.message
|
892
927
|
|
893
928
|
assert_equal %w[], inst.installed_gems.map {|s| s.full_name }
|
@@ -899,28 +934,28 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
899
934
|
def test_install_no_wrappers
|
900
935
|
util_setup_gems
|
901
936
|
|
902
|
-
@fetcher.data[
|
937
|
+
@fetcher.data["http://gems.example.com/gems/a-1.gem"] = read_binary(@a1_gem)
|
903
938
|
|
904
939
|
inst = Gem::DependencyInstaller.new :wrappers => false, :format_executable => false
|
905
|
-
inst.install
|
940
|
+
inst.install "a"
|
906
941
|
|
907
942
|
refute_match(%r{This file was generated by RubyGems.},
|
908
|
-
File.read(File.join(@gemhome,
|
943
|
+
File.read(File.join(@gemhome, "bin", "a_bin")))
|
909
944
|
end
|
910
945
|
end
|
911
946
|
|
912
947
|
def test_install_version
|
913
948
|
util_setup_d
|
914
949
|
|
915
|
-
data = File.open(@d2_gem,
|
916
|
-
@fetcher.data[
|
950
|
+
data = File.open(@d2_gem, "rb") {|f| f.read }
|
951
|
+
@fetcher.data["http://gems.example.com/gems/d-2.gem"] = data
|
917
952
|
|
918
|
-
data = File.open(@d1_gem,
|
919
|
-
@fetcher.data[
|
953
|
+
data = File.open(@d1_gem, "rb") {|f| f.read }
|
954
|
+
@fetcher.data["http://gems.example.com/gems/d-1.gem"] = data
|
920
955
|
|
921
956
|
inst = Gem::DependencyInstaller.new
|
922
957
|
|
923
|
-
inst.install
|
958
|
+
inst.install "d", "= 1"
|
924
959
|
|
925
960
|
assert_equal %w[d-1], inst.installed_gems.map {|s| s.full_name }
|
926
961
|
end
|
@@ -928,26 +963,26 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
928
963
|
def test_install_version_default
|
929
964
|
util_setup_d
|
930
965
|
|
931
|
-
data = File.open(@d2_gem,
|
932
|
-
@fetcher.data[
|
966
|
+
data = File.open(@d2_gem, "rb") {|f| f.read }
|
967
|
+
@fetcher.data["http://gems.example.com/gems/d-2.gem"] = data
|
933
968
|
|
934
|
-
data = File.open(@d1_gem,
|
935
|
-
@fetcher.data[
|
969
|
+
data = File.open(@d1_gem, "rb") {|f| f.read }
|
970
|
+
@fetcher.data["http://gems.example.com/gems/d-1.gem"] = data
|
936
971
|
|
937
972
|
inst = Gem::DependencyInstaller.new
|
938
|
-
inst.install
|
973
|
+
inst.install "d"
|
939
974
|
|
940
975
|
assert_equal %w[d-2], inst.installed_gems.map {|s| s.full_name }
|
941
976
|
end
|
942
977
|
|
943
978
|
def test_install_legacy_spec_with_nil_required_ruby_version
|
944
|
-
path = File.expand_path
|
979
|
+
path = File.expand_path "data/null-required-ruby-version.gemspec.rz", __dir__
|
945
980
|
spec = Marshal.load Gem.read_binary(path)
|
946
981
|
def spec.validate(*args); end
|
947
982
|
|
948
983
|
util_build_gem spec
|
949
984
|
|
950
|
-
cache_file = File.join @tempdir,
|
985
|
+
cache_file = File.join @tempdir, "gems", "#{spec.original_name}.gem"
|
951
986
|
FileUtils.mkdir_p File.dirname cache_file
|
952
987
|
FileUtils.mv spec.cache_file, cache_file
|
953
988
|
|
@@ -955,9 +990,9 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
955
990
|
|
956
991
|
data = Gem.read_binary(cache_file)
|
957
992
|
|
958
|
-
@fetcher.data[
|
993
|
+
@fetcher.data["http://gems.example.com/gems/activesupport-1.0.0.gem"] = data
|
959
994
|
|
960
|
-
dep = Gem::Dependency.new
|
995
|
+
dep = Gem::Dependency.new "activesupport"
|
961
996
|
|
962
997
|
inst = Gem::DependencyInstaller.new
|
963
998
|
inst.install dep
|
@@ -966,13 +1001,13 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
966
1001
|
end
|
967
1002
|
|
968
1003
|
def test_install_legacy_spec_with_nil_required_rubygems_version
|
969
|
-
path = File.expand_path
|
1004
|
+
path = File.expand_path "data/null-required-rubygems-version.gemspec.rz", __dir__
|
970
1005
|
spec = Marshal.load Gem.read_binary(path)
|
971
1006
|
def spec.validate(*args); end
|
972
1007
|
|
973
1008
|
util_build_gem spec
|
974
1009
|
|
975
|
-
cache_file = File.join @tempdir,
|
1010
|
+
cache_file = File.join @tempdir, "gems", "#{spec.original_name}.gem"
|
976
1011
|
FileUtils.mkdir_p File.dirname cache_file
|
977
1012
|
FileUtils.mv spec.cache_file, cache_file
|
978
1013
|
|
@@ -980,9 +1015,9 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
980
1015
|
|
981
1016
|
data = Gem.read_binary(cache_file)
|
982
1017
|
|
983
|
-
@fetcher.data[
|
1018
|
+
@fetcher.data["http://gems.example.com/gems/activesupport-1.0.0.gem"] = data
|
984
1019
|
|
985
|
-
dep = Gem::Dependency.new
|
1020
|
+
dep = Gem::Dependency.new "activesupport"
|
986
1021
|
|
987
1022
|
inst = Gem::DependencyInstaller.new
|
988
1023
|
inst.install dep
|
@@ -994,7 +1029,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
994
1029
|
util_setup_gems
|
995
1030
|
|
996
1031
|
inst = Gem::DependencyInstaller.new
|
997
|
-
dep = Gem::Dependency.new
|
1032
|
+
dep = Gem::Dependency.new "b", ">= 0"
|
998
1033
|
|
999
1034
|
Gem::Specification.reset
|
1000
1035
|
|
@@ -1015,7 +1050,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
1015
1050
|
|
1016
1051
|
FileUtils.mv @a1_gem, @tempdir
|
1017
1052
|
inst = Gem::DependencyInstaller.new
|
1018
|
-
dep = Gem::Dependency.new
|
1053
|
+
dep = Gem::Dependency.new "a", ">= 0"
|
1019
1054
|
set = nil
|
1020
1055
|
|
1021
1056
|
Dir.chdir @tempdir do
|
@@ -1030,12 +1065,12 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
1030
1065
|
|
1031
1066
|
remote, local = gems
|
1032
1067
|
|
1033
|
-
assert_equal
|
1068
|
+
assert_equal "a-1", local.spec.full_name, "local spec"
|
1034
1069
|
assert_equal File.join(@tempdir, @a1.file_name),
|
1035
|
-
local.source.download(local.spec),
|
1070
|
+
local.source.download(local.spec), "local path"
|
1036
1071
|
|
1037
|
-
assert_equal
|
1038
|
-
assert_equal Gem::Source.new(@gem_repo), remote.source,
|
1072
|
+
assert_equal "a-1", remote.spec.full_name, "remote spec"
|
1073
|
+
assert_equal Gem::Source.new(@gem_repo), remote.source, "remote path"
|
1039
1074
|
end
|
1040
1075
|
|
1041
1076
|
def test_find_gems_with_sources_prerelease
|
@@ -1043,7 +1078,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
1043
1078
|
|
1044
1079
|
installer = Gem::DependencyInstaller.new
|
1045
1080
|
|
1046
|
-
dependency = Gem::Dependency.new(
|
1081
|
+
dependency = Gem::Dependency.new("a", Gem::Requirement.default)
|
1047
1082
|
|
1048
1083
|
set = Gem::Deprecate.skip_during do
|
1049
1084
|
installer.find_gems_with_sources(dependency)
|
@@ -1051,8 +1086,8 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
1051
1086
|
|
1052
1087
|
releases = set.all_specs
|
1053
1088
|
|
1054
|
-
assert releases.any? {|s| s.name ==
|
1055
|
-
refute releases.any? {|s| s.name ==
|
1089
|
+
assert releases.any? {|s| s.name == "a" && s.version.to_s == "1" }
|
1090
|
+
refute releases.any? {|s| s.name == "a" && s.version.to_s == "1.a" }
|
1056
1091
|
|
1057
1092
|
dependency.prerelease = true
|
1058
1093
|
|
@@ -1067,15 +1102,15 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
1067
1102
|
|
1068
1103
|
def test_find_gems_with_sources_with_best_only_and_platform
|
1069
1104
|
util_setup_gems
|
1070
|
-
a1_x86_mingw32, = util_gem
|
1071
|
-
s.platform =
|
1105
|
+
a1_x86_mingw32, = util_gem "a", "1" do |s|
|
1106
|
+
s.platform = "x86-mingw32"
|
1072
1107
|
end
|
1073
1108
|
util_setup_spec_fetcher @a1, a1_x86_mingw32
|
1074
|
-
Gem.platforms << Gem::Platform.new(
|
1109
|
+
Gem.platforms << Gem::Platform.new("x86-mingw32")
|
1075
1110
|
|
1076
1111
|
installer = Gem::DependencyInstaller.new
|
1077
1112
|
|
1078
|
-
dependency = Gem::Dependency.new(
|
1113
|
+
dependency = Gem::Dependency.new("a", Gem::Requirement.default)
|
1079
1114
|
|
1080
1115
|
set = Gem::Deprecate.skip_during do
|
1081
1116
|
installer.find_gems_with_sources(dependency, true)
|
@@ -1091,7 +1126,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
1091
1126
|
|
1092
1127
|
installer = Gem::DependencyInstaller.new
|
1093
1128
|
|
1094
|
-
dep = Gem::Dependency.new(
|
1129
|
+
dep = Gem::Dependency.new("a")
|
1095
1130
|
|
1096
1131
|
out = Gem::Deprecate.skip_during do
|
1097
1132
|
installer.find_gems_with_sources(dep)
|
@@ -1108,7 +1143,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
1108
1143
|
FileUtils.mv @b1_gem, @tempdir
|
1109
1144
|
|
1110
1145
|
inst = Gem::DependencyInstaller.new
|
1111
|
-
request_set = inst.resolve_dependencies
|
1146
|
+
request_set = inst.resolve_dependencies "b", req(">= 0")
|
1112
1147
|
|
1113
1148
|
requests = request_set.sorted_requests.map {|req| req.full_name }
|
1114
1149
|
|
@@ -1122,7 +1157,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
1122
1157
|
FileUtils.mv @b1_gem, @tempdir
|
1123
1158
|
|
1124
1159
|
inst = Gem::DependencyInstaller.new :ignore_dependencies => true
|
1125
|
-
request_set = inst.resolve_dependencies
|
1160
|
+
request_set = inst.resolve_dependencies "b", req(">= 0")
|
1126
1161
|
|
1127
1162
|
requests = request_set.sorted_requests.map {|req| req.full_name }
|
1128
1163
|
|
@@ -1134,12 +1169,12 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
1134
1169
|
def test_resolve_dependencies_local
|
1135
1170
|
util_setup_gems
|
1136
1171
|
|
1137
|
-
@a2, @a2_gem = util_gem
|
1172
|
+
@a2, @a2_gem = util_gem "a", "2"
|
1138
1173
|
FileUtils.mv @a1_gem, @tempdir
|
1139
1174
|
FileUtils.mv @a2_gem, @tempdir
|
1140
1175
|
|
1141
1176
|
inst = Gem::DependencyInstaller.new
|
1142
|
-
request_set = inst.resolve_dependencies
|
1177
|
+
request_set = inst.resolve_dependencies "a-1.gem", req(">= 0")
|
1143
1178
|
|
1144
1179
|
requests = request_set.sorted_requests.map {|req| req.full_name }
|
1145
1180
|
|
@@ -1147,8 +1182,8 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
1147
1182
|
end
|
1148
1183
|
|
1149
1184
|
def util_setup_d
|
1150
|
-
@d1, @d1_gem = util_gem
|
1151
|
-
@d2, @d2_gem = util_gem
|
1185
|
+
@d1, @d1_gem = util_gem "d", "1"
|
1186
|
+
@d2, @d2_gem = util_gem "d", "2"
|
1152
1187
|
|
1153
1188
|
util_setup_spec_fetcher(@d1, @d2)
|
1154
1189
|
end
|