rubygems-update 3.3.18 → 3.4.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1429 -1064
- data/CONTRIBUTING.md +31 -8
- data/Manifest.txt +61 -36
- data/POLICIES.md +55 -20
- data/README.md +19 -6
- data/bundler/CHANGELOG.md +457 -1
- data/bundler/README.md +3 -6
- data/bundler/UPGRADING.md +11 -4
- data/bundler/bundler.gemspec +8 -10
- data/bundler/exe/bundle +5 -16
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/cli/add.rb +1 -1
- data/bundler/lib/bundler/cli/binstubs.rb +6 -2
- data/bundler/lib/bundler/cli/check.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +2 -0
- data/bundler/lib/bundler/cli/console.rb +2 -2
- data/bundler/lib/bundler/cli/doctor.rb +4 -6
- data/bundler/lib/bundler/cli/gem.rb +62 -40
- data/bundler/lib/bundler/cli/info.rb +1 -1
- data/bundler/lib/bundler/cli/init.rb +6 -2
- data/bundler/lib/bundler/cli/install.rb +8 -6
- data/bundler/lib/bundler/cli/lock.rb +8 -5
- data/bundler/lib/bundler/cli/open.rb +6 -4
- data/bundler/lib/bundler/cli/outdated.rb +14 -7
- data/bundler/lib/bundler/cli/platform.rb +7 -5
- data/bundler/lib/bundler/cli/viz.rb +1 -1
- data/bundler/lib/bundler/cli.rb +53 -7
- data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
- data/bundler/lib/bundler/compact_index_client/updater.rb +40 -39
- data/bundler/lib/bundler/constants.rb +1 -1
- data/bundler/lib/bundler/current_ruby.rb +16 -5
- data/bundler/lib/bundler/definition.rb +262 -133
- data/bundler/lib/bundler/dependency.rb +20 -86
- data/bundler/lib/bundler/digest.rb +1 -1
- data/bundler/lib/bundler/dsl.rb +6 -7
- data/bundler/lib/bundler/endpoint_specification.rb +2 -13
- data/bundler/lib/bundler/env.rb +2 -2
- data/bundler/lib/bundler/environment_preserver.rb +3 -2
- data/bundler/lib/bundler/errors.rb +1 -11
- data/bundler/lib/bundler/feature_flag.rb +0 -2
- data/bundler/lib/bundler/fetcher/compact_index.rb +11 -13
- data/bundler/lib/bundler/fetcher/dependency.rb +2 -6
- data/bundler/lib/bundler/fetcher/downloader.rb +4 -5
- data/bundler/lib/bundler/fetcher/index.rb +1 -2
- data/bundler/lib/bundler/fetcher.rb +21 -15
- data/bundler/lib/bundler/force_platform.rb +18 -0
- data/bundler/lib/bundler/friendly_errors.rb +1 -4
- data/bundler/lib/bundler/gem_helper.rb +3 -4
- data/bundler/lib/bundler/gem_helpers.rb +7 -2
- data/bundler/lib/bundler/gem_version_promoter.rb +53 -98
- data/bundler/lib/bundler/graph.rb +3 -3
- data/bundler/lib/bundler/index.rb +13 -47
- data/bundler/lib/bundler/injector.rb +5 -4
- data/bundler/lib/bundler/inline.rb +9 -11
- data/bundler/lib/bundler/installer/parallel_installer.rb +4 -34
- data/bundler/lib/bundler/installer/standalone.rb +13 -9
- data/bundler/lib/bundler/installer.rb +17 -29
- data/bundler/lib/bundler/lazy_specification.rb +54 -53
- data/bundler/lib/bundler/lockfile_generator.rb +3 -3
- data/bundler/lib/bundler/lockfile_parser.rb +17 -16
- data/bundler/lib/bundler/man/bundle-add.1 +6 -2
- data/bundler/lib/bundler/man/bundle-add.1.ronn +4 -1
- data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
- data/bundler/lib/bundler/man/bundle-cache.1 +9 -3
- data/bundler/lib/bundler/man/bundle-cache.1.ronn +9 -2
- data/bundler/lib/bundler/man/bundle-check.1 +1 -1
- data/bundler/lib/bundler/man/bundle-clean.1 +2 -2
- data/bundler/lib/bundler/man/bundle-clean.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-config.1 +26 -10
- data/bundler/lib/bundler/man/bundle-config.1.ronn +17 -10
- data/bundler/lib/bundler/man/bundle-console.1 +53 -0
- data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
- data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
- data/bundler/lib/bundler/man/bundle-exec.1 +6 -6
- data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -6
- data/bundler/lib/bundler/man/bundle-gem.1 +27 -37
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +5 -5
- data/bundler/lib/bundler/man/bundle-help.1 +13 -0
- data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
- data/bundler/lib/bundler/man/bundle-info.1 +3 -3
- data/bundler/lib/bundler/man/bundle-info.1.ronn +3 -3
- data/bundler/lib/bundler/man/bundle-init.1 +5 -1
- data/bundler/lib/bundler/man/bundle-init.1.ronn +2 -0
- data/bundler/lib/bundler/man/bundle-inject.1 +5 -2
- data/bundler/lib/bundler/man/bundle-inject.1.ronn +3 -1
- data/bundler/lib/bundler/man/bundle-install.1 +5 -30
- data/bundler/lib/bundler/man/bundle-install.1.ronn +6 -29
- data/bundler/lib/bundler/man/bundle-list.1 +1 -1
- data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
- data/bundler/lib/bundler/man/bundle-open.1 +22 -2
- data/bundler/lib/bundler/man/bundle-open.1.ronn +9 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +13 -9
- data/bundler/lib/bundler/man/bundle-outdated.1.ronn +12 -9
- data/bundler/lib/bundler/man/bundle-platform.1 +16 -6
- data/bundler/lib/bundler/man/bundle-platform.1.ronn +14 -7
- data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
- data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
- data/bundler/lib/bundler/man/bundle-show.1 +1 -1
- data/bundler/lib/bundler/man/bundle-update.1 +1 -1
- data/bundler/lib/bundler/man/bundle-version.1 +35 -0
- data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
- data/bundler/lib/bundler/man/bundle-viz.1 +4 -1
- data/bundler/lib/bundler/man/bundle-viz.1.ronn +2 -0
- data/bundler/lib/bundler/man/bundle.1 +15 -10
- data/bundler/lib/bundler/man/bundle.1.ronn +12 -7
- data/bundler/lib/bundler/man/gemfile.5 +55 -55
- data/bundler/lib/bundler/man/gemfile.5.ronn +57 -53
- data/bundler/lib/bundler/man/index.txt +4 -0
- data/bundler/lib/bundler/match_metadata.rb +13 -0
- data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
- data/bundler/lib/bundler/mirror.rb +5 -7
- data/bundler/lib/bundler/plugin/index.rb +5 -5
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -4
- data/bundler/lib/bundler/plugin/installer.rb +5 -2
- data/bundler/lib/bundler/plugin.rb +3 -1
- data/bundler/lib/bundler/remote_specification.rb +7 -12
- data/bundler/lib/bundler/resolver/base.rb +107 -0
- data/bundler/lib/bundler/resolver/candidate.rb +94 -0
- data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
- data/bundler/lib/bundler/resolver/package.rb +72 -0
- data/bundler/lib/bundler/resolver/root.rb +25 -0
- data/bundler/lib/bundler/resolver/spec_group.rb +42 -71
- data/bundler/lib/bundler/resolver.rb +335 -328
- data/bundler/lib/bundler/ruby_dsl.rb +7 -1
- data/bundler/lib/bundler/ruby_version.rb +8 -8
- data/bundler/lib/bundler/rubygems_ext.rb +100 -9
- data/bundler/lib/bundler/rubygems_gem_installer.rb +23 -14
- data/bundler/lib/bundler/rubygems_integration.rb +11 -15
- data/bundler/lib/bundler/runtime.rb +2 -6
- data/bundler/lib/bundler/safe_marshal.rb +31 -0
- data/bundler/lib/bundler/settings.rb +5 -11
- data/bundler/lib/bundler/setup.rb +4 -1
- data/bundler/lib/bundler/shared_helpers.rb +3 -3
- data/bundler/lib/bundler/source/git/git_proxy.rb +237 -74
- data/bundler/lib/bundler/source/git.rb +55 -30
- data/bundler/lib/bundler/source/metadata.rb +1 -2
- data/bundler/lib/bundler/source/path/installer.rb +1 -22
- data/bundler/lib/bundler/source/path.rb +6 -6
- data/bundler/lib/bundler/source/rubygems.rb +26 -81
- data/bundler/lib/bundler/source.rb +1 -1
- data/bundler/lib/bundler/source_list.rb +8 -2
- data/bundler/lib/bundler/spec_set.rb +60 -37
- data/bundler/lib/bundler/templates/Executable +1 -1
- data/bundler/lib/bundler/templates/Executable.bundler +5 -10
- data/bundler/lib/bundler/templates/Executable.standalone +2 -0
- data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/README.md.tt +6 -4
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +12 -1
- data/bundler/lib/bundler/templates/newgem/bin/console.tt +0 -4
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt +10 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +1 -1
- data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +10 -0
- data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +13 -4
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +9 -2
- data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
- data/bundler/lib/bundler/ui/shell.rb +35 -12
- data/bundler/lib/bundler/ui/silent.rb +21 -5
- data/bundler/lib/bundler/uri_normalizer.rb +23 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1351 -409
- data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
- data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +248 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +64 -16
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +27 -7
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +15 -9
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +11 -6
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +1 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -2
- data/bundler/lib/bundler/vendored_persistent.rb +1 -33
- data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_pub_grub.rb} +1 -1
- data/bundler/lib/bundler/version.rb +5 -1
- data/bundler/lib/bundler/worker.rb +5 -7
- data/bundler/lib/bundler.rb +25 -77
- data/{bin → exe}/gem +4 -5
- data/{bin → exe}/update_rubygems +12 -10
- data/lib/rubygems/available_set.rb +4 -3
- data/lib/rubygems/basic_specification.rb +5 -4
- data/lib/rubygems/bundler_version_finder.rb +2 -2
- data/lib/rubygems/command.rb +41 -32
- data/lib/rubygems/command_manager.rb +30 -15
- data/lib/rubygems/commands/build_command.rb +12 -8
- data/lib/rubygems/commands/cert_command.rb +34 -33
- data/lib/rubygems/commands/check_command.rb +21 -20
- data/lib/rubygems/commands/cleanup_command.rb +18 -17
- data/lib/rubygems/commands/contents_command.rb +14 -13
- data/lib/rubygems/commands/dependency_command.rb +17 -16
- data/lib/rubygems/commands/environment_command.rb +6 -5
- data/lib/rubygems/commands/exec_command.rb +249 -0
- data/lib/rubygems/commands/fetch_command.rb +10 -9
- data/lib/rubygems/commands/generate_index_command.rb +18 -17
- data/lib/rubygems/commands/help_command.rb +7 -6
- data/lib/rubygems/commands/info_command.rb +3 -3
- data/lib/rubygems/commands/install_command.rb +28 -23
- data/lib/rubygems/commands/list_command.rb +4 -3
- data/lib/rubygems/commands/lock_command.rb +5 -4
- data/lib/rubygems/commands/mirror_command.rb +4 -3
- data/lib/rubygems/commands/open_command.rb +10 -9
- data/lib/rubygems/commands/outdated_command.rb +6 -5
- data/lib/rubygems/commands/owner_command.rb +17 -14
- data/lib/rubygems/commands/pristine_command.rb +46 -36
- data/lib/rubygems/commands/push_command.rb +9 -8
- data/lib/rubygems/commands/query_command.rb +9 -8
- data/lib/rubygems/commands/rdoc_command.rb +21 -19
- data/lib/rubygems/commands/search_command.rb +4 -3
- data/lib/rubygems/commands/server_command.rb +4 -3
- data/lib/rubygems/commands/setup_command.rb +97 -106
- data/lib/rubygems/commands/signin_command.rb +10 -9
- data/lib/rubygems/commands/signout_command.rb +8 -7
- data/lib/rubygems/commands/sources_command.rb +22 -21
- data/lib/rubygems/commands/specification_command.rb +14 -13
- data/lib/rubygems/commands/stale_command.rb +3 -2
- data/lib/rubygems/commands/uninstall_command.rb +44 -40
- data/lib/rubygems/commands/unpack_command.rb +14 -13
- data/lib/rubygems/commands/update_command.rb +42 -63
- data/lib/rubygems/commands/which_command.rb +8 -7
- data/lib/rubygems/commands/yank_command.rb +12 -11
- data/lib/rubygems/config_file.rb +55 -21
- data/lib/rubygems/core_ext/kernel_gem.rb +1 -6
- data/lib/rubygems/core_ext/kernel_require.rb +109 -115
- data/lib/rubygems/core_ext/kernel_warn.rb +33 -37
- data/lib/rubygems/core_ext/tcpsocket_init.rb +3 -1
- data/lib/rubygems/defaults.rb +33 -18
- data/lib/rubygems/dependency.rb +15 -11
- data/lib/rubygems/dependency_installer.rb +38 -37
- data/lib/rubygems/dependency_list.rb +7 -6
- data/lib/rubygems/deprecate.rb +3 -2
- data/lib/rubygems/doctor.rb +19 -18
- data/lib/rubygems/errors.rb +3 -2
- data/lib/rubygems/exceptions.rb +16 -8
- data/lib/rubygems/ext/build_error.rb +2 -1
- data/lib/rubygems/ext/builder.rb +37 -21
- data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +9 -5
- data/lib/rubygems/ext/cargo_builder.rb +150 -111
- data/lib/rubygems/ext/cmake_builder.rb +2 -2
- data/lib/rubygems/ext/configure_builder.rb +2 -1
- data/lib/rubygems/ext/ext_conf_builder.rb +11 -9
- data/lib/rubygems/ext/rake_builder.rb +7 -5
- data/lib/rubygems/ext.rb +8 -7
- data/lib/rubygems/gem_runner.rb +6 -5
- data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +163 -0
- data/lib/rubygems/gemcutter_utilities/webauthn_listener.rb +105 -0
- data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +78 -0
- data/lib/rubygems/gemcutter_utilities.rb +90 -34
- data/lib/rubygems/indexer.rb +29 -28
- data/lib/rubygems/install_default_message.rb +3 -2
- data/lib/rubygems/install_message.rb +3 -2
- data/lib/rubygems/install_update_options.rb +56 -55
- data/lib/rubygems/installer.rb +54 -46
- data/lib/rubygems/installer_uninstaller_utils.rb +2 -2
- data/lib/rubygems/local_remote_options.rb +19 -20
- data/lib/rubygems/mock_gem_ui.rb +3 -2
- data/lib/rubygems/name_tuple.rb +5 -4
- data/lib/rubygems/optparse/lib/optparse.rb +20 -15
- data/lib/rubygems/optparse.rb +1 -1
- data/lib/rubygems/package/digest_io.rb +1 -0
- data/lib/rubygems/package/file_source.rb +3 -2
- data/lib/rubygems/package/io_source.rb +1 -0
- data/lib/rubygems/package/old.rb +9 -8
- data/lib/rubygems/package/source.rb +1 -0
- data/lib/rubygems/package/tar_header.rb +63 -62
- data/lib/rubygems/package/tar_reader/entry.rb +91 -9
- data/lib/rubygems/package/tar_reader.rb +2 -29
- data/lib/rubygems/package/tar_writer.rb +8 -7
- data/lib/rubygems/package.rb +64 -48
- data/lib/rubygems/package_task.rb +5 -4
- data/lib/rubygems/path_support.rb +1 -0
- data/lib/rubygems/platform.rb +79 -53
- data/lib/rubygems/psych_tree.rb +2 -1
- data/lib/rubygems/query_utils.rb +35 -35
- data/lib/rubygems/rdoc.rb +3 -2
- data/lib/rubygems/remote_fetcher.rb +23 -22
- data/lib/rubygems/request/connection_pools.rb +4 -4
- data/lib/rubygems/request/http_pool.rb +2 -1
- data/lib/rubygems/request/https_pool.rb +1 -0
- data/lib/rubygems/request.rb +23 -22
- data/lib/rubygems/request_set/gem_dependency_api.rb +123 -123
- data/lib/rubygems/request_set/lockfile/parser.rb +28 -27
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -3
- data/lib/rubygems/request_set/lockfile.rb +6 -5
- data/lib/rubygems/request_set.rb +20 -19
- data/lib/rubygems/requirement.rb +15 -14
- data/lib/rubygems/resolver/activation_request.rb +4 -3
- data/lib/rubygems/resolver/api_set.rb +5 -4
- data/lib/rubygems/resolver/api_specification.rb +7 -6
- data/lib/rubygems/resolver/best_set.rb +6 -5
- data/lib/rubygems/resolver/composed_set.rb +1 -0
- data/lib/rubygems/resolver/conflict.rb +11 -10
- data/lib/rubygems/resolver/current_set.rb +1 -0
- data/lib/rubygems/resolver/dependency_request.rb +3 -2
- data/lib/rubygems/resolver/git_set.rb +3 -2
- data/lib/rubygems/resolver/git_specification.rb +7 -6
- data/lib/rubygems/resolver/index_set.rb +4 -3
- data/lib/rubygems/resolver/index_specification.rb +7 -5
- data/lib/rubygems/resolver/installed_specification.rb +5 -4
- data/lib/rubygems/resolver/installer_set.rb +15 -17
- data/lib/rubygems/resolver/local_specification.rb +3 -2
- data/lib/rubygems/resolver/lock_set.rb +5 -4
- data/lib/rubygems/resolver/lock_specification.rb +5 -4
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +1 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/lib/rubygems/resolver/molinillo.rb +2 -1
- data/lib/rubygems/resolver/requirement_list.rb +1 -0
- data/lib/rubygems/resolver/set.rb +1 -0
- data/lib/rubygems/resolver/source_set.rb +2 -0
- data/lib/rubygems/resolver/spec_specification.rb +1 -0
- data/lib/rubygems/resolver/specification.rb +2 -1
- data/lib/rubygems/resolver/stats.rb +2 -1
- data/lib/rubygems/resolver/vendor_set.rb +2 -1
- data/lib/rubygems/resolver/vendor_specification.rb +4 -3
- data/lib/rubygems/resolver.rb +41 -40
- data/lib/rubygems/s3_uri_signer.rb +10 -8
- data/lib/rubygems/safe_yaml.rb +4 -2
- data/lib/rubygems/security/policies.rb +48 -47
- data/lib/rubygems/security/policy.rb +19 -18
- data/lib/rubygems/security/signer.rb +6 -5
- data/lib/rubygems/security/trust_dir.rb +5 -4
- data/lib/rubygems/security.rb +30 -42
- data/lib/rubygems/security_option.rb +6 -5
- data/lib/rubygems/shellwords.rb +3 -0
- data/lib/rubygems/source/git.rb +22 -22
- data/lib/rubygems/source/installed.rb +2 -1
- data/lib/rubygems/source/local.rb +3 -2
- data/lib/rubygems/source/lock.rb +1 -0
- data/lib/rubygems/source/specific_file.rb +2 -1
- data/lib/rubygems/source/vendor.rb +1 -0
- data/lib/rubygems/source.rb +16 -16
- data/lib/rubygems/spec_fetcher.rb +10 -9
- data/lib/rubygems/specification.rb +121 -114
- data/lib/rubygems/specification_policy.rb +36 -15
- data/lib/rubygems/stub_specification.rb +11 -9
- data/lib/rubygems/text.rb +2 -2
- data/lib/rubygems/tsort/lib/tsort.rb +308 -310
- data/lib/rubygems/tsort.rb +1 -1
- data/lib/rubygems/uninstaller.rb +19 -18
- data/lib/rubygems/update_suggestion.rb +69 -0
- data/lib/rubygems/uri.rb +4 -4
- data/lib/rubygems/uri_formatter.rb +1 -1
- data/lib/rubygems/user_interaction.rb +37 -21
- data/lib/rubygems/util/licenses.rb +4 -3
- data/lib/rubygems/util/list.rb +1 -0
- data/lib/rubygems/util.rb +12 -15
- data/lib/rubygems/validator.rb +7 -6
- data/lib/rubygems/version.rb +17 -11
- data/lib/rubygems/version_option.rb +4 -3
- data/lib/rubygems.rb +89 -68
- data/rubygems-update.gemspec +10 -8
- data/setup.rb +10 -9
- data/test/rubygems/alternate_cert.pem +14 -14
- data/test/rubygems/alternate_cert_32.pem +15 -15
- data/test/rubygems/alternate_key.pem +25 -25
- data/test/rubygems/bad_rake.rb +1 -0
- data/test/rubygems/bundler_test_gem.rb +421 -0
- data/test/rubygems/child_cert.pem +15 -16
- data/test/rubygems/child_cert_32.pem +15 -16
- data/test/rubygems/child_key.pem +25 -25
- data/test/rubygems/encrypted_private_key.pem +26 -26
- data/test/rubygems/expired_cert.pem +15 -15
- data/test/rubygems/fake_certlib/openssl.rb +1 -0
- data/test/rubygems/future_cert.pem +15 -15
- data/test/rubygems/future_cert_32.pem +15 -15
- data/test/rubygems/good_rake.rb +1 -0
- data/test/rubygems/grandchild_cert.pem +15 -16
- data/test/rubygems/grandchild_cert_32.pem +15 -16
- data/test/rubygems/grandchild_key.pem +25 -25
- data/test/rubygems/helper.rb +172 -151
- data/test/rubygems/installer_test_case.rb +14 -13
- data/test/rubygems/invalid_issuer_cert.pem +16 -16
- data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
- data/test/rubygems/invalid_key.pem +25 -25
- data/test/rubygems/invalid_signer_cert.pem +15 -15
- data/test/rubygems/invalid_signer_cert_32.pem +15 -15
- data/test/rubygems/invalidchild_cert.pem +15 -16
- data/test/rubygems/invalidchild_cert_32.pem +15 -16
- data/test/rubygems/invalidchild_key.pem +25 -25
- data/test/rubygems/multifactor_auth_utilities.rb +111 -0
- data/test/rubygems/package/tar_test_case.rb +53 -17
- data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
- data/test/rubygems/plugin/exception/rubygems_plugin.rb +2 -1
- data/test/rubygems/plugin/load/rubygems_plugin.rb +1 -0
- data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +2 -1
- data/test/rubygems/private_key.pem +25 -25
- data/test/rubygems/public_cert.pem +16 -16
- data/test/rubygems/public_cert_32.pem +15 -15
- data/test/rubygems/public_key.pem +7 -7
- data/test/rubygems/rubygems/commands/crash_command.rb +1 -0
- data/test/rubygems/rubygems_plugin.rb +3 -2
- data/test/rubygems/simple_gem.rb +2 -1
- data/test/rubygems/specifications/bar-0.0.2.gemspec +2 -0
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +6 -4
- data/test/rubygems/test_bundled_ca.rb +13 -12
- data/test/rubygems/test_config.rb +5 -4
- data/test/rubygems/test_deprecate.rb +5 -4
- data/test/rubygems/test_exit.rb +9 -3
- data/test/rubygems/test_gem.rb +339 -677
- data/test/rubygems/test_gem_available_set.rb +22 -21
- data/test/rubygems/test_gem_bundler_version_finder.rb +6 -4
- data/test/rubygems/test_gem_command.rb +45 -44
- data/test/rubygems/test_gem_command_manager.rb +96 -30
- data/test/rubygems/test_gem_commands_build_command.rb +74 -63
- data/test/rubygems/test_gem_commands_cert_command.rb +98 -99
- data/test/rubygems/test_gem_commands_check_command.rb +5 -4
- data/test/rubygems/test_gem_commands_cleanup_command.rb +41 -40
- data/test/rubygems/test_gem_commands_contents_command.rb +28 -27
- data/test/rubygems/test_gem_commands_dependency_command.rb +37 -36
- data/test/rubygems/test_gem_commands_environment_command.rb +17 -16
- data/test/rubygems/test_gem_commands_exec_command.rb +853 -0
- data/test/rubygems/test_gem_commands_fetch_command.rb +38 -37
- data/test/rubygems/test_gem_commands_generate_index_command.rb +8 -7
- data/test/rubygems/test_gem_commands_help_command.rb +14 -13
- data/test/rubygems/test_gem_commands_info_command.rb +29 -2
- data/test/rubygems/test_gem_commands_install_command.rb +152 -132
- data/test/rubygems/test_gem_commands_list_command.rb +5 -4
- data/test/rubygems/test_gem_commands_lock_command.rb +11 -10
- data/test/rubygems/test_gem_commands_mirror.rb +3 -2
- data/test/rubygems/test_gem_commands_open_command.rb +5 -4
- data/test/rubygems/test_gem_commands_outdated_command.rb +10 -9
- data/test/rubygems/test_gem_commands_owner_command.rb +227 -50
- data/test/rubygems/test_gem_commands_pristine_command.rb +142 -93
- data/test/rubygems/test_gem_commands_push_command.rb +189 -64
- data/test/rubygems/test_gem_commands_query_command.rb +74 -73
- data/test/rubygems/test_gem_commands_search_command.rb +3 -2
- data/test/rubygems/test_gem_commands_server_command.rb +3 -2
- data/test/rubygems/test_gem_commands_setup_command.rb +123 -96
- data/test/rubygems/test_gem_commands_signin_command.rb +71 -31
- data/test/rubygems/test_gem_commands_signout_command.rb +3 -3
- data/test/rubygems/test_gem_commands_sources_command.rb +29 -29
- data/test/rubygems/test_gem_commands_specification_command.rb +33 -32
- data/test/rubygems/test_gem_commands_stale_command.rb +5 -4
- data/test/rubygems/test_gem_commands_uninstall_command.rb +99 -81
- data/test/rubygems/test_gem_commands_unpack_command.rb +32 -31
- data/test/rubygems/test_gem_commands_update_command.rb +96 -95
- data/test/rubygems/test_gem_commands_which_command.rb +7 -6
- data/test/rubygems/test_gem_commands_yank_command.rb +162 -43
- data/test/rubygems/test_gem_config_file.rb +94 -81
- data/test/rubygems/test_gem_dependency.rb +76 -73
- data/test/rubygems/test_gem_dependency_installer.rb +200 -165
- data/test/rubygems/test_gem_dependency_list.rb +48 -47
- data/test/rubygems/test_gem_dependency_resolution_error.rb +5 -4
- data/test/rubygems/test_gem_doctor.rb +27 -26
- data/test/rubygems/test_gem_ext_builder.rb +60 -61
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +4 -4
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{Cargo.lock → ext/custom_name_lib/Cargo.lock} +23 -33
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{Cargo.toml → ext/custom_name_lib/Cargo.toml} +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{src → ext/custom_name_lib/src}/lib.rs +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +3 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +37 -33
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +2 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +12 -0
- data/test/rubygems/test_gem_ext_cargo_builder.rb +48 -59
- data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +20 -19
- data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +21 -36
- data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -15
- data/test/rubygems/test_gem_ext_configure_builder.rb +14 -13
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +51 -52
- data/test/rubygems/test_gem_ext_rake_builder.rb +16 -15
- data/test/rubygems/test_gem_gem_runner.rb +15 -9
- data/test/rubygems/test_gem_gemcutter_utilities.rb +170 -84
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +5 -4
- data/test/rubygems/test_gem_indexer.rb +87 -67
- data/test/rubygems/test_gem_install_update_options.rb +17 -16
- data/test/rubygems/test_gem_installer.rb +422 -304
- data/test/rubygems/test_gem_local_remote_options.rb +11 -10
- data/test/rubygems/test_gem_name_tuple.rb +5 -4
- data/test/rubygems/test_gem_package.rb +243 -231
- data/test/rubygems/test_gem_package_old.rb +14 -13
- data/test/rubygems/test_gem_package_tar_header.rb +48 -47
- data/test/rubygems/test_gem_package_tar_reader.rb +56 -8
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +162 -16
- data/test/rubygems/test_gem_package_tar_writer.rb +77 -76
- data/test/rubygems/test_gem_package_task.rb +19 -18
- data/test/rubygems/test_gem_path_support.rb +15 -14
- data/test/rubygems/test_gem_platform.rb +333 -227
- data/test/rubygems/test_gem_rdoc.rb +15 -14
- data/test/rubygems/test_gem_remote_fetcher.rb +155 -154
- data/test/rubygems/test_gem_request.rb +64 -58
- data/test/rubygems/test_gem_request_connection_pools.rb +30 -29
- data/test/rubygems/test_gem_request_set.rb +101 -100
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +210 -211
- data/test/rubygems/test_gem_request_set_lockfile.rb +87 -86
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +58 -57
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +63 -62
- data/test/rubygems/test_gem_requirement.rb +48 -41
- data/test/rubygems/test_gem_resolver.rb +167 -99
- data/test/rubygems/test_gem_resolver_activation_request.rb +7 -6
- data/test/rubygems/test_gem_resolver_api_set.rb +34 -33
- data/test/rubygems/test_gem_resolver_api_specification.rb +48 -47
- data/test/rubygems/test_gem_resolver_best_set.rb +23 -22
- data/test/rubygems/test_gem_resolver_composed_set.rb +2 -1
- data/test/rubygems/test_gem_resolver_conflict.rb +13 -12
- data/test/rubygems/test_gem_resolver_dependency_request.rb +16 -15
- data/test/rubygems/test_gem_resolver_git_set.rb +22 -21
- data/test/rubygems/test_gem_resolver_git_specification.rb +22 -21
- data/test/rubygems/test_gem_resolver_index_set.rb +13 -12
- data/test/rubygems/test_gem_resolver_index_specification.rb +17 -16
- data/test/rubygems/test_gem_resolver_installed_specification.rb +6 -5
- data/test/rubygems/test_gem_resolver_installer_set.rb +79 -34
- data/test/rubygems/test_gem_resolver_local_specification.rb +8 -7
- data/test/rubygems/test_gem_resolver_lock_set.rb +13 -12
- data/test/rubygems/test_gem_resolver_lock_specification.rb +18 -17
- data/test/rubygems/test_gem_resolver_requirement_list.rb +2 -1
- data/test/rubygems/test_gem_resolver_specification.rb +9 -8
- data/test/rubygems/test_gem_resolver_vendor_set.rb +7 -6
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +11 -10
- data/test/rubygems/test_gem_security.rb +69 -68
- data/test/rubygems/test_gem_security_policy.rb +72 -72
- data/test/rubygems/test_gem_security_signer.rb +35 -34
- data/test/rubygems/test_gem_security_trust_dir.rb +7 -6
- data/test/rubygems/test_gem_silent_ui.rb +39 -32
- data/test/rubygems/test_gem_source.rb +45 -44
- data/test/rubygems/test_gem_source_fetch_problem.rb +10 -9
- data/test/rubygems/test_gem_source_git.rb +69 -62
- data/test/rubygems/test_gem_source_installed.rb +17 -16
- data/test/rubygems/test_gem_source_list.rb +6 -5
- data/test/rubygems/test_gem_source_local.rb +15 -14
- data/test/rubygems/test_gem_source_lock.rb +32 -31
- data/test/rubygems/test_gem_source_specific_file.rb +18 -17
- data/test/rubygems/test_gem_source_subpath_problem.rb +8 -7
- data/test/rubygems/test_gem_source_vendor.rb +14 -13
- data/test/rubygems/test_gem_spec_fetcher.rb +73 -72
- data/test/rubygems/test_gem_specification.rb +533 -469
- data/test/rubygems/test_gem_stream_ui.rb +53 -22
- data/test/rubygems/test_gem_stub_specification.rb +33 -32
- data/test/rubygems/test_gem_text.rb +2 -1
- data/test/rubygems/test_gem_uninstaller.rb +118 -117
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +4 -3
- data/test/rubygems/test_gem_update_suggestion.rb +209 -0
- data/test/rubygems/test_gem_uri.rb +6 -4
- data/test/rubygems/test_gem_uri_formatter.rb +15 -14
- data/test/rubygems/test_gem_util.rb +24 -23
- data/test/rubygems/test_gem_validator.rb +8 -8
- data/test/rubygems/test_gem_version.rb +24 -16
- data/test/rubygems/test_gem_version_option.rb +16 -15
- data/test/rubygems/test_kernel.rb +43 -48
- data/test/rubygems/test_project_sanity.rb +32 -3
- data/test/rubygems/test_remote_fetch_error.rb +8 -7
- data/test/rubygems/test_require.rb +118 -103
- data/test/rubygems/test_rubygems.rb +10 -8
- data/test/rubygems/test_webauthn_listener.rb +143 -0
- data/test/rubygems/test_webauthn_listener_response.rb +93 -0
- data/test/rubygems/test_webauthn_poller.rb +124 -0
- data/test/rubygems/utilities.rb +98 -34
- data/test/rubygems/wrong_key_cert.pem +15 -15
- data/test/rubygems/wrong_key_cert_32.pem +15 -15
- data/test/test_changelog_generator.rb +1 -1
- metadata +99 -46
- data/bundler/lib/bundler/dep_proxy.rb +0 -55
- data/bundler/lib/bundler/templates/gems.rb +0 -5
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +0 -5
- data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
- data/bundler/lib/bundler/vendor/molinillo/LICENSE +0 -9
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -149
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
- data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
- data/bundler/lib/bundler/vendored_molinillo.rb +0 -4
- data/bundler/lib/bundler/version_ranges.rb +0 -122
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/build.rb +0 -21
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/build.rb +0 -21
data/test/rubygems/test_gem.rb
CHANGED
@@ -1,16 +1,17 @@
|
|
1
1
|
# coding: US-ASCII
|
2
|
-
|
3
|
-
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
2
|
+
|
3
|
+
require_relative "helper"
|
4
|
+
require "rubygems"
|
5
|
+
require "rubygems/command"
|
6
|
+
require "rubygems/installer"
|
7
|
+
require "pathname"
|
8
|
+
require "tmpdir"
|
9
|
+
require "rbconfig"
|
9
10
|
|
10
11
|
class TestGem < Gem::TestCase
|
11
12
|
PLUGINS_LOADED = [] # rubocop:disable Style/MutableConstant
|
12
13
|
|
13
|
-
PROJECT_DIR = File.expand_path(
|
14
|
+
PROJECT_DIR = File.expand_path("../..", __dir__).tap(&Gem::UNTAINT)
|
14
15
|
|
15
16
|
def setup
|
16
17
|
super
|
@@ -89,32 +90,32 @@ class TestGem < Gem::TestCase
|
|
89
90
|
|
90
91
|
def test_self_install
|
91
92
|
spec_fetcher do |f|
|
92
|
-
f.gem
|
93
|
-
f.spec
|
93
|
+
f.gem "a", 1
|
94
|
+
f.spec "a", 2
|
94
95
|
end
|
95
96
|
|
96
97
|
gemhome2 = "#{@gemhome}2"
|
97
98
|
|
98
|
-
installed = Gem.install
|
99
|
+
installed = Gem.install "a", "= 1", :install_dir => gemhome2
|
99
100
|
|
100
101
|
assert_equal %w[a-1], installed.map {|spec| spec.full_name }
|
101
102
|
|
102
|
-
assert_path_exist File.join(gemhome2,
|
103
|
+
assert_path_exist File.join(gemhome2, "gems", "a-1")
|
103
104
|
end
|
104
105
|
|
105
106
|
def test_self_install_in_rescue
|
106
107
|
spec_fetcher do |f|
|
107
|
-
f.gem
|
108
|
-
f.spec
|
108
|
+
f.gem "a", 1
|
109
|
+
f.spec "a", 2
|
109
110
|
end
|
110
111
|
|
111
112
|
gemhome2 = "#{@gemhome}2"
|
112
113
|
|
113
114
|
installed =
|
114
115
|
begin
|
115
|
-
raise
|
116
|
+
raise "Error"
|
116
117
|
rescue StandardError
|
117
|
-
Gem.install
|
118
|
+
Gem.install "a", "= 1", :install_dir => gemhome2
|
118
119
|
end
|
119
120
|
assert_equal %w[a-1], installed.map {|spec| spec.full_name }
|
120
121
|
end
|
@@ -143,7 +144,7 @@ class TestGem < Gem::TestCase
|
|
143
144
|
|
144
145
|
def test_self_install_permissions_with_format_executable_and_non_standard_ruby_install_name
|
145
146
|
Gem::Installer.exec_format = nil
|
146
|
-
ruby_install_name
|
147
|
+
ruby_install_name "ruby27" do
|
147
148
|
assert_self_install_permissions(format_executable: true)
|
148
149
|
end
|
149
150
|
ensure
|
@@ -160,35 +161,35 @@ class TestGem < Gem::TestCase
|
|
160
161
|
:format_executable => format_executable,
|
161
162
|
}
|
162
163
|
Dir.chdir @tempdir do
|
163
|
-
Dir.mkdir
|
164
|
-
Dir.mkdir
|
164
|
+
Dir.mkdir "bin"
|
165
|
+
Dir.mkdir "data"
|
165
166
|
|
166
|
-
File.write
|
167
|
-
File.chmod 0755,
|
167
|
+
File.write "bin/foo", "#!/usr/bin/env ruby\n"
|
168
|
+
File.chmod 0755, "bin/foo"
|
168
169
|
|
169
|
-
File.write
|
170
|
+
File.write "data/foo.txt", "blah\n"
|
170
171
|
|
171
172
|
spec_fetcher do |f|
|
172
|
-
f.gem
|
173
|
-
s.executables = [
|
173
|
+
f.gem "foo", 1 do |s|
|
174
|
+
s.executables = ["foo"]
|
174
175
|
s.files = %w[bin/foo data/foo.txt]
|
175
176
|
end
|
176
177
|
end
|
177
|
-
Gem.install
|
178
|
+
Gem.install "foo", Gem::Requirement.default, options
|
178
179
|
end
|
179
180
|
|
180
181
|
prog_mode = (options[:prog_mode] & mask).to_s(8)
|
181
182
|
dir_mode = (options[:dir_mode] & mask).to_s(8)
|
182
183
|
data_mode = (options[:data_mode] & mask).to_s(8)
|
183
|
-
prog_name =
|
184
|
-
prog_name = RbConfig::CONFIG[
|
184
|
+
prog_name = "foo"
|
185
|
+
prog_name = RbConfig::CONFIG["ruby_install_name"].sub("ruby", "foo") if options[:format_executable]
|
185
186
|
expected = {
|
186
187
|
"bin/#{prog_name}" => prog_mode,
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
188
|
+
"gems/foo-1" => dir_mode,
|
189
|
+
"gems/foo-1/bin" => dir_mode,
|
190
|
+
"gems/foo-1/data" => dir_mode,
|
191
|
+
"gems/foo-1/bin/foo" => prog_mode,
|
192
|
+
"gems/foo-1/data/foo.txt" => data_mode,
|
192
193
|
}
|
193
194
|
# add Windows script
|
194
195
|
expected["bin/#{prog_name}.bat"] = mask.to_s(8) if win_platform?
|
@@ -200,7 +201,7 @@ class TestGem < Gem::TestCase
|
|
200
201
|
end
|
201
202
|
assert_equal(expected, result)
|
202
203
|
ensure
|
203
|
-
File.chmod(0755, *Dir.glob(@gemhome +
|
204
|
+
File.chmod(0755, *Dir.glob(@gemhome + "/gems/**/").map {|path| path.tap(&Gem::UNTAINT) })
|
204
205
|
end
|
205
206
|
|
206
207
|
def test_require_missing
|
@@ -222,57 +223,57 @@ class TestGem < Gem::TestCase
|
|
222
223
|
end
|
223
224
|
|
224
225
|
def test_self_bin_path_active
|
225
|
-
a1 = util_spec
|
226
|
-
s.executables = [
|
226
|
+
a1 = util_spec "a", "1" do |s|
|
227
|
+
s.executables = ["exec"]
|
227
228
|
end
|
228
229
|
|
229
|
-
util_spec
|
230
|
-
s.executables = [
|
230
|
+
util_spec "a", "2" do |s|
|
231
|
+
s.executables = ["exec"]
|
231
232
|
end
|
232
233
|
|
233
234
|
a1.activate
|
234
235
|
|
235
|
-
assert_match
|
236
|
+
assert_match "a-1/bin/exec", Gem.bin_path("a", "exec", ">= 0")
|
236
237
|
end
|
237
238
|
|
238
239
|
def test_self_bin_path_picking_newest
|
239
|
-
a1 = util_spec
|
240
|
-
s.executables = [
|
240
|
+
a1 = util_spec "a", "1" do |s|
|
241
|
+
s.executables = ["exec"]
|
241
242
|
end
|
242
243
|
|
243
|
-
a2 = util_spec
|
244
|
-
s.executables = [
|
244
|
+
a2 = util_spec "a", "2" do |s|
|
245
|
+
s.executables = ["exec"]
|
245
246
|
end
|
246
247
|
|
247
248
|
install_specs a1, a2
|
248
249
|
|
249
|
-
assert_match
|
250
|
+
assert_match "a-2/bin/exec", Gem.bin_path("a", "exec", ">= 0")
|
250
251
|
end
|
251
252
|
|
252
253
|
def test_self_activate_bin_path_no_exec_name
|
253
254
|
e = assert_raise ArgumentError do
|
254
|
-
Gem.activate_bin_path
|
255
|
+
Gem.activate_bin_path "a"
|
255
256
|
end
|
256
257
|
|
257
|
-
assert_equal
|
258
|
+
assert_equal "you must supply exec_name", e.message
|
258
259
|
end
|
259
260
|
|
260
261
|
def test_activate_bin_path_resolves_eagerly
|
261
|
-
a1 = util_spec
|
262
|
-
s.executables = [
|
263
|
-
s.add_dependency
|
262
|
+
a1 = util_spec "a", "1" do |s|
|
263
|
+
s.executables = ["exec"]
|
264
|
+
s.add_dependency "b"
|
264
265
|
end
|
265
266
|
|
266
|
-
b1 = util_spec
|
267
|
-
s.add_dependency
|
267
|
+
b1 = util_spec "b", "1" do |s|
|
268
|
+
s.add_dependency "c", "2"
|
268
269
|
end
|
269
270
|
|
270
|
-
b2 = util_spec
|
271
|
-
s.add_dependency
|
271
|
+
b2 = util_spec "b", "2" do |s|
|
272
|
+
s.add_dependency "c", "1"
|
272
273
|
end
|
273
274
|
|
274
|
-
c1 = util_spec
|
275
|
-
c2 = util_spec
|
275
|
+
c1 = util_spec "c", "1"
|
276
|
+
c2 = util_spec "c", "2"
|
276
277
|
|
277
278
|
install_specs c1, c2, b1, b2, a1
|
278
279
|
|
@@ -280,27 +281,27 @@ class TestGem < Gem::TestCase
|
|
280
281
|
|
281
282
|
# If we didn't eagerly resolve, this would activate c-2 and then the
|
282
283
|
# finish_resolve would cause a conflict
|
283
|
-
gem
|
284
|
+
gem "c"
|
284
285
|
Gem.finish_resolve
|
285
286
|
|
286
287
|
assert_equal %w[a-1 b-2 c-1], loaded_spec_names
|
287
288
|
end
|
288
289
|
|
289
290
|
def test_activate_bin_path_does_not_error_if_a_gem_thats_not_finally_activated_has_orphaned_dependencies
|
290
|
-
a1 = util_spec
|
291
|
-
s.executables = [
|
292
|
-
s.add_dependency
|
291
|
+
a1 = util_spec "a", "1" do |s|
|
292
|
+
s.executables = ["exec"]
|
293
|
+
s.add_dependency "b"
|
293
294
|
end
|
294
295
|
|
295
|
-
b1 = util_spec
|
296
|
-
s.add_dependency
|
296
|
+
b1 = util_spec "b", "1" do |s|
|
297
|
+
s.add_dependency "c", "1"
|
297
298
|
end
|
298
299
|
|
299
|
-
b2 = util_spec
|
300
|
-
s.add_dependency
|
300
|
+
b2 = util_spec "b", "2" do |s|
|
301
|
+
s.add_dependency "c", "2"
|
301
302
|
end
|
302
303
|
|
303
|
-
c2 = util_spec
|
304
|
+
c2 = util_spec "c", "2"
|
304
305
|
|
305
306
|
install_specs c2, b1, b2, a1
|
306
307
|
|
@@ -312,20 +313,20 @@ class TestGem < Gem::TestCase
|
|
312
313
|
end
|
313
314
|
|
314
315
|
def test_activate_bin_path_raises_a_meaningful_error_if_a_gem_thats_finally_activated_has_orphaned_dependencies
|
315
|
-
a1 = util_spec
|
316
|
-
s.executables = [
|
317
|
-
s.add_dependency
|
316
|
+
a1 = util_spec "a", "1" do |s|
|
317
|
+
s.executables = ["exec"]
|
318
|
+
s.add_dependency "b"
|
318
319
|
end
|
319
320
|
|
320
|
-
b1 = util_spec
|
321
|
-
s.add_dependency
|
321
|
+
b1 = util_spec "b", "1" do |s|
|
322
|
+
s.add_dependency "c", "1"
|
322
323
|
end
|
323
324
|
|
324
|
-
b2 = util_spec
|
325
|
-
s.add_dependency
|
325
|
+
b2 = util_spec "b", "2" do |s|
|
326
|
+
s.add_dependency "c", "2"
|
326
327
|
end
|
327
328
|
|
328
|
-
c1 = util_spec
|
329
|
+
c1 = util_spec "c", "1"
|
329
330
|
|
330
331
|
install_specs c1, b1, b2, a1
|
331
332
|
|
@@ -339,8 +340,8 @@ class TestGem < Gem::TestCase
|
|
339
340
|
end
|
340
341
|
|
341
342
|
def test_activate_bin_path_in_debug_mode
|
342
|
-
a1 = util_spec
|
343
|
-
s.executables = [
|
343
|
+
a1 = util_spec "a", "1" do |s|
|
344
|
+
s.executables = ["exec"]
|
344
345
|
end
|
345
346
|
|
346
347
|
install_specs a1
|
@@ -355,12 +356,12 @@ class TestGem < Gem::TestCase
|
|
355
356
|
end
|
356
357
|
|
357
358
|
def test_activate_bin_path_selects_exact_bundler_version_if_present
|
358
|
-
bundler_latest = util_spec
|
359
|
-
s.executables = [
|
359
|
+
bundler_latest = util_spec "bundler", "2.0.1" do |s|
|
360
|
+
s.executables = ["bundle"]
|
360
361
|
end
|
361
362
|
|
362
|
-
bundler_previous = util_spec
|
363
|
-
s.executables = [
|
363
|
+
bundler_previous = util_spec "bundler", "2.0.0" do |s|
|
364
|
+
s.executables = ["bundle"]
|
364
365
|
end
|
365
366
|
|
366
367
|
install_specs bundler_latest, bundler_previous
|
@@ -389,12 +390,12 @@ class TestGem < Gem::TestCase
|
|
389
390
|
end
|
390
391
|
|
391
392
|
def test_activate_bin_path_respects_underscore_selection_if_given
|
392
|
-
bundler_latest = util_spec
|
393
|
-
s.executables = [
|
393
|
+
bundler_latest = util_spec "bundler", "2.0.1" do |s|
|
394
|
+
s.executables = ["bundle"]
|
394
395
|
end
|
395
396
|
|
396
|
-
bundler_previous = util_spec
|
397
|
-
s.executables = [
|
397
|
+
bundler_previous = util_spec "bundler", "1.17.3" do |s|
|
398
|
+
s.executables = ["bundle"]
|
398
399
|
end
|
399
400
|
|
400
401
|
install_specs bundler_latest, bundler_previous
|
@@ -450,57 +451,57 @@ class TestGem < Gem::TestCase
|
|
450
451
|
|
451
452
|
def test_self_bin_path_no_exec_name
|
452
453
|
e = assert_raise ArgumentError do
|
453
|
-
Gem.bin_path
|
454
|
+
Gem.bin_path "a"
|
454
455
|
end
|
455
456
|
|
456
|
-
assert_equal
|
457
|
+
assert_equal "you must supply exec_name", e.message
|
457
458
|
end
|
458
459
|
|
459
460
|
def test_self_bin_path_bin_name
|
460
461
|
install_specs util_exec_gem
|
461
|
-
assert_equal @abin_path, Gem.bin_path(
|
462
|
+
assert_equal @abin_path, Gem.bin_path("a", "abin")
|
462
463
|
end
|
463
464
|
|
464
465
|
def test_self_bin_path_bin_name_version
|
465
466
|
install_specs util_exec_gem
|
466
|
-
assert_equal @abin_path, Gem.bin_path(
|
467
|
+
assert_equal @abin_path, Gem.bin_path("a", "abin", "4")
|
467
468
|
end
|
468
469
|
|
469
470
|
def test_self_bin_path_nonexistent_binfile
|
470
|
-
util_spec
|
471
|
-
s.executables = [
|
471
|
+
util_spec "a", "2" do |s|
|
472
|
+
s.executables = ["exec"]
|
472
473
|
end
|
473
474
|
assert_raise(Gem::GemNotFoundException) do
|
474
|
-
Gem.bin_path(
|
475
|
+
Gem.bin_path("a", "other", "2")
|
475
476
|
end
|
476
477
|
end
|
477
478
|
|
478
479
|
def test_self_bin_path_no_bin_file
|
479
|
-
util_spec
|
480
|
+
util_spec "a", "1"
|
480
481
|
assert_raise(ArgumentError) do
|
481
|
-
Gem.bin_path(
|
482
|
+
Gem.bin_path("a", nil, "1")
|
482
483
|
end
|
483
484
|
end
|
484
485
|
|
485
486
|
def test_self_bin_path_not_found
|
486
487
|
assert_raise(Gem::GemNotFoundException) do
|
487
|
-
Gem.bin_path(
|
488
|
+
Gem.bin_path("non-existent", "blah")
|
488
489
|
end
|
489
490
|
end
|
490
491
|
|
491
492
|
def test_self_bin_path_bin_file_gone_in_latest
|
492
493
|
install_specs util_exec_gem
|
493
|
-
spec = util_spec
|
494
|
+
spec = util_spec "a", "10" do |s|
|
494
495
|
s.executables = []
|
495
496
|
end
|
496
497
|
install_specs spec
|
497
|
-
assert_equal @abin_path, Gem.bin_path(
|
498
|
+
assert_equal @abin_path, Gem.bin_path("a", "abin")
|
498
499
|
end
|
499
500
|
|
500
501
|
def test_self_bindir
|
501
|
-
assert_equal File.join(@gemhome,
|
502
|
-
assert_equal File.join(@gemhome,
|
503
|
-
assert_equal File.join(@gemhome,
|
502
|
+
assert_equal File.join(@gemhome, "bin"), Gem.bindir
|
503
|
+
assert_equal File.join(@gemhome, "bin"), Gem.bindir(Gem.dir)
|
504
|
+
assert_equal File.join(@gemhome, "bin"), Gem.bindir(Pathname.new(Gem.dir))
|
504
505
|
end
|
505
506
|
|
506
507
|
def test_self_bindir_default_dir
|
@@ -529,21 +530,21 @@ class TestGem < Gem::TestCase
|
|
529
530
|
foo = nil
|
530
531
|
|
531
532
|
Dir.chdir @tempdir do
|
532
|
-
FileUtils.mkdir_p
|
533
|
-
File.open File.join(
|
534
|
-
fp.puts
|
533
|
+
FileUtils.mkdir_p "data"
|
534
|
+
File.open File.join("data", "foo.txt"), "w" do |fp|
|
535
|
+
fp.puts "blah"
|
535
536
|
end
|
536
537
|
|
537
|
-
foo = util_spec
|
538
|
+
foo = util_spec "foo" do |s|
|
538
539
|
s.files = %w[data/foo.txt]
|
539
540
|
end
|
540
541
|
|
541
542
|
install_gem foo
|
542
543
|
end
|
543
544
|
|
544
|
-
gem
|
545
|
+
gem "foo"
|
545
546
|
|
546
|
-
expected = File.join @gemhome,
|
547
|
+
expected = File.join @gemhome, "gems", foo.full_name, "data", "foo"
|
547
548
|
|
548
549
|
assert_equal expected, Gem::Specification.find_by_name("foo").datadir
|
549
550
|
end
|
@@ -555,25 +556,25 @@ class TestGem < Gem::TestCase
|
|
555
556
|
end
|
556
557
|
|
557
558
|
def test_self_default_exec_format
|
558
|
-
ruby_install_name
|
559
|
-
assert_equal
|
559
|
+
ruby_install_name "ruby" do
|
560
|
+
assert_equal "%s", Gem.default_exec_format
|
560
561
|
end
|
561
562
|
end
|
562
563
|
|
563
564
|
def test_self_default_exec_format_18
|
564
|
-
ruby_install_name
|
565
|
-
assert_equal
|
565
|
+
ruby_install_name "ruby18" do
|
566
|
+
assert_equal "%s18", Gem.default_exec_format
|
566
567
|
end
|
567
568
|
end
|
568
569
|
|
569
570
|
def test_self_default_exec_format_jruby
|
570
|
-
ruby_install_name
|
571
|
-
assert_equal
|
571
|
+
ruby_install_name "jruby" do
|
572
|
+
assert_equal "j%s", Gem.default_exec_format
|
572
573
|
end
|
573
574
|
end
|
574
575
|
|
575
576
|
def test_default_path
|
576
|
-
vendordir(File.join(@tempdir,
|
577
|
+
vendordir(File.join(@tempdir, "vendor")) do
|
577
578
|
FileUtils.rm_rf Gem.user_home
|
578
579
|
|
579
580
|
expected = [Gem.default_dir]
|
@@ -593,7 +594,7 @@ class TestGem < Gem::TestCase
|
|
593
594
|
end
|
594
595
|
|
595
596
|
def test_default_path_user_home
|
596
|
-
vendordir(File.join(@tempdir,
|
597
|
+
vendordir(File.join(@tempdir, "vendor")) do
|
597
598
|
expected = [Gem.user_dir, Gem.default_dir]
|
598
599
|
|
599
600
|
assert_equal expected, Gem.default_path
|
@@ -601,7 +602,7 @@ class TestGem < Gem::TestCase
|
|
601
602
|
end
|
602
603
|
|
603
604
|
def test_default_path_vendor_dir
|
604
|
-
vendordir(File.join(@tempdir,
|
605
|
+
vendordir(File.join(@tempdir, "vendor")) do
|
605
606
|
FileUtils.mkdir_p Gem.vendor_dir
|
606
607
|
|
607
608
|
FileUtils.rm_rf Gem.user_home
|
@@ -616,25 +617,6 @@ class TestGem < Gem::TestCase
|
|
616
617
|
assert_equal %w[https://rubygems.org/], Gem.default_sources
|
617
618
|
end
|
618
619
|
|
619
|
-
def test_self_use_gemdeps
|
620
|
-
with_rubygems_gemdeps('-') do
|
621
|
-
FileUtils.mkdir_p 'detect/a/b'
|
622
|
-
FileUtils.mkdir_p 'detect/a/Isolate'
|
623
|
-
|
624
|
-
FileUtils.touch 'detect/Isolate'
|
625
|
-
|
626
|
-
begin
|
627
|
-
Dir.chdir 'detect/a/b'
|
628
|
-
|
629
|
-
Gem.use_gemdeps
|
630
|
-
|
631
|
-
assert_equal add_bundler_full_name([]), loaded_spec_names
|
632
|
-
ensure
|
633
|
-
Dir.chdir @tempdir
|
634
|
-
end
|
635
|
-
end
|
636
|
-
end
|
637
|
-
|
638
620
|
def test_self_dir
|
639
621
|
assert_equal @gemhome, Gem.dir
|
640
622
|
end
|
@@ -645,12 +627,12 @@ class TestGem < Gem::TestCase
|
|
645
627
|
|
646
628
|
Gem.ensure_gem_subdirectories @gemhome
|
647
629
|
|
648
|
-
assert_path_exist File.join @gemhome,
|
649
|
-
assert_path_exist File.join @gemhome,
|
650
|
-
assert_path_exist File.join @gemhome,
|
651
|
-
assert_path_exist File.join @gemhome,
|
652
|
-
assert_path_exist File.join @gemhome,
|
653
|
-
assert_path_exist File.join @gemhome,
|
630
|
+
assert_path_exist File.join @gemhome, "build_info"
|
631
|
+
assert_path_exist File.join @gemhome, "cache"
|
632
|
+
assert_path_exist File.join @gemhome, "doc"
|
633
|
+
assert_path_exist File.join @gemhome, "extensions"
|
634
|
+
assert_path_exist File.join @gemhome, "gems"
|
635
|
+
assert_path_exist File.join @gemhome, "specifications"
|
654
636
|
end
|
655
637
|
|
656
638
|
def test_self_ensure_gem_directories_permissions
|
@@ -680,9 +662,9 @@ class TestGem < Gem::TestCase
|
|
680
662
|
end unless win_platform?
|
681
663
|
|
682
664
|
def test_self_ensure_gem_directories_missing_parents
|
683
|
-
gemdir = File.join @tempdir,
|
684
|
-
FileUtils.rm_rf File.join(@tempdir,
|
685
|
-
refute File.exist?(File.join(@tempdir,
|
665
|
+
gemdir = File.join @tempdir, "a/b/c/gemdir"
|
666
|
+
FileUtils.rm_rf File.join(@tempdir, "a") rescue nil
|
667
|
+
refute File.exist?(File.join(@tempdir, "a")),
|
686
668
|
"manually remove #{File.join @tempdir, 'a'}, tests are broken"
|
687
669
|
Gem.use_paths gemdir
|
688
670
|
|
@@ -725,19 +707,19 @@ class TestGem < Gem::TestCase
|
|
725
707
|
end
|
726
708
|
|
727
709
|
def test_self_ensure_gem_directories_non_existent_paths
|
728
|
-
Gem.ensure_gem_subdirectories
|
729
|
-
Gem.ensure_gem_subdirectories
|
710
|
+
Gem.ensure_gem_subdirectories "/proc/0123456789/bogus" # should not raise
|
711
|
+
Gem.ensure_gem_subdirectories "classpath:/bogus/x" # JRuby embed scenario
|
730
712
|
end
|
731
713
|
end
|
732
714
|
|
733
715
|
def test_self_extension_dir_shared
|
734
|
-
enable_shared
|
716
|
+
enable_shared "yes" do
|
735
717
|
assert_equal Gem.ruby_api_version, Gem.extension_api_version
|
736
718
|
end
|
737
719
|
end
|
738
720
|
|
739
721
|
def test_self_extension_dir_static
|
740
|
-
enable_shared
|
722
|
+
enable_shared "no" do
|
741
723
|
assert_equal "#{Gem.ruby_api_version}-static", Gem.extension_api_version
|
742
724
|
end
|
743
725
|
end
|
@@ -746,14 +728,14 @@ class TestGem < Gem::TestCase
|
|
746
728
|
cwd = File.expand_path("test/rubygems", PROJECT_DIR)
|
747
729
|
$LOAD_PATH.unshift cwd
|
748
730
|
|
749
|
-
discover_path = File.join
|
731
|
+
discover_path = File.join "lib", "sff", "discover.rb"
|
750
732
|
|
751
733
|
foo1, foo2 = %w[1 2].map do |version|
|
752
|
-
spec = quick_gem
|
734
|
+
spec = quick_gem "sff", version do |s|
|
753
735
|
s.files << discover_path
|
754
736
|
end
|
755
737
|
|
756
|
-
write_file(File.join
|
738
|
+
write_file(File.join "gems", spec.full_name, discover_path) do |fp|
|
757
739
|
fp.puts "# #{spec.full_name}"
|
758
740
|
end
|
759
741
|
|
@@ -763,65 +745,29 @@ class TestGem < Gem::TestCase
|
|
763
745
|
Gem.refresh
|
764
746
|
|
765
747
|
expected = [
|
766
|
-
File.expand_path(
|
748
|
+
File.expand_path("test/rubygems/sff/discover.rb", PROJECT_DIR),
|
767
749
|
File.join(foo2.full_gem_path, discover_path),
|
768
750
|
File.join(foo1.full_gem_path, discover_path),
|
769
751
|
]
|
770
752
|
|
771
|
-
assert_equal expected, Gem.find_files(
|
772
|
-
assert_equal expected, Gem.find_files(
|
753
|
+
assert_equal expected, Gem.find_files("sff/discover")
|
754
|
+
assert_equal expected, Gem.find_files("sff/**.rb"), "[ruby-core:31730]"
|
773
755
|
ensure
|
774
756
|
assert_equal cwd, $LOAD_PATH.shift
|
775
757
|
end
|
776
758
|
|
777
|
-
def test_self_find_files_with_gemfile
|
778
|
-
cwd = File.expand_path("test/rubygems", PROJECT_DIR)
|
779
|
-
actual_load_path = $LOAD_PATH.unshift(cwd).dup
|
780
|
-
|
781
|
-
discover_path = File.join 'lib', 'sff', 'discover.rb'
|
782
|
-
|
783
|
-
foo1, _ = %w[1 2].map do |version|
|
784
|
-
spec = quick_gem 'sff', version do |s|
|
785
|
-
s.files << discover_path
|
786
|
-
end
|
787
|
-
|
788
|
-
write_file(File.join 'gems', spec.full_name, discover_path) do |fp|
|
789
|
-
fp.puts "# #{spec.full_name}"
|
790
|
-
end
|
791
|
-
|
792
|
-
spec
|
793
|
-
end
|
794
|
-
Gem.refresh
|
795
|
-
|
796
|
-
write_file(File.join Dir.pwd, 'Gemfile') do |fp|
|
797
|
-
fp.puts "source 'https://rubygems.org'"
|
798
|
-
fp.puts "gem '#{foo1.name}', '#{foo1.version}'"
|
799
|
-
end
|
800
|
-
Gem.use_gemdeps(File.join Dir.pwd, 'Gemfile')
|
801
|
-
|
802
|
-
expected = [
|
803
|
-
File.expand_path('test/rubygems/sff/discover.rb', PROJECT_DIR),
|
804
|
-
File.join(foo1.full_gem_path, discover_path),
|
805
|
-
].sort
|
806
|
-
|
807
|
-
assert_equal expected, Gem.find_files('sff/discover').sort
|
808
|
-
assert_equal expected, Gem.find_files('sff/**.rb').sort, '[ruby-core:31730]'
|
809
|
-
ensure
|
810
|
-
assert_equal cwd, actual_load_path.shift unless Gem.java_platform?
|
811
|
-
end
|
812
|
-
|
813
759
|
def test_self_find_latest_files
|
814
760
|
cwd = File.expand_path("test/rubygems", PROJECT_DIR)
|
815
761
|
$LOAD_PATH.unshift cwd
|
816
762
|
|
817
|
-
discover_path = File.join
|
763
|
+
discover_path = File.join "lib", "sff", "discover.rb"
|
818
764
|
|
819
765
|
_, foo2 = %w[1 2].map do |version|
|
820
|
-
spec = quick_gem
|
766
|
+
spec = quick_gem "sff", version do |s|
|
821
767
|
s.files << discover_path
|
822
768
|
end
|
823
769
|
|
824
|
-
write_file(File.join
|
770
|
+
write_file(File.join "gems", spec.full_name, discover_path) do |fp|
|
825
771
|
fp.puts "# #{spec.full_name}"
|
826
772
|
end
|
827
773
|
|
@@ -831,30 +777,30 @@ class TestGem < Gem::TestCase
|
|
831
777
|
Gem.refresh
|
832
778
|
|
833
779
|
expected = [
|
834
|
-
File.expand_path(
|
780
|
+
File.expand_path("test/rubygems/sff/discover.rb", PROJECT_DIR),
|
835
781
|
File.join(foo2.full_gem_path, discover_path),
|
836
782
|
]
|
837
783
|
|
838
|
-
assert_equal expected, Gem.find_latest_files(
|
839
|
-
assert_equal expected, Gem.find_latest_files(
|
784
|
+
assert_equal expected, Gem.find_latest_files("sff/discover")
|
785
|
+
assert_equal expected, Gem.find_latest_files("sff/**.rb"), "[ruby-core:31730]"
|
840
786
|
ensure
|
841
787
|
assert_equal cwd, $LOAD_PATH.shift
|
842
788
|
end
|
843
789
|
|
844
790
|
def test_self_latest_spec_for
|
845
791
|
gems = spec_fetcher do |fetcher|
|
846
|
-
fetcher.spec
|
847
|
-
fetcher.spec
|
848
|
-
fetcher.spec
|
792
|
+
fetcher.spec "a", 1
|
793
|
+
fetcher.spec "a", "3.a"
|
794
|
+
fetcher.spec "a", 2
|
849
795
|
end
|
850
796
|
|
851
|
-
spec = Gem.latest_spec_for
|
797
|
+
spec = Gem.latest_spec_for "a"
|
852
798
|
|
853
|
-
assert_equal gems[
|
799
|
+
assert_equal gems["a-2"], spec
|
854
800
|
end
|
855
801
|
|
856
802
|
def test_self_latest_spec_for_multiple_sources
|
857
|
-
uri =
|
803
|
+
uri = "https://example.sample.com/"
|
858
804
|
source = Gem::Source.new(uri)
|
859
805
|
source_list = Gem::SourceList.new
|
860
806
|
source_list << Gem::Source.new(@uri)
|
@@ -862,44 +808,44 @@ class TestGem < Gem::TestCase
|
|
862
808
|
Gem.sources.replace source_list
|
863
809
|
|
864
810
|
spec_fetcher(uri) do |fetcher|
|
865
|
-
fetcher.spec
|
811
|
+
fetcher.spec "a", 1.1
|
866
812
|
end
|
867
813
|
|
868
814
|
gems = spec_fetcher do |fetcher|
|
869
|
-
fetcher.spec
|
870
|
-
fetcher.spec
|
871
|
-
fetcher.spec
|
815
|
+
fetcher.spec "a", 1
|
816
|
+
fetcher.spec "a", "3.a"
|
817
|
+
fetcher.spec "a", 2
|
872
818
|
end
|
873
|
-
spec = Gem.latest_spec_for
|
874
|
-
assert_equal gems[
|
819
|
+
spec = Gem.latest_spec_for "a"
|
820
|
+
assert_equal gems["a-2"], spec
|
875
821
|
end
|
876
822
|
|
877
823
|
def test_self_latest_rubygems_version
|
878
824
|
spec_fetcher do |fetcher|
|
879
|
-
fetcher.spec
|
880
|
-
fetcher.spec
|
881
|
-
fetcher.spec
|
825
|
+
fetcher.spec "rubygems-update", "1.8.23"
|
826
|
+
fetcher.spec "rubygems-update", "1.8.24"
|
827
|
+
fetcher.spec "rubygems-update", "2.0.0.preview3"
|
882
828
|
end
|
883
829
|
|
884
830
|
version = Gem.latest_rubygems_version
|
885
831
|
|
886
|
-
assert_equal Gem::Version.new(
|
832
|
+
assert_equal Gem::Version.new("1.8.24"), version
|
887
833
|
end
|
888
834
|
|
889
835
|
def test_self_latest_version_for
|
890
836
|
spec_fetcher do |fetcher|
|
891
|
-
fetcher.spec
|
892
|
-
fetcher.spec
|
893
|
-
fetcher.spec
|
837
|
+
fetcher.spec "a", 1
|
838
|
+
fetcher.spec "a", 2
|
839
|
+
fetcher.spec "a", "3.a"
|
894
840
|
end
|
895
841
|
|
896
|
-
version = Gem.latest_version_for
|
842
|
+
version = Gem.latest_version_for "a"
|
897
843
|
|
898
844
|
assert_equal Gem::Version.new(2), version
|
899
845
|
end
|
900
846
|
|
901
847
|
def test_self_latest_version_for_multiple_sources
|
902
|
-
uri =
|
848
|
+
uri = "https://example.sample.com/"
|
903
849
|
source = Gem::Source.new(uri)
|
904
850
|
source_list = Gem::SourceList.new
|
905
851
|
source_list << Gem::Source.new(@uri)
|
@@ -907,27 +853,27 @@ class TestGem < Gem::TestCase
|
|
907
853
|
Gem.sources.replace source_list
|
908
854
|
|
909
855
|
spec_fetcher(uri) do |fetcher|
|
910
|
-
fetcher.spec
|
856
|
+
fetcher.spec "a", 1.1
|
911
857
|
end
|
912
858
|
|
913
859
|
spec_fetcher do |fetcher|
|
914
|
-
fetcher.spec
|
915
|
-
fetcher.spec
|
916
|
-
fetcher.spec
|
860
|
+
fetcher.spec "a", 1
|
861
|
+
fetcher.spec "a", 2
|
862
|
+
fetcher.spec "a", "3.a"
|
917
863
|
end
|
918
864
|
|
919
|
-
version = Gem.latest_version_for
|
865
|
+
version = Gem.latest_version_for "a"
|
920
866
|
|
921
867
|
assert_equal Gem::Version.new(2), version
|
922
868
|
end
|
923
869
|
|
924
870
|
def test_self_loaded_specs
|
925
|
-
foo = util_spec
|
871
|
+
foo = util_spec "foo"
|
926
872
|
install_gem foo
|
927
873
|
|
928
874
|
foo.activate
|
929
875
|
|
930
|
-
assert_equal true, Gem.loaded_specs.keys.include?(
|
876
|
+
assert_equal true, Gem.loaded_specs.keys.include?("foo")
|
931
877
|
end
|
932
878
|
|
933
879
|
def test_self_path
|
@@ -947,7 +893,7 @@ class TestGem < Gem::TestCase
|
|
947
893
|
path_count = Gem.path.size
|
948
894
|
Gem.clear_paths
|
949
895
|
|
950
|
-
ENV[
|
896
|
+
ENV["GEM_PATH"] = @additional.join(File::PATH_SEPARATOR)
|
951
897
|
|
952
898
|
assert_equal @additional, Gem.path[0,2]
|
953
899
|
|
@@ -959,10 +905,10 @@ class TestGem < Gem::TestCase
|
|
959
905
|
def test_self_path_duplicate
|
960
906
|
Gem.clear_paths
|
961
907
|
util_ensure_gem_dirs
|
962
|
-
dirs = @additional + [@gemhome] + [File.join(@tempdir,
|
908
|
+
dirs = @additional + [@gemhome] + [File.join(@tempdir, "a")]
|
963
909
|
|
964
|
-
ENV[
|
965
|
-
ENV[
|
910
|
+
ENV["GEM_HOME"] = @gemhome
|
911
|
+
ENV["GEM_PATH"] = dirs.join File::PATH_SEPARATOR
|
966
912
|
|
967
913
|
assert_equal @gemhome, Gem.dir
|
968
914
|
|
@@ -974,8 +920,8 @@ class TestGem < Gem::TestCase
|
|
974
920
|
Gem.clear_paths
|
975
921
|
|
976
922
|
util_ensure_gem_dirs
|
977
|
-
ENV[
|
978
|
-
ENV[
|
923
|
+
ENV["GEM_HOME"] = @gemhome
|
924
|
+
ENV["GEM_PATH"] = @additional.join(File::PATH_SEPARATOR)
|
979
925
|
|
980
926
|
assert_equal @gemhome, Gem.dir
|
981
927
|
|
@@ -992,38 +938,38 @@ class TestGem < Gem::TestCase
|
|
992
938
|
end
|
993
939
|
|
994
940
|
def test_self_prefix_libdir
|
995
|
-
orig_libdir = RbConfig::CONFIG[
|
996
|
-
RbConfig::CONFIG[
|
941
|
+
orig_libdir = RbConfig::CONFIG["libdir"]
|
942
|
+
RbConfig::CONFIG["libdir"] = PROJECT_DIR
|
997
943
|
|
998
944
|
assert_nil Gem.prefix
|
999
945
|
ensure
|
1000
|
-
RbConfig::CONFIG[
|
946
|
+
RbConfig::CONFIG["libdir"] = orig_libdir
|
1001
947
|
end
|
1002
948
|
|
1003
949
|
def test_self_prefix_sitelibdir
|
1004
|
-
orig_sitelibdir = RbConfig::CONFIG[
|
1005
|
-
RbConfig::CONFIG[
|
950
|
+
orig_sitelibdir = RbConfig::CONFIG["sitelibdir"]
|
951
|
+
RbConfig::CONFIG["sitelibdir"] = PROJECT_DIR
|
1006
952
|
|
1007
953
|
assert_nil Gem.prefix
|
1008
954
|
ensure
|
1009
|
-
RbConfig::CONFIG[
|
955
|
+
RbConfig::CONFIG["sitelibdir"] = orig_sitelibdir
|
1010
956
|
end
|
1011
957
|
|
1012
958
|
def test_self_read_binary
|
1013
|
-
File.open
|
959
|
+
File.open "test", "w" do |io|
|
1014
960
|
io.write "\xCF\x80"
|
1015
961
|
end
|
1016
962
|
|
1017
|
-
assert_equal ["\xCF", "\x80"], Gem.read_binary(
|
963
|
+
assert_equal ["\xCF", "\x80"], Gem.read_binary("test").chars.to_a
|
1018
964
|
|
1019
|
-
pend
|
965
|
+
pend "chmod not supported" if Gem.win_platform?
|
1020
966
|
|
1021
967
|
begin
|
1022
|
-
File.chmod 0444,
|
968
|
+
File.chmod 0444, "test"
|
1023
969
|
|
1024
|
-
assert_equal ["\xCF", "\x80"], Gem.read_binary(
|
970
|
+
assert_equal ["\xCF", "\x80"], Gem.read_binary("test").chars.to_a
|
1025
971
|
ensure
|
1026
|
-
File.chmod 0644,
|
972
|
+
File.chmod 0644, "test"
|
1027
973
|
end
|
1028
974
|
end
|
1029
975
|
|
@@ -1084,72 +1030,72 @@ class TestGem < Gem::TestCase
|
|
1084
1030
|
end
|
1085
1031
|
|
1086
1032
|
def test_self_ruby_api_version
|
1087
|
-
orig_ruby_version, RbConfig::CONFIG[
|
1033
|
+
orig_ruby_version, RbConfig::CONFIG["ruby_version"] = RbConfig::CONFIG["ruby_version"], "1.2.3"
|
1088
1034
|
|
1089
1035
|
Gem.instance_variable_set :@ruby_api_version, nil
|
1090
1036
|
|
1091
|
-
assert_equal
|
1037
|
+
assert_equal "1.2.3", Gem.ruby_api_version
|
1092
1038
|
ensure
|
1093
1039
|
Gem.instance_variable_set :@ruby_api_version, nil
|
1094
1040
|
|
1095
|
-
RbConfig::CONFIG[
|
1041
|
+
RbConfig::CONFIG["ruby_version"] = orig_ruby_version
|
1096
1042
|
end
|
1097
1043
|
|
1098
1044
|
def test_self_env_requirement
|
1099
|
-
ENV["GEM_REQUIREMENT_FOO"] =
|
1100
|
-
ENV["GEM_REQUIREMENT_BAR"] =
|
1101
|
-
ENV["GEM_REQUIREMENT_BAZ"] =
|
1045
|
+
ENV["GEM_REQUIREMENT_FOO"] = ">= 1.2.3"
|
1046
|
+
ENV["GEM_REQUIREMENT_BAR"] = "1.2.3"
|
1047
|
+
ENV["GEM_REQUIREMENT_BAZ"] = "abcd"
|
1102
1048
|
|
1103
|
-
assert_equal Gem::Requirement.create(
|
1104
|
-
assert_equal Gem::Requirement.create(
|
1105
|
-
assert_raise(Gem::Requirement::BadRequirementError) { Gem.env_requirement(
|
1106
|
-
assert_equal Gem::Requirement.default, Gem.env_requirement(
|
1049
|
+
assert_equal Gem::Requirement.create(">= 1.2.3"), Gem.env_requirement("foo")
|
1050
|
+
assert_equal Gem::Requirement.create("1.2.3"), Gem.env_requirement("bAr")
|
1051
|
+
assert_raise(Gem::Requirement::BadRequirementError) { Gem.env_requirement("baz") }
|
1052
|
+
assert_equal Gem::Requirement.default, Gem.env_requirement("qux")
|
1107
1053
|
end
|
1108
1054
|
|
1109
1055
|
def test_self_ruby_version_with_non_mri_implementations
|
1110
|
-
util_set_RUBY_VERSION
|
1056
|
+
util_set_RUBY_VERSION "2.5.0", 0, 60928, "jruby 9.2.0.0 (2.5.0) 2018-05-24 81156a8 OpenJDK 64-Bit Server VM 25.171-b11 on 1.8.0_171-8u171-b11-0ubuntu0.16.04.1-b11 [linux-x86_64]"
|
1111
1057
|
|
1112
|
-
assert_equal Gem::Version.new(
|
1058
|
+
assert_equal Gem::Version.new("2.5.0"), Gem.ruby_version
|
1113
1059
|
ensure
|
1114
1060
|
util_restore_RUBY_VERSION
|
1115
1061
|
end
|
1116
1062
|
|
1117
1063
|
def test_self_ruby_version_with_svn_prerelease
|
1118
|
-
util_set_RUBY_VERSION
|
1064
|
+
util_set_RUBY_VERSION "2.6.0", -1, 63539, "ruby 2.6.0preview2 (2018-05-31 trunk 63539) [x86_64-linux]"
|
1119
1065
|
|
1120
|
-
assert_equal Gem::Version.new(
|
1066
|
+
assert_equal Gem::Version.new("2.6.0.preview2"), Gem.ruby_version
|
1121
1067
|
ensure
|
1122
1068
|
util_restore_RUBY_VERSION
|
1123
1069
|
end
|
1124
1070
|
|
1125
1071
|
def test_self_ruby_version_with_git_prerelease
|
1126
|
-
util_set_RUBY_VERSION
|
1072
|
+
util_set_RUBY_VERSION "2.7.0", -1, "b563439274a402e33541f5695b1bfd4ac1085638", "ruby 2.7.0preview3 (2019-11-23 master b563439274) [x86_64-linux]"
|
1127
1073
|
|
1128
|
-
assert_equal Gem::Version.new(
|
1074
|
+
assert_equal Gem::Version.new("2.7.0.preview3"), Gem.ruby_version
|
1129
1075
|
ensure
|
1130
1076
|
util_restore_RUBY_VERSION
|
1131
1077
|
end
|
1132
1078
|
|
1133
1079
|
def test_self_ruby_version_with_non_mri_implementations_with_mri_prerelase_compatibility
|
1134
|
-
util_set_RUBY_VERSION
|
1080
|
+
util_set_RUBY_VERSION "2.6.0", -1, 63539, "weirdjruby 9.2.0.0 (2.6.0preview2) 2018-05-24 81156a8 OpenJDK 64-Bit Server VM 25.171-b11 on 1.8.0_171-8u171-b11-0ubuntu0.16.04.1-b11 [linux-x86_64]", "weirdjruby", "9.2.0.0"
|
1135
1081
|
|
1136
|
-
assert_equal Gem::Version.new(
|
1082
|
+
assert_equal Gem::Version.new("2.6.0.preview2"), Gem.ruby_version
|
1137
1083
|
ensure
|
1138
1084
|
util_restore_RUBY_VERSION
|
1139
1085
|
end
|
1140
1086
|
|
1141
1087
|
def test_self_ruby_version_with_svn_trunk
|
1142
|
-
util_set_RUBY_VERSION
|
1088
|
+
util_set_RUBY_VERSION "1.9.2", -1, 23493, "ruby 1.9.2dev (2009-05-20 trunk 23493) [x86_64-linux]"
|
1143
1089
|
|
1144
|
-
assert_equal Gem::Version.new(
|
1090
|
+
assert_equal Gem::Version.new("1.9.2.dev"), Gem.ruby_version
|
1145
1091
|
ensure
|
1146
1092
|
util_restore_RUBY_VERSION
|
1147
1093
|
end
|
1148
1094
|
|
1149
1095
|
def test_self_ruby_version_with_git_master
|
1150
|
-
util_set_RUBY_VERSION
|
1096
|
+
util_set_RUBY_VERSION "2.7.0", -1, "5de284ec78220e75643f89b454ce999da0c1c195", "ruby 2.7.0dev (2019-12-23T01:37:30Z master 5de284ec78) [x86_64-linux]"
|
1151
1097
|
|
1152
|
-
assert_equal Gem::Version.new(
|
1098
|
+
assert_equal Gem::Version.new("2.7.0.dev"), Gem.ruby_version
|
1153
1099
|
ensure
|
1154
1100
|
util_restore_RUBY_VERSION
|
1155
1101
|
end
|
@@ -1159,7 +1105,7 @@ class TestGem < Gem::TestCase
|
|
1159
1105
|
end
|
1160
1106
|
|
1161
1107
|
def test_self_paths_eq
|
1162
|
-
other = File.join @tempdir,
|
1108
|
+
other = File.join @tempdir, "other"
|
1163
1109
|
path = [@userhome, other].join File::PATH_SEPARATOR
|
1164
1110
|
|
1165
1111
|
#
|
@@ -1172,12 +1118,12 @@ class TestGem < Gem::TestCase
|
|
1172
1118
|
end
|
1173
1119
|
|
1174
1120
|
def test_self_paths_eq_nonexistent_home
|
1175
|
-
ENV[
|
1121
|
+
ENV["GEM_HOME"] = @gemhome
|
1176
1122
|
Gem.clear_paths
|
1177
1123
|
|
1178
|
-
other = File.join @tempdir,
|
1124
|
+
other = File.join @tempdir, "other"
|
1179
1125
|
|
1180
|
-
ENV[
|
1126
|
+
ENV["HOME"] = other
|
1181
1127
|
|
1182
1128
|
Gem.paths = { "GEM_PATH" => other }
|
1183
1129
|
|
@@ -1256,43 +1202,43 @@ class TestGem < Gem::TestCase
|
|
1256
1202
|
end
|
1257
1203
|
|
1258
1204
|
def test_try_activate_returns_true_for_activated_specs
|
1259
|
-
b = util_spec
|
1260
|
-
spec.files <<
|
1205
|
+
b = util_spec "b", "1.0" do |spec|
|
1206
|
+
spec.files << "lib/b.rb"
|
1261
1207
|
end
|
1262
1208
|
install_specs b
|
1263
1209
|
|
1264
|
-
assert Gem.try_activate(
|
1265
|
-
assert Gem.try_activate(
|
1210
|
+
assert Gem.try_activate("b"), "try_activate should return true"
|
1211
|
+
assert Gem.try_activate("b"), "try_activate should still return true"
|
1266
1212
|
end
|
1267
1213
|
|
1268
1214
|
def test_spec_order_is_consistent
|
1269
|
-
b1 = util_spec
|
1270
|
-
b2 = util_spec
|
1271
|
-
b3 = util_spec
|
1215
|
+
b1 = util_spec "b", "1.0"
|
1216
|
+
b2 = util_spec "b", "2.0"
|
1217
|
+
b3 = util_spec "b", "3.0"
|
1272
1218
|
|
1273
1219
|
install_specs b1, b2, b3
|
1274
1220
|
|
1275
|
-
specs1 = Gem::Specification.stubs.find_all {|s| s.name ==
|
1221
|
+
specs1 = Gem::Specification.stubs.find_all {|s| s.name == "b" }
|
1276
1222
|
Gem::Specification.reset
|
1277
|
-
specs2 = Gem::Specification.stubs_for(
|
1223
|
+
specs2 = Gem::Specification.stubs_for("b")
|
1278
1224
|
assert_equal specs1.map(&:version), specs2.map(&:version)
|
1279
1225
|
end
|
1280
1226
|
|
1281
1227
|
def test_self_try_activate_missing_dep
|
1282
|
-
b = util_spec
|
1283
|
-
a = util_spec
|
1228
|
+
b = util_spec "b", "1.0"
|
1229
|
+
a = util_spec "a", "1.0", "b" => ">= 1.0"
|
1284
1230
|
|
1285
1231
|
install_specs b, a
|
1286
1232
|
uninstall_gem b
|
1287
1233
|
|
1288
|
-
a_file = File.join a.gem_dir,
|
1234
|
+
a_file = File.join a.gem_dir, "lib", "a_file.rb"
|
1289
1235
|
|
1290
1236
|
write_file a_file do |io|
|
1291
|
-
io.puts
|
1237
|
+
io.puts "# a_file.rb"
|
1292
1238
|
end
|
1293
1239
|
|
1294
1240
|
e = assert_raise Gem::MissingSpecError do
|
1295
|
-
Gem.try_activate
|
1241
|
+
Gem.try_activate "a_file"
|
1296
1242
|
end
|
1297
1243
|
|
1298
1244
|
assert_match %r{Could not find 'b' }, e.message
|
@@ -1300,30 +1246,30 @@ class TestGem < Gem::TestCase
|
|
1300
1246
|
end
|
1301
1247
|
|
1302
1248
|
def test_self_try_activate_missing_prerelease
|
1303
|
-
b = util_spec
|
1304
|
-
a = util_spec
|
1249
|
+
b = util_spec "b", "1.0rc1"
|
1250
|
+
a = util_spec "a", "1.0rc1", "b" => "1.0rc1"
|
1305
1251
|
|
1306
1252
|
install_specs b, a
|
1307
1253
|
uninstall_gem b
|
1308
1254
|
|
1309
|
-
a_file = File.join a.gem_dir,
|
1255
|
+
a_file = File.join a.gem_dir, "lib", "a_file.rb"
|
1310
1256
|
|
1311
1257
|
write_file a_file do |io|
|
1312
|
-
io.puts
|
1258
|
+
io.puts "# a_file.rb"
|
1313
1259
|
end
|
1314
1260
|
|
1315
1261
|
e = assert_raise Gem::MissingSpecError do
|
1316
|
-
Gem.try_activate
|
1262
|
+
Gem.try_activate "a_file"
|
1317
1263
|
end
|
1318
1264
|
|
1319
1265
|
assert_match %r{Could not find 'b' \(= 1.0rc1\)}, e.message
|
1320
1266
|
end
|
1321
1267
|
|
1322
1268
|
def test_self_try_activate_missing_extensions
|
1323
|
-
spec = util_spec
|
1269
|
+
spec = util_spec "ext", "1" do |s|
|
1324
1270
|
s.extensions = %w[ext/extconf.rb]
|
1325
1271
|
s.mark_version
|
1326
|
-
s.installed_by_version = v(
|
1272
|
+
s.installed_by_version = v("2.2")
|
1327
1273
|
end
|
1328
1274
|
|
1329
1275
|
# write the spec without install to simulate a failed install
|
@@ -1332,55 +1278,53 @@ class TestGem < Gem::TestCase
|
|
1332
1278
|
end
|
1333
1279
|
|
1334
1280
|
_, err = capture_output do
|
1335
|
-
refute Gem.try_activate
|
1281
|
+
refute Gem.try_activate "nonexistent"
|
1336
1282
|
end
|
1337
1283
|
|
1338
|
-
|
1339
|
-
|
1340
|
-
"Try: gem pristine ext --version 1\n"
|
1284
|
+
expected = "Ignoring ext-1 because its extensions are not built. " +
|
1285
|
+
"Try: gem pristine ext --version 1\n"
|
1341
1286
|
|
1342
|
-
|
1343
|
-
end
|
1287
|
+
assert_equal expected, err
|
1344
1288
|
end
|
1345
1289
|
|
1346
1290
|
def test_self_use_paths_with_nils
|
1347
|
-
orig_home = ENV.delete
|
1348
|
-
orig_path = ENV.delete
|
1291
|
+
orig_home = ENV.delete "GEM_HOME"
|
1292
|
+
orig_path = ENV.delete "GEM_PATH"
|
1349
1293
|
Gem.use_paths nil, nil
|
1350
1294
|
assert_equal Gem.default_dir, Gem.paths.home
|
1351
1295
|
path = (Gem.default_path + [Gem.paths.home]).uniq
|
1352
1296
|
assert_equal path, Gem.paths.path
|
1353
1297
|
ensure
|
1354
|
-
ENV[
|
1355
|
-
ENV[
|
1298
|
+
ENV["GEM_HOME"] = orig_home
|
1299
|
+
ENV["GEM_PATH"] = orig_path
|
1356
1300
|
end
|
1357
1301
|
|
1358
1302
|
def test_setting_paths_does_not_warn_about_unknown_keys
|
1359
1303
|
stdout, stderr = capture_output do
|
1360
|
-
Gem.paths = {
|
1361
|
-
|
1362
|
-
|
1363
|
-
|
1304
|
+
Gem.paths = { "foo" => [],
|
1305
|
+
"bar" => Object.new,
|
1306
|
+
"GEM_HOME" => Gem.paths.home,
|
1307
|
+
"GEM_PATH" => "foo" }
|
1364
1308
|
end
|
1365
|
-
assert_equal [
|
1366
|
-
assert_equal
|
1367
|
-
assert_equal
|
1309
|
+
assert_equal ["foo", Gem.paths.home], Gem.paths.path
|
1310
|
+
assert_equal "", stderr
|
1311
|
+
assert_equal "", stdout
|
1368
1312
|
end
|
1369
1313
|
|
1370
1314
|
def test_setting_paths_does_not_mutate_parameter_object
|
1371
|
-
Gem.paths = {
|
1372
|
-
|
1373
|
-
assert_equal [
|
1315
|
+
Gem.paths = { "GEM_HOME" => Gem.paths.home,
|
1316
|
+
"GEM_PATH" => "foo" }.freeze
|
1317
|
+
assert_equal ["foo", Gem.paths.home], Gem.paths.path
|
1374
1318
|
end
|
1375
1319
|
|
1376
1320
|
def test_deprecated_paths=
|
1377
1321
|
stdout, stderr = capture_output do
|
1378
|
-
Gem.paths = {
|
1379
|
-
|
1322
|
+
Gem.paths = { "GEM_HOME" => Gem.paths.home,
|
1323
|
+
"GEM_PATH" => [Gem.paths.home, "foo"] }
|
1380
1324
|
end
|
1381
|
-
assert_equal [Gem.paths.home,
|
1325
|
+
assert_equal [Gem.paths.home, "foo"], Gem.paths.path
|
1382
1326
|
assert_match(/Array values in the parameter to `Gem.paths=` are deprecated.\nPlease use a String or nil/m, stderr)
|
1383
|
-
assert_equal
|
1327
|
+
assert_equal "", stdout
|
1384
1328
|
end
|
1385
1329
|
|
1386
1330
|
def test_self_use_paths
|
@@ -1393,8 +1337,8 @@ class TestGem < Gem::TestCase
|
|
1393
1337
|
end
|
1394
1338
|
|
1395
1339
|
def test_self_user_dir
|
1396
|
-
parts = [@userhome,
|
1397
|
-
parts << RbConfig::CONFIG[
|
1340
|
+
parts = [@userhome, ".gem", Gem.ruby_engine]
|
1341
|
+
parts << RbConfig::CONFIG["ruby_version"] unless RbConfig::CONFIG["ruby_version"].empty?
|
1398
1342
|
|
1399
1343
|
FileUtils.mkdir_p File.join(parts)
|
1400
1344
|
|
@@ -1402,10 +1346,10 @@ class TestGem < Gem::TestCase
|
|
1402
1346
|
end
|
1403
1347
|
|
1404
1348
|
def test_self_user_home
|
1405
|
-
if ENV[
|
1406
|
-
assert_equal ENV[
|
1349
|
+
if ENV["HOME"]
|
1350
|
+
assert_equal ENV["HOME"], Gem.user_home
|
1407
1351
|
else
|
1408
|
-
assert true,
|
1352
|
+
assert true, "count this test"
|
1409
1353
|
end
|
1410
1354
|
end
|
1411
1355
|
|
@@ -1430,7 +1374,7 @@ class TestGem < Gem::TestCase
|
|
1430
1374
|
a = util_spec "a", "1"
|
1431
1375
|
b = util_spec "b", "1", "c" => nil
|
1432
1376
|
c = util_spec "c", "2"
|
1433
|
-
d = util_spec "d", "1", {
|
1377
|
+
d = util_spec "d", "1", { "e" => "= 1" }, "lib/d#{$$}.rb"
|
1434
1378
|
e = util_spec "e", "1"
|
1435
1379
|
|
1436
1380
|
install_specs a, c, b, e, d
|
@@ -1451,35 +1395,35 @@ class TestGem < Gem::TestCase
|
|
1451
1395
|
|
1452
1396
|
output = Gem::Util.gunzip input
|
1453
1397
|
|
1454
|
-
assert_equal
|
1398
|
+
assert_equal "hello", output
|
1455
1399
|
assert_equal Encoding::BINARY, output.encoding
|
1456
1400
|
end
|
1457
1401
|
|
1458
1402
|
def test_self_gzip
|
1459
|
-
input =
|
1403
|
+
input = "hello"
|
1460
1404
|
|
1461
1405
|
output = Gem::Util.gzip input
|
1462
1406
|
|
1463
1407
|
zipped = StringIO.new output
|
1464
1408
|
|
1465
|
-
assert_equal
|
1409
|
+
assert_equal "hello", Zlib::GzipReader.new(zipped).read
|
1466
1410
|
assert_equal Encoding::BINARY, output.encoding
|
1467
1411
|
end
|
1468
1412
|
|
1469
1413
|
def test_self_vendor_dir
|
1470
|
-
vendordir(File.join(@tempdir,
|
1414
|
+
vendordir(File.join(@tempdir, "vendor")) do
|
1471
1415
|
expected =
|
1472
|
-
File.join RbConfig::CONFIG[
|
1473
|
-
RbConfig::CONFIG[
|
1416
|
+
File.join RbConfig::CONFIG["vendordir"], "gems",
|
1417
|
+
RbConfig::CONFIG["ruby_version"]
|
1474
1418
|
|
1475
1419
|
assert_equal expected, Gem.vendor_dir
|
1476
1420
|
end
|
1477
1421
|
end
|
1478
1422
|
|
1479
1423
|
def test_self_vendor_dir_ENV_GEM_VENDOR
|
1480
|
-
ENV[
|
1424
|
+
ENV["GEM_VENDOR"] = File.join @tempdir, "vendor", "gems"
|
1481
1425
|
|
1482
|
-
assert_equal ENV[
|
1426
|
+
assert_equal ENV["GEM_VENDOR"], Gem.vendor_dir
|
1483
1427
|
refute Gem.vendor_dir.frozen?
|
1484
1428
|
end
|
1485
1429
|
|
@@ -1492,28 +1436,35 @@ class TestGem < Gem::TestCase
|
|
1492
1436
|
def test_load_plugins
|
1493
1437
|
plugin_path = File.join "lib", "rubygems_plugin.rb"
|
1494
1438
|
|
1439
|
+
foo1_plugin_path = nil
|
1440
|
+
foo2_plugin_path = nil
|
1495
1441
|
Dir.chdir @tempdir do
|
1496
|
-
FileUtils.mkdir_p
|
1442
|
+
FileUtils.mkdir_p "lib"
|
1497
1443
|
File.open plugin_path, "w" do |fp|
|
1498
1444
|
fp.puts "class TestGem; PLUGINS_LOADED << 'plugin'; end"
|
1499
1445
|
end
|
1500
1446
|
|
1501
|
-
foo1 = util_spec
|
1447
|
+
foo1 = util_spec "foo", "1" do |s|
|
1502
1448
|
s.files << plugin_path
|
1503
1449
|
end
|
1450
|
+
foo1_plugin_path = File.join(foo1.gem_dir, plugin_path)
|
1504
1451
|
|
1505
1452
|
install_gem foo1
|
1506
1453
|
|
1507
|
-
foo2 = util_spec
|
1454
|
+
foo2 = util_spec "foo", "2" do |s|
|
1508
1455
|
s.files << plugin_path
|
1509
1456
|
end
|
1457
|
+
foo2_plugin_path = File.join(foo2.gem_dir, plugin_path)
|
1510
1458
|
|
1511
1459
|
install_gem foo2
|
1512
1460
|
end
|
1513
1461
|
|
1514
1462
|
Gem::Specification.reset
|
1463
|
+
PLUGINS_LOADED.clear
|
1464
|
+
$LOADED_FEATURES.delete(foo1_plugin_path)
|
1465
|
+
$LOADED_FEATURES.delete(foo2_plugin_path)
|
1515
1466
|
|
1516
|
-
gem
|
1467
|
+
gem "foo"
|
1517
1468
|
|
1518
1469
|
Gem.load_plugins
|
1519
1470
|
|
@@ -1521,15 +1472,18 @@ class TestGem < Gem::TestCase
|
|
1521
1472
|
end
|
1522
1473
|
|
1523
1474
|
def test_load_user_installed_plugins
|
1475
|
+
@orig_gem_home = ENV["GEM_HOME"]
|
1476
|
+
ENV["GEM_HOME"] = @gemhome
|
1477
|
+
|
1524
1478
|
plugin_path = File.join "lib", "rubygems_plugin.rb"
|
1525
1479
|
|
1526
1480
|
Dir.chdir @tempdir do
|
1527
|
-
FileUtils.mkdir_p
|
1481
|
+
FileUtils.mkdir_p "lib"
|
1528
1482
|
File.open plugin_path, "w" do |fp|
|
1529
1483
|
fp.puts "class TestGem; PLUGINS_LOADED << 'plugin'; end"
|
1530
1484
|
end
|
1531
1485
|
|
1532
|
-
foo = util_spec
|
1486
|
+
foo = util_spec "foo", "1" do |s|
|
1533
1487
|
s.files << plugin_path
|
1534
1488
|
end
|
1535
1489
|
|
@@ -1538,38 +1492,40 @@ class TestGem < Gem::TestCase
|
|
1538
1492
|
|
1539
1493
|
Gem.paths = { "GEM_PATH" => [Gem.dir, Gem.user_dir].join(File::PATH_SEPARATOR) }
|
1540
1494
|
|
1541
|
-
gem
|
1495
|
+
gem "foo"
|
1542
1496
|
|
1543
1497
|
Gem.load_plugins
|
1544
1498
|
|
1545
1499
|
assert_equal %w[plugin], PLUGINS_LOADED
|
1500
|
+
ensure
|
1501
|
+
ENV["GEM_HOME"] = @orig_gem_home
|
1546
1502
|
end
|
1547
1503
|
|
1548
1504
|
def test_load_env_plugins
|
1549
|
-
with_plugin(
|
1505
|
+
with_plugin("load") { Gem.load_env_plugins }
|
1550
1506
|
assert_equal :loaded, TEST_PLUGIN_LOAD rescue nil
|
1551
1507
|
|
1552
1508
|
util_remove_interrupt_command
|
1553
1509
|
|
1554
1510
|
# Should attempt to cause a StandardError
|
1555
|
-
with_plugin(
|
1511
|
+
with_plugin("standarderror") { Gem.load_env_plugins }
|
1556
1512
|
assert_equal :loaded, TEST_PLUGIN_STANDARDERROR rescue nil
|
1557
1513
|
|
1558
1514
|
util_remove_interrupt_command
|
1559
1515
|
|
1560
1516
|
# Should attempt to cause an Exception
|
1561
|
-
with_plugin(
|
1517
|
+
with_plugin("exception") { Gem.load_env_plugins }
|
1562
1518
|
assert_equal :loaded, TEST_PLUGIN_EXCEPTION rescue nil
|
1563
1519
|
end
|
1564
1520
|
|
1565
1521
|
def test_gem_path_ordering
|
1566
1522
|
refute_equal Gem.dir, Gem.user_dir
|
1567
1523
|
|
1568
|
-
write_file File.join(@tempdir,
|
1569
|
-
write_file File.join(@tempdir,
|
1524
|
+
write_file File.join(@tempdir, "lib", "g.rb") {|fp| fp.puts "" }
|
1525
|
+
write_file File.join(@tempdir, "lib", "m.rb") {|fp| fp.puts "" }
|
1570
1526
|
|
1571
|
-
g = util_spec
|
1572
|
-
m = util_spec
|
1527
|
+
g = util_spec "g", "1", nil, "lib/g.rb"
|
1528
|
+
m = util_spec "m", "1", nil, "lib/m.rb"
|
1573
1529
|
|
1574
1530
|
install_gem g, :install_dir => Gem.dir
|
1575
1531
|
m0 = install_gem m, :install_dir => Gem.dir
|
@@ -1588,15 +1544,15 @@ class TestGem < Gem::TestCase
|
|
1588
1544
|
Gem::Specification.reset
|
1589
1545
|
Gem.searcher = nil
|
1590
1546
|
|
1591
|
-
assert_equal Gem::Dependency.new(
|
1592
|
-
Gem::Dependency.new(
|
1547
|
+
assert_equal Gem::Dependency.new("m","1").to_specs,
|
1548
|
+
Gem::Dependency.new("m","1").to_specs.sort
|
1593
1549
|
|
1594
1550
|
assert_equal \
|
1595
1551
|
[expected.gem_dir],
|
1596
|
-
Gem::Dependency.new(
|
1552
|
+
Gem::Dependency.new("m","1").to_specs.map(&:gem_dir).sort,
|
1597
1553
|
"Wrong specs for #{_name}"
|
1598
1554
|
|
1599
|
-
spec = Gem::Dependency.new(
|
1555
|
+
spec = Gem::Dependency.new("m","1").to_spec
|
1600
1556
|
|
1601
1557
|
assert_equal \
|
1602
1558
|
File.join(_paths.first, "gems", "m-1"),
|
@@ -1606,7 +1562,7 @@ class TestGem < Gem::TestCase
|
|
1606
1562
|
|
1607
1563
|
gem "m"
|
1608
1564
|
|
1609
|
-
spec = Gem::Dependency.new(
|
1565
|
+
spec = Gem::Dependency.new("m","1").to_spec
|
1610
1566
|
assert spec.activated?, "dependency not activated for #{_name}"
|
1611
1567
|
|
1612
1568
|
assert_equal \
|
@@ -1621,11 +1577,11 @@ class TestGem < Gem::TestCase
|
|
1621
1577
|
end
|
1622
1578
|
|
1623
1579
|
def test_gem_path_ordering_short
|
1624
|
-
write_file File.join(@tempdir,
|
1625
|
-
write_file File.join(@tempdir,
|
1580
|
+
write_file File.join(@tempdir, "lib", "g.rb") {|fp| fp.puts "" }
|
1581
|
+
write_file File.join(@tempdir, "lib", "m.rb") {|fp| fp.puts "" }
|
1626
1582
|
|
1627
|
-
g = util_spec
|
1628
|
-
m = util_spec
|
1583
|
+
g = util_spec "g", "1", nil, "lib/g.rb"
|
1584
|
+
m = util_spec "m", "1", nil, "lib/m.rb"
|
1629
1585
|
|
1630
1586
|
install_gem g, :install_dir => Gem.dir
|
1631
1587
|
install_gem m, :install_dir => Gem.dir
|
@@ -1635,167 +1591,10 @@ class TestGem < Gem::TestCase
|
|
1635
1591
|
|
1636
1592
|
assert_equal \
|
1637
1593
|
File.join(Gem.dir, "gems", "m-1"),
|
1638
|
-
Gem::Dependency.new(
|
1594
|
+
Gem::Dependency.new("m","1").to_spec.gem_dir,
|
1639
1595
|
"Wrong spec selected"
|
1640
1596
|
end
|
1641
1597
|
|
1642
|
-
def test_auto_activation_of_specific_gemdeps_file
|
1643
|
-
a = util_spec "a", "1", nil, "lib/a.rb"
|
1644
|
-
b = util_spec "b", "1", nil, "lib/b.rb"
|
1645
|
-
c = util_spec "c", "1", nil, "lib/c.rb"
|
1646
|
-
|
1647
|
-
install_specs a, b, c
|
1648
|
-
|
1649
|
-
path = File.join @tempdir, "gem.deps.rb"
|
1650
|
-
|
1651
|
-
File.open path, "w" do |f|
|
1652
|
-
f.puts "gem 'a'"
|
1653
|
-
f.puts "gem 'b'"
|
1654
|
-
f.puts "gem 'c'"
|
1655
|
-
end
|
1656
|
-
|
1657
|
-
with_rubygems_gemdeps(path) do
|
1658
|
-
Gem.use_gemdeps
|
1659
|
-
|
1660
|
-
assert_equal add_bundler_full_name(%W[a-1 b-1 c-1]), loaded_spec_names
|
1661
|
-
end
|
1662
|
-
end
|
1663
|
-
|
1664
|
-
def test_auto_activation_of_used_gemdeps_file
|
1665
|
-
a = util_spec "a", "1", nil, "lib/a.rb"
|
1666
|
-
b = util_spec "b", "1", nil, "lib/b.rb"
|
1667
|
-
c = util_spec "c", "1", nil, "lib/c.rb"
|
1668
|
-
|
1669
|
-
install_specs a, b, c
|
1670
|
-
|
1671
|
-
path = File.join @tempdir, "gem.deps.rb"
|
1672
|
-
|
1673
|
-
File.open path, "w" do |f|
|
1674
|
-
f.puts "gem 'a'"
|
1675
|
-
f.puts "gem 'b'"
|
1676
|
-
f.puts "gem 'c'"
|
1677
|
-
end
|
1678
|
-
|
1679
|
-
with_rubygems_gemdeps("-") do
|
1680
|
-
expected_specs = [a, b, util_spec("bundler", Bundler::VERSION), c].compact.map(&:full_name)
|
1681
|
-
|
1682
|
-
Gem.use_gemdeps
|
1683
|
-
|
1684
|
-
assert_equal expected_specs, loaded_spec_names
|
1685
|
-
end
|
1686
|
-
end
|
1687
|
-
|
1688
|
-
BUNDLER_LIB_PATH = File.expand_path $LOAD_PATH.find {|lp| File.file?(File.join(lp, "bundler.rb")) }
|
1689
|
-
BUNDLER_FULL_NAME = "bundler-#{Bundler::VERSION}".freeze
|
1690
|
-
|
1691
|
-
def add_bundler_full_name(names)
|
1692
|
-
names << BUNDLER_FULL_NAME
|
1693
|
-
names.sort!
|
1694
|
-
names
|
1695
|
-
end
|
1696
|
-
|
1697
|
-
def test_looks_for_gemdeps_files_automatically_from_binstubs
|
1698
|
-
pend "Requiring bundler messes things up" if Gem.java_platform?
|
1699
|
-
|
1700
|
-
a = util_spec "a", "1" do |s|
|
1701
|
-
s.executables = %w[foo]
|
1702
|
-
s.bindir = "exe"
|
1703
|
-
end
|
1704
|
-
|
1705
|
-
write_file File.join(@tempdir, 'exe', 'foo') do |fp|
|
1706
|
-
fp.puts "puts Gem.loaded_specs.values.map(&:full_name).sort"
|
1707
|
-
end
|
1708
|
-
|
1709
|
-
b = util_spec "b", "1", nil, "lib/b.rb"
|
1710
|
-
c = util_spec "c", "1", nil, "lib/c.rb"
|
1711
|
-
|
1712
|
-
install_specs a, b, c
|
1713
|
-
|
1714
|
-
path = File.join(@tempdir, "gd-tmp")
|
1715
|
-
install_gem a, :install_dir => path
|
1716
|
-
install_gem b, :install_dir => path
|
1717
|
-
install_gem c, :install_dir => path
|
1718
|
-
|
1719
|
-
ENV['GEM_PATH'] = path
|
1720
|
-
|
1721
|
-
with_rubygems_gemdeps("-") do
|
1722
|
-
new_PATH = [File.join(path, "bin"), ENV["PATH"]].join(File::PATH_SEPARATOR)
|
1723
|
-
new_RUBYOPT = "-I#{rubygems_path} -I#{BUNDLER_LIB_PATH}"
|
1724
|
-
|
1725
|
-
path = File.join @tempdir, "gem.deps.rb"
|
1726
|
-
|
1727
|
-
File.open path, "w" do |f|
|
1728
|
-
f.puts "gem 'a'"
|
1729
|
-
end
|
1730
|
-
out0 = with_path_and_rubyopt(new_PATH, new_RUBYOPT) do
|
1731
|
-
IO.popen("foo", &:read).split(/\n/)
|
1732
|
-
end
|
1733
|
-
|
1734
|
-
File.open path, "a" do |f|
|
1735
|
-
f.puts "gem 'b'"
|
1736
|
-
f.puts "gem 'c'"
|
1737
|
-
end
|
1738
|
-
out = with_path_and_rubyopt(new_PATH, new_RUBYOPT) do
|
1739
|
-
IO.popen("foo", &:read).split(/\n/)
|
1740
|
-
end
|
1741
|
-
|
1742
|
-
assert_equal ["b-1", "c-1"], out - out0
|
1743
|
-
end
|
1744
|
-
end
|
1745
|
-
|
1746
|
-
def test_looks_for_gemdeps_files_automatically_from_binstubs_in_parent_dir
|
1747
|
-
pend "Requiring bundler messes things up" if Gem.java_platform?
|
1748
|
-
|
1749
|
-
a = util_spec "a", "1" do |s|
|
1750
|
-
s.executables = %w[foo]
|
1751
|
-
s.bindir = "exe"
|
1752
|
-
end
|
1753
|
-
|
1754
|
-
write_file File.join(@tempdir, 'exe', 'foo') do |fp|
|
1755
|
-
fp.puts "puts Gem.loaded_specs.values.map(&:full_name).sort"
|
1756
|
-
end
|
1757
|
-
|
1758
|
-
b = util_spec "b", "1", nil, "lib/b.rb"
|
1759
|
-
c = util_spec "c", "1", nil, "lib/c.rb"
|
1760
|
-
|
1761
|
-
install_specs a, b, c
|
1762
|
-
|
1763
|
-
path = File.join(@tempdir, "gd-tmp")
|
1764
|
-
install_gem a, :install_dir => path
|
1765
|
-
install_gem b, :install_dir => path
|
1766
|
-
install_gem c, :install_dir => path
|
1767
|
-
|
1768
|
-
ENV['GEM_PATH'] = path
|
1769
|
-
|
1770
|
-
with_rubygems_gemdeps("-") do
|
1771
|
-
Dir.mkdir "sub1"
|
1772
|
-
|
1773
|
-
new_PATH = [File.join(path, "bin"), ENV["PATH"]].join(File::PATH_SEPARATOR)
|
1774
|
-
new_RUBYOPT = "-I#{rubygems_path} -I#{BUNDLER_LIB_PATH}"
|
1775
|
-
|
1776
|
-
path = File.join @tempdir, "gem.deps.rb"
|
1777
|
-
|
1778
|
-
File.open path, "w" do |f|
|
1779
|
-
f.puts "gem 'a'"
|
1780
|
-
end
|
1781
|
-
out0 = with_path_and_rubyopt(new_PATH, new_RUBYOPT) do
|
1782
|
-
IO.popen("foo", :chdir => "sub1", &:read).split(/\n/)
|
1783
|
-
end
|
1784
|
-
|
1785
|
-
File.open path, "a" do |f|
|
1786
|
-
f.puts "gem 'b'"
|
1787
|
-
f.puts "gem 'c'"
|
1788
|
-
end
|
1789
|
-
out = with_path_and_rubyopt(new_PATH, new_RUBYOPT) do
|
1790
|
-
IO.popen("foo", :chdir => "sub1", &:read).split(/\n/)
|
1791
|
-
end
|
1792
|
-
|
1793
|
-
Dir.rmdir "sub1"
|
1794
|
-
|
1795
|
-
assert_equal ["b-1", "c-1"], out - out0
|
1796
|
-
end
|
1797
|
-
end
|
1798
|
-
|
1799
1598
|
def test_register_default_spec
|
1800
1599
|
Gem.clear_default_specs
|
1801
1600
|
|
@@ -1836,144 +1635,6 @@ class TestGem < Gem::TestCase
|
|
1836
1635
|
assert_equal old_style, Gem.find_unresolved_default_spec("foo.rb")
|
1837
1636
|
end
|
1838
1637
|
|
1839
|
-
def test_use_gemdeps
|
1840
|
-
gem_deps_file = 'gem.deps.rb'.tap(&Gem::UNTAINT)
|
1841
|
-
spec = util_spec 'a', 1
|
1842
|
-
install_specs spec
|
1843
|
-
|
1844
|
-
spec = Gem::Specification.find {|s| s == spec }
|
1845
|
-
refute spec.activated?
|
1846
|
-
|
1847
|
-
File.open gem_deps_file, 'w' do |io|
|
1848
|
-
io.write 'gem "a"'
|
1849
|
-
end
|
1850
|
-
|
1851
|
-
assert_nil Gem.gemdeps
|
1852
|
-
|
1853
|
-
Gem.use_gemdeps gem_deps_file
|
1854
|
-
|
1855
|
-
assert_equal add_bundler_full_name(%W[a-1]), loaded_spec_names
|
1856
|
-
refute_nil Gem.gemdeps
|
1857
|
-
end
|
1858
|
-
|
1859
|
-
def test_use_gemdeps_ENV
|
1860
|
-
with_rubygems_gemdeps(nil) do
|
1861
|
-
spec = util_spec 'a', 1
|
1862
|
-
|
1863
|
-
refute spec.activated?
|
1864
|
-
|
1865
|
-
File.open 'gem.deps.rb', 'w' do |io|
|
1866
|
-
io.write 'gem "a"'
|
1867
|
-
end
|
1868
|
-
|
1869
|
-
Gem.use_gemdeps
|
1870
|
-
|
1871
|
-
refute spec.activated?
|
1872
|
-
end
|
1873
|
-
end
|
1874
|
-
|
1875
|
-
def test_use_gemdeps_argument_missing
|
1876
|
-
e = assert_raise ArgumentError do
|
1877
|
-
Gem.use_gemdeps 'gem.deps.rb'
|
1878
|
-
end
|
1879
|
-
|
1880
|
-
assert_equal 'Unable to find gem dependencies file at gem.deps.rb',
|
1881
|
-
e.message
|
1882
|
-
end
|
1883
|
-
|
1884
|
-
def test_use_gemdeps_argument_missing_match_ENV
|
1885
|
-
with_rubygems_gemdeps('gem.deps.rb') do
|
1886
|
-
e = assert_raise ArgumentError do
|
1887
|
-
Gem.use_gemdeps 'gem.deps.rb'
|
1888
|
-
end
|
1889
|
-
|
1890
|
-
assert_equal 'Unable to find gem dependencies file at gem.deps.rb',
|
1891
|
-
e.message
|
1892
|
-
end
|
1893
|
-
end
|
1894
|
-
|
1895
|
-
def test_use_gemdeps_automatic
|
1896
|
-
with_rubygems_gemdeps('-') do
|
1897
|
-
spec = util_spec 'a', 1
|
1898
|
-
install_specs spec
|
1899
|
-
spec = Gem::Specification.find {|s| s == spec }
|
1900
|
-
|
1901
|
-
refute spec.activated?
|
1902
|
-
|
1903
|
-
File.open 'Gemfile', 'w' do |io|
|
1904
|
-
io.write 'gem "a"'
|
1905
|
-
end
|
1906
|
-
|
1907
|
-
Gem.use_gemdeps
|
1908
|
-
|
1909
|
-
assert_equal add_bundler_full_name(%W[a-1]), loaded_spec_names
|
1910
|
-
end
|
1911
|
-
end
|
1912
|
-
|
1913
|
-
def test_use_gemdeps_automatic_missing
|
1914
|
-
with_rubygems_gemdeps('-') do
|
1915
|
-
Gem.use_gemdeps
|
1916
|
-
|
1917
|
-
assert true # count
|
1918
|
-
end
|
1919
|
-
end
|
1920
|
-
|
1921
|
-
def test_use_gemdeps_disabled
|
1922
|
-
with_rubygems_gemdeps('') do
|
1923
|
-
spec = util_spec 'a', 1
|
1924
|
-
|
1925
|
-
refute spec.activated?
|
1926
|
-
|
1927
|
-
File.open 'gem.deps.rb', 'w' do |io|
|
1928
|
-
io.write 'gem "a"'
|
1929
|
-
end
|
1930
|
-
|
1931
|
-
Gem.use_gemdeps
|
1932
|
-
|
1933
|
-
refute spec.activated?
|
1934
|
-
end
|
1935
|
-
end
|
1936
|
-
|
1937
|
-
def test_use_gemdeps_missing_gem
|
1938
|
-
with_rubygems_gemdeps('x') do
|
1939
|
-
File.open 'x', 'w' do |io|
|
1940
|
-
io.write 'gem "a"'
|
1941
|
-
end
|
1942
|
-
|
1943
|
-
expected = <<-EXPECTED
|
1944
|
-
Could not find gem 'a' in locally installed gems.
|
1945
|
-
You may need to `bundle install` to install missing gems
|
1946
|
-
|
1947
|
-
EXPECTED
|
1948
|
-
|
1949
|
-
Gem::Deprecate.skip_during do
|
1950
|
-
actual_stdout, actual_stderr = capture_output do
|
1951
|
-
Gem.use_gemdeps
|
1952
|
-
end
|
1953
|
-
assert_empty actual_stdout
|
1954
|
-
assert_equal(expected, actual_stderr)
|
1955
|
-
end
|
1956
|
-
end
|
1957
|
-
end
|
1958
|
-
|
1959
|
-
def test_use_gemdeps_specific
|
1960
|
-
with_rubygems_gemdeps('x') do
|
1961
|
-
spec = util_spec 'a', 1
|
1962
|
-
install_specs spec
|
1963
|
-
|
1964
|
-
spec = Gem::Specification.find {|s| s == spec }
|
1965
|
-
refute spec.activated?
|
1966
|
-
|
1967
|
-
File.open 'x', 'w' do |io|
|
1968
|
-
io.write 'gem "a"'
|
1969
|
-
end
|
1970
|
-
|
1971
|
-
Gem.use_gemdeps
|
1972
|
-
|
1973
|
-
assert_equal add_bundler_full_name(%W[a-1]), loaded_spec_names
|
1974
|
-
end
|
1975
|
-
end
|
1976
|
-
|
1977
1638
|
def test_operating_system_defaults
|
1978
1639
|
operating_system_defaults = Gem.operating_system_defaults
|
1979
1640
|
|
@@ -1991,8 +1652,8 @@ You may need to `bundle install` to install missing gems
|
|
1991
1652
|
# Ensure that `Gem.source_date_epoch` is consistent even if
|
1992
1653
|
# $SOURCE_DATE_EPOCH has not been set.
|
1993
1654
|
def test_default_source_date_epoch_doesnt_change
|
1994
|
-
old_epoch = ENV[
|
1995
|
-
ENV[
|
1655
|
+
old_epoch = ENV["SOURCE_DATE_EPOCH"]
|
1656
|
+
ENV["SOURCE_DATE_EPOCH"] = nil
|
1996
1657
|
|
1997
1658
|
# Unfortunately, there is no real way to test this aside from waiting
|
1998
1659
|
# enough for `Time.now.to_i` to change -- which is a whole second.
|
@@ -2003,23 +1664,47 @@ You may need to `bundle install` to install missing gems
|
|
2003
1664
|
b = Gem.source_date_epoch
|
2004
1665
|
assert_equal a, b
|
2005
1666
|
ensure
|
2006
|
-
ENV[
|
1667
|
+
ENV["SOURCE_DATE_EPOCH"] = old_epoch
|
1668
|
+
end
|
1669
|
+
|
1670
|
+
def test_data_home_default
|
1671
|
+
expected = File.join(@userhome, ".local", "share")
|
1672
|
+
assert_equal expected, Gem.data_home
|
1673
|
+
end
|
1674
|
+
|
1675
|
+
def test_data_home_from_env
|
1676
|
+
ENV["XDG_DATA_HOME"] = expected = "/test/data/home"
|
1677
|
+
assert_equal expected, Gem.data_home
|
1678
|
+
end
|
1679
|
+
|
1680
|
+
def test_state_home_default
|
1681
|
+
Gem.instance_variable_set :@state_home, nil
|
1682
|
+
Gem.data_home # memoize @data_home, to demonstrate GH-6418
|
1683
|
+
expected = File.join(@userhome, ".local", "state")
|
1684
|
+
assert_equal expected, Gem.state_home
|
1685
|
+
end
|
1686
|
+
|
1687
|
+
def test_state_home_from_env
|
1688
|
+
Gem.instance_variable_set :@state_home, nil
|
1689
|
+
Gem.data_home # memoize @data_home, to demonstrate GH-6418
|
1690
|
+
ENV["XDG_STATE_HOME"] = expected = "/test/state/home"
|
1691
|
+
assert_equal expected, Gem.state_home
|
2007
1692
|
end
|
2008
1693
|
|
2009
1694
|
private
|
2010
1695
|
|
2011
1696
|
def ruby_install_name(name)
|
2012
1697
|
with_clean_path_to_ruby do
|
2013
|
-
orig_RUBY_INSTALL_NAME = RbConfig::CONFIG[
|
2014
|
-
RbConfig::CONFIG[
|
1698
|
+
orig_RUBY_INSTALL_NAME = RbConfig::CONFIG["ruby_install_name"]
|
1699
|
+
RbConfig::CONFIG["ruby_install_name"] = name
|
2015
1700
|
|
2016
1701
|
begin
|
2017
1702
|
yield
|
2018
1703
|
ensure
|
2019
1704
|
if orig_RUBY_INSTALL_NAME
|
2020
|
-
RbConfig::CONFIG[
|
1705
|
+
RbConfig::CONFIG["ruby_install_name"] = orig_RUBY_INSTALL_NAME
|
2021
1706
|
else
|
2022
|
-
RbConfig::CONFIG.delete
|
1707
|
+
RbConfig::CONFIG.delete "ruby_install_name"
|
2023
1708
|
end
|
2024
1709
|
end
|
2025
1710
|
end
|
@@ -2037,13 +1722,8 @@ You may need to `bundle install` to install missing gems
|
|
2037
1722
|
end
|
2038
1723
|
|
2039
1724
|
def redefine_method(base, method, new_result)
|
2040
|
-
|
2041
|
-
|
2042
|
-
base.define_method(method) { new_result }
|
2043
|
-
else
|
2044
|
-
base.send(:alias_method, method, method)
|
2045
|
-
base.send(:define_method, method) { new_result }
|
2046
|
-
end
|
1725
|
+
base.alias_method(method, method)
|
1726
|
+
base.define_method(method) { new_result }
|
2047
1727
|
end
|
2048
1728
|
|
2049
1729
|
def with_plugin(path)
|
@@ -2074,12 +1754,12 @@ You may need to `bundle install` to install missing gems
|
|
2074
1754
|
end
|
2075
1755
|
|
2076
1756
|
def util_exec_gem
|
2077
|
-
spec, _ = util_spec
|
2078
|
-
s.executables = [
|
1757
|
+
spec, _ = util_spec "a", "4" do |s|
|
1758
|
+
s.executables = ["exec", "abin"]
|
2079
1759
|
end
|
2080
1760
|
|
2081
|
-
@exec_path = File.join spec.full_gem_path, spec.bindir,
|
2082
|
-
@abin_path = File.join spec.full_gem_path, spec.bindir,
|
1761
|
+
@exec_path = File.join spec.full_gem_path, spec.bindir, "exec"
|
1762
|
+
@abin_path = File.join spec.full_gem_path, spec.bindir, "abin"
|
2083
1763
|
spec
|
2084
1764
|
end
|
2085
1765
|
|
@@ -2091,22 +1771,4 @@ You may need to `bundle install` to install missing gems
|
|
2091
1771
|
def util_cache_dir
|
2092
1772
|
File.join Gem.dir, "cache"
|
2093
1773
|
end
|
2094
|
-
|
2095
|
-
def with_path_and_rubyopt(path_value, rubyopt_value)
|
2096
|
-
path, ENV['PATH'] = ENV['PATH'], path_value
|
2097
|
-
rubyopt, ENV['RUBYOPT'] = ENV['RUBYOPT'], rubyopt_value
|
2098
|
-
|
2099
|
-
yield
|
2100
|
-
ensure
|
2101
|
-
ENV['PATH'] = path
|
2102
|
-
ENV['RUBYOPT'] = rubyopt
|
2103
|
-
end
|
2104
|
-
|
2105
|
-
def with_rubygems_gemdeps(value)
|
2106
|
-
rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], value
|
2107
|
-
|
2108
|
-
yield
|
2109
|
-
ensure
|
2110
|
-
ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
|
2111
|
-
end
|
2112
1774
|
end
|