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,11 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
require
|
2
|
+
|
3
|
+
require_relative "helper"
|
4
|
+
require_relative "test_gem_update_suggestion"
|
5
|
+
require "rubygems/commands/install_command"
|
6
|
+
require "rubygems/request_set"
|
7
|
+
require "rubygems/rdoc"
|
6
8
|
|
7
9
|
class TestGemCommandsInstallCommand < Gem::TestCase
|
8
10
|
def setup
|
11
|
+
@orig_args = Gem::Command.build_args
|
9
12
|
super
|
10
13
|
common_installer_setup
|
11
14
|
|
@@ -13,7 +16,6 @@ class TestGemCommandsInstallCommand < Gem::TestCase
|
|
13
16
|
@cmd.options[:document] = []
|
14
17
|
|
15
18
|
@gemdeps = "tmp_install_gemdeps"
|
16
|
-
@orig_args = Gem::Command.build_args
|
17
19
|
|
18
20
|
common_installer_setup
|
19
21
|
end
|
@@ -30,8 +32,8 @@ class TestGemCommandsInstallCommand < Gem::TestCase
|
|
30
32
|
|
31
33
|
def test_execute_exclude_prerelease
|
32
34
|
spec_fetcher do |fetcher|
|
33
|
-
fetcher.gem
|
34
|
-
fetcher.gem
|
35
|
+
fetcher.gem "a", 2
|
36
|
+
fetcher.gem "a", "2.pre"
|
35
37
|
end
|
36
38
|
|
37
39
|
@cmd.options[:args] = %w[a]
|
@@ -47,13 +49,13 @@ class TestGemCommandsInstallCommand < Gem::TestCase
|
|
47
49
|
|
48
50
|
def test_execute_explicit_version_includes_prerelease
|
49
51
|
specs = spec_fetcher do |fetcher|
|
50
|
-
fetcher.gem
|
51
|
-
fetcher.gem
|
52
|
+
fetcher.gem "a", 2
|
53
|
+
fetcher.gem "a", "2.a"
|
52
54
|
end
|
53
55
|
|
54
|
-
a2_pre = specs[
|
56
|
+
a2_pre = specs["a-2.a"]
|
55
57
|
|
56
|
-
@cmd.handle_options [a2_pre.name,
|
58
|
+
@cmd.handle_options [a2_pre.name, "--version", a2_pre.version.to_s,
|
57
59
|
"--no-document"]
|
58
60
|
assert @cmd.options[:prerelease]
|
59
61
|
assert @cmd.options[:version].satisfied_by?(a2_pre.version)
|
@@ -69,12 +71,12 @@ class TestGemCommandsInstallCommand < Gem::TestCase
|
|
69
71
|
|
70
72
|
def test_execute_local
|
71
73
|
specs = spec_fetcher do |fetcher|
|
72
|
-
fetcher.gem
|
74
|
+
fetcher.gem "a", 2
|
73
75
|
end
|
74
76
|
|
75
77
|
@cmd.options[:domain] = :local
|
76
78
|
|
77
|
-
FileUtils.mv specs[
|
79
|
+
FileUtils.mv specs["a-2"].cache_file, @tempdir
|
78
80
|
|
79
81
|
@cmd.options[:args] = %w[a]
|
80
82
|
|
@@ -97,14 +99,14 @@ class TestGemCommandsInstallCommand < Gem::TestCase
|
|
97
99
|
|
98
100
|
def test_execute_local_dependency_nonexistent
|
99
101
|
specs = spec_fetcher do |fetcher|
|
100
|
-
fetcher.gem
|
102
|
+
fetcher.gem "foo", 2, "bar" => "0.5"
|
101
103
|
end
|
102
104
|
|
103
105
|
@cmd.options[:domain] = :local
|
104
106
|
|
105
|
-
FileUtils.mv specs[
|
107
|
+
FileUtils.mv specs["foo-2"].cache_file, @tempdir
|
106
108
|
|
107
|
-
@cmd.options[:args] = [
|
109
|
+
@cmd.options[:args] = ["foo"]
|
108
110
|
|
109
111
|
use_ui @ui do
|
110
112
|
orig_dir = Dir.pwd
|
@@ -128,15 +130,15 @@ ERROR: Could not find a valid gem 'bar' (= 0.5) (required by 'foo' (>= 0)) in a
|
|
128
130
|
|
129
131
|
def test_execute_local_dependency_nonexistent_ignore_dependencies
|
130
132
|
specs = spec_fetcher do |fetcher|
|
131
|
-
fetcher.gem
|
133
|
+
fetcher.gem "foo", 2, "bar" => "0.5"
|
132
134
|
end
|
133
135
|
|
134
136
|
@cmd.options[:domain] = :local
|
135
137
|
@cmd.options[:ignore_dependencies] = true
|
136
138
|
|
137
|
-
FileUtils.mv specs[
|
139
|
+
FileUtils.mv specs["foo-2"].cache_file, @tempdir
|
138
140
|
|
139
|
-
@cmd.options[:args] = [
|
141
|
+
@cmd.options[:args] = ["foo"]
|
140
142
|
|
141
143
|
use_ui @ui do
|
142
144
|
orig_dir = Dir.pwd
|
@@ -155,16 +157,16 @@ ERROR: Could not find a valid gem 'bar' (= 0.5) (required by 'foo' (>= 0)) in a
|
|
155
157
|
|
156
158
|
def test_execute_local_transitive_prerelease
|
157
159
|
specs = spec_fetcher do |fetcher|
|
158
|
-
fetcher.download
|
159
|
-
fetcher.download
|
160
|
-
fetcher.download
|
160
|
+
fetcher.download "a", 2, "b" => "2.a", "c" => "3"
|
161
|
+
fetcher.download "b", "2.a"
|
162
|
+
fetcher.download "c", "3"
|
161
163
|
end
|
162
164
|
|
163
165
|
@cmd.options[:domain] = :local
|
164
166
|
|
165
|
-
FileUtils.mv specs[
|
166
|
-
FileUtils.mv specs[
|
167
|
-
FileUtils.mv specs[
|
167
|
+
FileUtils.mv specs["a-2"].cache_file, @tempdir
|
168
|
+
FileUtils.mv specs["b-2.a"].cache_file, @tempdir
|
169
|
+
FileUtils.mv specs["c-3"].cache_file, @tempdir
|
168
170
|
|
169
171
|
@cmd.options[:args] = %w[a]
|
170
172
|
|
@@ -187,16 +189,16 @@ ERROR: Could not find a valid gem 'bar' (= 0.5) (required by 'foo' (>= 0)) in a
|
|
187
189
|
end
|
188
190
|
|
189
191
|
def test_execute_no_user_install
|
190
|
-
pend
|
191
|
-
pend
|
192
|
+
pend "skipped on MS Windows (chmod has no effect)" if win_platform?
|
193
|
+
pend "skipped in root privilege" if Process.uid.zero?
|
192
194
|
|
193
195
|
specs = spec_fetcher do |fetcher|
|
194
|
-
fetcher.gem
|
196
|
+
fetcher.gem "a", 2
|
195
197
|
end
|
196
198
|
|
197
199
|
@cmd.options[:user_install] = false
|
198
200
|
|
199
|
-
FileUtils.mv specs[
|
201
|
+
FileUtils.mv specs["a-2"].cache_file, @tempdir
|
200
202
|
|
201
203
|
@cmd.options[:args] = %w[a]
|
202
204
|
|
@@ -295,10 +297,10 @@ ERROR: Could not find a valid gem 'bar' (= 0.5) (required by 'foo' (>= 0)) in a
|
|
295
297
|
|
296
298
|
def test_execute_dependency_nonexistent
|
297
299
|
spec_fetcher do |fetcher|
|
298
|
-
fetcher.spec
|
300
|
+
fetcher.spec "foo", 2, "bar" => "0.5"
|
299
301
|
end
|
300
302
|
|
301
|
-
@cmd.options[:args] = [
|
303
|
+
@cmd.options[:args] = ["foo"]
|
302
304
|
|
303
305
|
use_ui @ui do
|
304
306
|
e = assert_raise Gem::MockGemUi::TermError do
|
@@ -451,8 +453,8 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
451
453
|
|
452
454
|
def test_execute_prerelease_skipped_when_no_flag_set
|
453
455
|
spec_fetcher do |fetcher|
|
454
|
-
fetcher.gem
|
455
|
-
fetcher.gem
|
456
|
+
fetcher.gem "a", 1
|
457
|
+
fetcher.gem "a", "3.a"
|
456
458
|
end
|
457
459
|
|
458
460
|
@cmd.options[:prerelease] = false
|
@@ -469,8 +471,8 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
469
471
|
|
470
472
|
def test_execute_prerelease_wins_over_previous_ver
|
471
473
|
spec_fetcher do |fetcher|
|
472
|
-
fetcher.download
|
473
|
-
fetcher.download
|
474
|
+
fetcher.download "a", 1
|
475
|
+
fetcher.download "a", "2.a"
|
474
476
|
end
|
475
477
|
|
476
478
|
@cmd.options[:prerelease] = true
|
@@ -487,8 +489,8 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
487
489
|
|
488
490
|
def test_execute_with_version_specified_by_colon
|
489
491
|
spec_fetcher do |fetcher|
|
490
|
-
fetcher.download
|
491
|
-
fetcher.download
|
492
|
+
fetcher.download "a", 1
|
493
|
+
fetcher.download "a", 2
|
492
494
|
end
|
493
495
|
|
494
496
|
@cmd.options[:args] = %w[a:1]
|
@@ -504,8 +506,8 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
504
506
|
|
505
507
|
def test_execute_prerelease_skipped_when_non_pre_available
|
506
508
|
spec_fetcher do |fetcher|
|
507
|
-
fetcher.gem
|
508
|
-
fetcher.gem
|
509
|
+
fetcher.gem "a", "2.pre"
|
510
|
+
fetcher.gem "a", 2
|
509
511
|
end
|
510
512
|
|
511
513
|
@cmd.options[:prerelease] = true
|
@@ -525,15 +527,15 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
525
527
|
|
526
528
|
local = Gem::Platform.local
|
527
529
|
spec_fetcher do |fetcher|
|
528
|
-
fetcher.download
|
529
|
-
fetcher.download
|
530
|
+
fetcher.download "a", 2
|
531
|
+
fetcher.download "a", 2 do |s|
|
530
532
|
s.required_ruby_version = "< #{RUBY_VERSION}.a"
|
531
533
|
s.platform = local
|
532
534
|
end
|
533
|
-
fetcher.download
|
535
|
+
fetcher.download "a", 3 do |s|
|
534
536
|
s.required_ruby_version = ">= #{next_ruby}"
|
535
537
|
end
|
536
|
-
fetcher.download
|
538
|
+
fetcher.download "a", 3 do |s|
|
537
539
|
s.required_ruby_version = ">= #{next_ruby}"
|
538
540
|
s.platform = local
|
539
541
|
end
|
@@ -553,8 +555,8 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
553
555
|
def test_execute_required_ruby_version_upper_bound
|
554
556
|
local = Gem::Platform.local
|
555
557
|
spec_fetcher do |fetcher|
|
556
|
-
fetcher.gem
|
557
|
-
fetcher.gem
|
558
|
+
fetcher.gem "a", 2.0
|
559
|
+
fetcher.gem "a", 2.0 do |s|
|
558
560
|
s.required_ruby_version = "< #{RUBY_VERSION}.a"
|
559
561
|
s.platform = local
|
560
562
|
end
|
@@ -573,8 +575,8 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
573
575
|
|
574
576
|
def test_execute_required_ruby_version_specific_not_met
|
575
577
|
spec_fetcher do |fetcher|
|
576
|
-
fetcher.gem
|
577
|
-
s.required_ruby_version =
|
578
|
+
fetcher.gem "a", "1.0" do |s|
|
579
|
+
s.required_ruby_version = "= 1.4.6"
|
578
580
|
end
|
579
581
|
end
|
580
582
|
|
@@ -593,8 +595,8 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
593
595
|
|
594
596
|
def test_execute_required_ruby_version_specific_prerelease_met
|
595
597
|
spec_fetcher do |fetcher|
|
596
|
-
fetcher.gem
|
597
|
-
s.required_ruby_version =
|
598
|
+
fetcher.gem "a", "1.0" do |s|
|
599
|
+
s.required_ruby_version = ">= 1.4.6.preview2"
|
598
600
|
end
|
599
601
|
end
|
600
602
|
|
@@ -613,7 +615,7 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
613
615
|
next_ruby_pre = Gem.ruby_version.segments.map.with_index {|n, i| i == 1 ? n + 1 : n }.join(".") + ".a"
|
614
616
|
|
615
617
|
spec_fetcher do |fetcher|
|
616
|
-
fetcher.gem
|
618
|
+
fetcher.gem "a", "1.0" do |s|
|
617
619
|
s.required_ruby_version = "> #{next_ruby_pre}"
|
618
620
|
end
|
619
621
|
end
|
@@ -633,8 +635,8 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
633
635
|
|
634
636
|
def test_execute_required_rubygems_version_wrong
|
635
637
|
spec_fetcher do |fetcher|
|
636
|
-
fetcher.gem
|
637
|
-
s.required_rubygems_version =
|
638
|
+
fetcher.gem "a", "1.0" do |s|
|
639
|
+
s.required_rubygems_version = "< 0"
|
638
640
|
end
|
639
641
|
end
|
640
642
|
|
@@ -653,7 +655,7 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
653
655
|
|
654
656
|
def test_execute_rdoc
|
655
657
|
specs = spec_fetcher do |fetcher|
|
656
|
-
fetcher.gem
|
658
|
+
fetcher.gem "a", 2
|
657
659
|
end
|
658
660
|
|
659
661
|
Gem.done_installing(&Gem::RDoc.method(:generation_hook))
|
@@ -661,7 +663,7 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
661
663
|
@cmd.options[:document] = %w[rdoc ri]
|
662
664
|
@cmd.options[:domain] = :local
|
663
665
|
|
664
|
-
a2 = specs[
|
666
|
+
a2 = specs["a-2"]
|
665
667
|
FileUtils.mv a2.cache_file, @tempdir
|
666
668
|
|
667
669
|
@cmd.options[:args] = %w[a]
|
@@ -683,22 +685,22 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
683
685
|
|
684
686
|
wait_for_child_process_to_exit
|
685
687
|
|
686
|
-
assert_path_exist File.join(a2.doc_dir,
|
687
|
-
assert_path_exist File.join(a2.doc_dir,
|
688
|
+
assert_path_exist File.join(a2.doc_dir, "ri")
|
689
|
+
assert_path_exist File.join(a2.doc_dir, "rdoc")
|
688
690
|
end
|
689
691
|
|
690
692
|
def test_execute_rdoc_with_path
|
691
693
|
specs = spec_fetcher do |fetcher|
|
692
|
-
fetcher.gem
|
694
|
+
fetcher.gem "a", 2
|
693
695
|
end
|
694
696
|
|
695
697
|
Gem.done_installing(&Gem::RDoc.method(:generation_hook))
|
696
698
|
|
697
699
|
@cmd.options[:document] = %w[rdoc ri]
|
698
700
|
@cmd.options[:domain] = :local
|
699
|
-
@cmd.options[:install_dir] =
|
701
|
+
@cmd.options[:install_dir] = "whatever"
|
700
702
|
|
701
|
-
a2 = specs[
|
703
|
+
a2 = specs["a-2"]
|
702
704
|
FileUtils.mv a2.cache_file, @tempdir
|
703
705
|
|
704
706
|
@cmd.options[:args] = %w[a]
|
@@ -720,19 +722,19 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
720
722
|
|
721
723
|
wait_for_child_process_to_exit
|
722
724
|
|
723
|
-
assert_path_exist
|
725
|
+
assert_path_exist "whatever/doc/a-2", "documentation not installed"
|
724
726
|
end
|
725
727
|
|
726
728
|
def test_execute_saves_build_args
|
727
729
|
specs = spec_fetcher do |fetcher|
|
728
|
-
fetcher.gem
|
730
|
+
fetcher.gem "a", 2
|
729
731
|
end
|
730
732
|
|
731
733
|
args = %w[--with-awesome=true --more-awesome=yes]
|
732
734
|
|
733
735
|
Gem::Command.build_args = args
|
734
736
|
|
735
|
-
a2 = specs[
|
737
|
+
a2 = specs["a-2"]
|
736
738
|
FileUtils.mv a2.cache_file, @tempdir
|
737
739
|
|
738
740
|
@cmd.options[:domain] = :local
|
@@ -762,7 +764,7 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
762
764
|
|
763
765
|
def test_execute_remote
|
764
766
|
spec_fetcher do |fetcher|
|
765
|
-
fetcher.gem
|
767
|
+
fetcher.gem "a", 2
|
766
768
|
end
|
767
769
|
|
768
770
|
@cmd.options[:args] = %w[a]
|
@@ -782,7 +784,7 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
782
784
|
FileUtils.touch("a.gem")
|
783
785
|
|
784
786
|
spec_fetcher do |fetcher|
|
785
|
-
fetcher.gem
|
787
|
+
fetcher.gem "a", 2
|
786
788
|
end
|
787
789
|
|
788
790
|
@cmd.options[:args] = %w[a]
|
@@ -800,7 +802,7 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
800
802
|
|
801
803
|
def test_execute_remote_truncates_existing_gemspecs
|
802
804
|
spec_fetcher do |fetcher|
|
803
|
-
fetcher.gem
|
805
|
+
fetcher.gem "a", 1
|
804
806
|
end
|
805
807
|
|
806
808
|
@cmd.options[:domain] = :remote
|
@@ -816,7 +818,7 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
816
818
|
assert_equal %w[a-1], @cmd.installed_specs.map {|spec| spec.full_name }
|
817
819
|
assert_match "1 gem installed", @ui.output
|
818
820
|
|
819
|
-
a1_gemspec = File.join(@gemhome,
|
821
|
+
a1_gemspec = File.join(@gemhome, "specifications", "a-1.gemspec")
|
820
822
|
|
821
823
|
initial_a1_gemspec_content = File.read(a1_gemspec)
|
822
824
|
modified_a1_gemspec_content = initial_a1_gemspec_content + "\n # AAAAAAA\n"
|
@@ -833,14 +835,14 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
833
835
|
|
834
836
|
def test_execute_remote_ignores_files
|
835
837
|
specs = spec_fetcher do |fetcher|
|
836
|
-
fetcher.gem
|
837
|
-
fetcher.gem
|
838
|
+
fetcher.gem "a", 1
|
839
|
+
fetcher.gem "a", 2
|
838
840
|
end
|
839
841
|
|
840
842
|
@cmd.options[:domain] = :remote
|
841
843
|
|
842
|
-
a1 = specs[
|
843
|
-
a2 = specs[
|
844
|
+
a1 = specs["a-1"]
|
845
|
+
a2 = specs["a-2"]
|
844
846
|
|
845
847
|
FileUtils.mv a2.cache_file, @tempdir
|
846
848
|
|
@@ -849,7 +851,7 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
849
851
|
|
850
852
|
@cmd.options[:args] = [a2.name]
|
851
853
|
|
852
|
-
gemdir = File.join @gemhome,
|
854
|
+
gemdir = File.join @gemhome, "specifications"
|
853
855
|
|
854
856
|
a2_gemspec = File.join(gemdir, "a-2.gemspec")
|
855
857
|
a1_gemspec = File.join(gemdir, "a-1.gemspec")
|
@@ -878,12 +880,12 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
878
880
|
|
879
881
|
def test_execute_two
|
880
882
|
specs = spec_fetcher do |fetcher|
|
881
|
-
fetcher.gem
|
882
|
-
fetcher.gem
|
883
|
+
fetcher.gem "a", 2
|
884
|
+
fetcher.gem "b", 2
|
883
885
|
end
|
884
886
|
|
885
|
-
FileUtils.mv specs[
|
886
|
-
FileUtils.mv specs[
|
887
|
+
FileUtils.mv specs["a-2"].cache_file, @tempdir
|
888
|
+
FileUtils.mv specs["b-2"].cache_file, @tempdir
|
887
889
|
|
888
890
|
@cmd.options[:domain] = :local
|
889
891
|
|
@@ -929,10 +931,10 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
929
931
|
|
930
932
|
def test_execute_two_version_specified_by_colon
|
931
933
|
spec_fetcher do |fetcher|
|
932
|
-
fetcher.gem
|
933
|
-
fetcher.gem
|
934
|
-
fetcher.gem
|
935
|
-
fetcher.gem
|
934
|
+
fetcher.gem "a", 1
|
935
|
+
fetcher.gem "a", 2
|
936
|
+
fetcher.gem "b", 1
|
937
|
+
fetcher.gem "b", 2
|
936
938
|
end
|
937
939
|
|
938
940
|
@cmd.options[:args] = %w[a:1 b:1]
|
@@ -948,9 +950,9 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
948
950
|
|
949
951
|
def test_execute_conservative
|
950
952
|
spec_fetcher do |fetcher|
|
951
|
-
fetcher.download
|
953
|
+
fetcher.download "b", 2
|
952
954
|
|
953
|
-
fetcher.gem
|
955
|
+
fetcher.gem "a", 2
|
954
956
|
end
|
955
957
|
|
956
958
|
@cmd.options[:conservative] = true
|
@@ -981,7 +983,7 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
981
983
|
done_installing = true
|
982
984
|
end
|
983
985
|
|
984
|
-
spec = util_spec
|
986
|
+
spec = util_spec "a", 2
|
985
987
|
|
986
988
|
util_build_gem spec
|
987
989
|
|
@@ -989,21 +991,21 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
989
991
|
|
990
992
|
@cmd.options[:ignore_dependencies] = true
|
991
993
|
|
992
|
-
@cmd.install_gem
|
994
|
+
@cmd.install_gem "a", ">= 0"
|
993
995
|
|
994
996
|
assert_equal %w[a-2], @cmd.installed_specs.map {|s| s.full_name }
|
995
997
|
|
996
|
-
assert done_installing,
|
998
|
+
assert done_installing, "documentation was not generated"
|
997
999
|
end
|
998
1000
|
|
999
1001
|
def test_install_gem_ignore_dependencies_remote
|
1000
1002
|
spec_fetcher do |fetcher|
|
1001
|
-
fetcher.gem
|
1003
|
+
fetcher.gem "a", 2
|
1002
1004
|
end
|
1003
1005
|
|
1004
1006
|
@cmd.options[:ignore_dependencies] = true
|
1005
1007
|
|
1006
|
-
@cmd.install_gem
|
1008
|
+
@cmd.install_gem "a", ">= 0"
|
1007
1009
|
|
1008
1010
|
assert_equal %w[a-2], @cmd.installed_specs.map {|spec| spec.full_name }
|
1009
1011
|
end
|
@@ -1011,22 +1013,22 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
1011
1013
|
def test_install_gem_ignore_dependencies_remote_platform_local
|
1012
1014
|
local = Gem::Platform.local
|
1013
1015
|
spec_fetcher do |fetcher|
|
1014
|
-
fetcher.gem
|
1016
|
+
fetcher.gem "a", 3
|
1015
1017
|
|
1016
|
-
fetcher.gem
|
1018
|
+
fetcher.gem "a", 3 do |s|
|
1017
1019
|
s.platform = local
|
1018
1020
|
end
|
1019
1021
|
end
|
1020
1022
|
|
1021
1023
|
@cmd.options[:ignore_dependencies] = true
|
1022
1024
|
|
1023
|
-
@cmd.install_gem
|
1025
|
+
@cmd.install_gem "a", ">= 0"
|
1024
1026
|
|
1025
1027
|
assert_equal %W[a-3-#{local}], @cmd.installed_specs.map {|spec| spec.full_name }
|
1026
1028
|
end
|
1027
1029
|
|
1028
1030
|
def test_install_gem_ignore_dependencies_specific_file
|
1029
|
-
spec = util_spec
|
1031
|
+
spec = util_spec "a", 2
|
1030
1032
|
|
1031
1033
|
util_build_gem spec
|
1032
1034
|
|
@@ -1041,8 +1043,8 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
1041
1043
|
|
1042
1044
|
def test_parses_requirement_from_gemname
|
1043
1045
|
spec_fetcher do |fetcher|
|
1044
|
-
fetcher.gem
|
1045
|
-
fetcher.gem
|
1046
|
+
fetcher.gem "a", 2
|
1047
|
+
fetcher.gem "b", 2
|
1046
1048
|
end
|
1047
1049
|
|
1048
1050
|
@cmd.options[:domain] = :local
|
@@ -1088,12 +1090,12 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
1088
1090
|
|
1089
1091
|
assert_equal 2, e.exit_code
|
1090
1092
|
|
1091
|
-
assert_match
|
1093
|
+
assert_match "Unable to download data", @ui.error
|
1092
1094
|
end
|
1093
1095
|
|
1094
1096
|
def test_show_source_problems_even_on_success
|
1095
1097
|
spec_fetcher do |fetcher|
|
1096
|
-
fetcher.download
|
1098
|
+
fetcher.download "a", 2
|
1097
1099
|
end
|
1098
1100
|
|
1099
1101
|
Gem.sources << "http://nonexistent.example"
|
@@ -1118,7 +1120,7 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
1118
1120
|
|
1119
1121
|
def test_redact_credentials_from_uri_on_warning
|
1120
1122
|
spec_fetcher do |fetcher|
|
1121
|
-
fetcher.download
|
1123
|
+
fetcher.download "a", 2
|
1122
1124
|
end
|
1123
1125
|
|
1124
1126
|
Gem.sources << "http://username:SECURE_TOKEN@nonexistent.example"
|
@@ -1143,7 +1145,7 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
1143
1145
|
|
1144
1146
|
def test_execute_uses_from_a_gemdeps
|
1145
1147
|
spec_fetcher do |fetcher|
|
1146
|
-
fetcher.gem
|
1148
|
+
fetcher.gem "a", 2
|
1147
1149
|
end
|
1148
1150
|
|
1149
1151
|
File.open @gemdeps, "w" do |f|
|
@@ -1166,7 +1168,7 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
1166
1168
|
|
1167
1169
|
def test_execute_uses_from_a_gemdeps_with_no_lock
|
1168
1170
|
spec_fetcher do |fetcher|
|
1169
|
-
fetcher.gem
|
1171
|
+
fetcher.gem "a", 2
|
1170
1172
|
end
|
1171
1173
|
|
1172
1174
|
File.open @gemdeps, "w" do |f|
|
@@ -1190,8 +1192,8 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
1190
1192
|
|
1191
1193
|
def test_execute_installs_from_a_gemdeps_with_conservative
|
1192
1194
|
spec_fetcher do |fetcher|
|
1193
|
-
fetcher.download
|
1194
|
-
fetcher.gem
|
1195
|
+
fetcher.download "a", 2
|
1196
|
+
fetcher.gem "a", 1
|
1195
1197
|
end
|
1196
1198
|
|
1197
1199
|
File.open @gemdeps, "w" do |f|
|
@@ -1214,7 +1216,7 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
1214
1216
|
|
1215
1217
|
def test_execute_installs_from_a_gemdeps
|
1216
1218
|
spec_fetcher do |fetcher|
|
1217
|
-
fetcher.download
|
1219
|
+
fetcher.download "a", 2
|
1218
1220
|
end
|
1219
1221
|
|
1220
1222
|
File.open @gemdeps, "w" do |f|
|
@@ -1236,8 +1238,8 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
1236
1238
|
|
1237
1239
|
def test_execute_installs_deps_a_gemdeps
|
1238
1240
|
spec_fetcher do |fetcher|
|
1239
|
-
fetcher.download
|
1240
|
-
fetcher.download
|
1241
|
+
fetcher.download "q", "1.0"
|
1242
|
+
fetcher.download "r", "2.0", "q" => nil
|
1241
1243
|
end
|
1242
1244
|
|
1243
1245
|
File.open @gemdeps, "w" do |f|
|
@@ -1262,9 +1264,9 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
1262
1264
|
|
1263
1265
|
def test_execute_uses_deps_a_gemdeps
|
1264
1266
|
spec_fetcher do |fetcher|
|
1265
|
-
fetcher.download
|
1267
|
+
fetcher.download "r", "2.0", "q" => nil
|
1266
1268
|
|
1267
|
-
fetcher.spec
|
1269
|
+
fetcher.spec "q", "1.0"
|
1268
1270
|
end
|
1269
1271
|
|
1270
1272
|
File.open @gemdeps, "w" do |f|
|
@@ -1289,8 +1291,8 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
1289
1291
|
|
1290
1292
|
def test_execute_installs_deps_a_gemdeps_into_a_path
|
1291
1293
|
spec_fetcher do |fetcher|
|
1292
|
-
fetcher.download
|
1293
|
-
fetcher.download
|
1294
|
+
fetcher.download "q", "1.0"
|
1295
|
+
fetcher.download "r", "2.0", "q" => nil
|
1294
1296
|
end
|
1295
1297
|
|
1296
1298
|
File.open @gemdeps, "w" do |f|
|
@@ -1319,11 +1321,11 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
1319
1321
|
|
1320
1322
|
def test_execute_with_gemdeps_path_ignores_system
|
1321
1323
|
specs = spec_fetcher do |fetcher|
|
1322
|
-
fetcher.download
|
1323
|
-
fetcher.download
|
1324
|
+
fetcher.download "q", "1.0"
|
1325
|
+
fetcher.download "r", "2.0", "q" => nil
|
1324
1326
|
end
|
1325
1327
|
|
1326
|
-
install_specs specs[
|
1328
|
+
install_specs specs["q-1.0"]
|
1327
1329
|
|
1328
1330
|
File.open @gemdeps, "w" do |f|
|
1329
1331
|
f << "gem 'r'"
|
@@ -1351,11 +1353,11 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
1351
1353
|
|
1352
1354
|
def test_execute_uses_deps_a_gemdeps_with_a_path
|
1353
1355
|
specs = spec_fetcher do |fetcher|
|
1354
|
-
fetcher.gem
|
1355
|
-
fetcher.gem
|
1356
|
+
fetcher.gem "q", "1.0"
|
1357
|
+
fetcher.gem "r", "2.0", "q" => nil
|
1356
1358
|
end
|
1357
1359
|
|
1358
|
-
i = Gem::Installer.at specs[
|
1360
|
+
i = Gem::Installer.at specs["q-1.0"].cache_file, :install_dir => "gf-path"
|
1359
1361
|
i.install
|
1360
1362
|
|
1361
1363
|
assert File.file?("gf-path/specifications/q-1.0.gemspec"), "not installed"
|
@@ -1382,39 +1384,39 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
1382
1384
|
end
|
1383
1385
|
|
1384
1386
|
def test_handle_options_file
|
1385
|
-
FileUtils.touch
|
1387
|
+
FileUtils.touch "Gemfile"
|
1386
1388
|
|
1387
1389
|
@cmd.handle_options %w[-g Gemfile]
|
1388
1390
|
|
1389
|
-
assert_equal
|
1391
|
+
assert_equal "Gemfile", @cmd.options[:gemdeps]
|
1390
1392
|
|
1391
|
-
FileUtils.rm
|
1393
|
+
FileUtils.rm "Gemfile"
|
1392
1394
|
|
1393
|
-
FileUtils.touch
|
1395
|
+
FileUtils.touch "gem.deps.rb"
|
1394
1396
|
|
1395
1397
|
@cmd.handle_options %w[--file gem.deps.rb]
|
1396
1398
|
|
1397
|
-
assert_equal
|
1399
|
+
assert_equal "gem.deps.rb", @cmd.options[:gemdeps]
|
1398
1400
|
|
1399
|
-
FileUtils.rm
|
1401
|
+
FileUtils.rm "gem.deps.rb"
|
1400
1402
|
|
1401
|
-
FileUtils.touch
|
1403
|
+
FileUtils.touch "Isolate"
|
1402
1404
|
|
1403
1405
|
@cmd.handle_options %w[-g]
|
1404
1406
|
|
1405
|
-
assert_equal
|
1407
|
+
assert_equal "Isolate", @cmd.options[:gemdeps]
|
1406
1408
|
|
1407
|
-
FileUtils.touch
|
1409
|
+
FileUtils.touch "Gemfile"
|
1408
1410
|
|
1409
1411
|
@cmd.handle_options %w[-g]
|
1410
1412
|
|
1411
|
-
assert_equal
|
1413
|
+
assert_equal "Gemfile", @cmd.options[:gemdeps]
|
1412
1414
|
|
1413
|
-
FileUtils.touch
|
1415
|
+
FileUtils.touch "gem.deps.rb"
|
1414
1416
|
|
1415
1417
|
@cmd.handle_options %w[-g]
|
1416
1418
|
|
1417
|
-
assert_equal
|
1419
|
+
assert_equal "gem.deps.rb", @cmd.options[:gemdeps]
|
1418
1420
|
end
|
1419
1421
|
|
1420
1422
|
def test_handle_options_suggest
|
@@ -1442,9 +1444,9 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
1442
1444
|
def test_explain_platform_local
|
1443
1445
|
local = Gem::Platform.local
|
1444
1446
|
spec_fetcher do |fetcher|
|
1445
|
-
fetcher.spec
|
1447
|
+
fetcher.spec "a", 2
|
1446
1448
|
|
1447
|
-
fetcher.spec
|
1449
|
+
fetcher.spec "a", 2 do |s|
|
1448
1450
|
s.platform = local
|
1449
1451
|
end
|
1450
1452
|
end
|
@@ -1468,9 +1470,9 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
1468
1470
|
def test_explain_platform_local_ignore_dependencies
|
1469
1471
|
local = Gem::Platform.local
|
1470
1472
|
spec_fetcher do |fetcher|
|
1471
|
-
fetcher.spec
|
1473
|
+
fetcher.spec "a", 3
|
1472
1474
|
|
1473
|
-
fetcher.spec
|
1475
|
+
fetcher.spec "a", 3 do |s|
|
1474
1476
|
s.platform = local
|
1475
1477
|
end
|
1476
1478
|
end
|
@@ -1495,9 +1497,9 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
1495
1497
|
def test_explain_platform_ruby
|
1496
1498
|
local = Gem::Platform.local
|
1497
1499
|
spec_fetcher do |fetcher|
|
1498
|
-
fetcher.spec
|
1500
|
+
fetcher.spec "a", 2
|
1499
1501
|
|
1500
|
-
fetcher.spec
|
1502
|
+
fetcher.spec "a", 2 do |s|
|
1501
1503
|
s.platform = local
|
1502
1504
|
end
|
1503
1505
|
end
|
@@ -1524,9 +1526,9 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
1524
1526
|
def test_explain_platform_ruby_ignore_dependencies
|
1525
1527
|
local = Gem::Platform.local
|
1526
1528
|
spec_fetcher do |fetcher|
|
1527
|
-
fetcher.spec
|
1529
|
+
fetcher.spec "a", 3
|
1528
1530
|
|
1529
|
-
fetcher.spec
|
1531
|
+
fetcher.spec "a", 3 do |s|
|
1530
1532
|
s.platform = local
|
1531
1533
|
end
|
1532
1534
|
end
|
@@ -1550,4 +1552,22 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
1550
1552
|
assert_equal " a-3", out.shift
|
1551
1553
|
assert_empty out
|
1552
1554
|
end
|
1555
|
+
|
1556
|
+
def test_suggest_update_if_enabled
|
1557
|
+
TestUpdateSuggestion.with_eglible_environment(cmd: @cmd) do
|
1558
|
+
spec_fetcher do |fetcher|
|
1559
|
+
fetcher.gem "a", 2
|
1560
|
+
end
|
1561
|
+
|
1562
|
+
@cmd.options[:args] = %w[a]
|
1563
|
+
|
1564
|
+
use_ui @ui do
|
1565
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
1566
|
+
@cmd.execute
|
1567
|
+
end
|
1568
|
+
end
|
1569
|
+
|
1570
|
+
assert_includes @ui.output, "A new release of RubyGems is available: 1.2.3 → 2.0.0!"
|
1571
|
+
end
|
1572
|
+
end
|
1553
1573
|
end
|