rubygems-update 3.3.18 → 3.4.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1429 -1064
- data/CONTRIBUTING.md +31 -8
- data/Manifest.txt +61 -36
- data/POLICIES.md +55 -20
- data/README.md +19 -6
- data/bundler/CHANGELOG.md +457 -1
- data/bundler/README.md +3 -6
- data/bundler/UPGRADING.md +11 -4
- data/bundler/bundler.gemspec +8 -10
- data/bundler/exe/bundle +5 -16
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/cli/add.rb +1 -1
- data/bundler/lib/bundler/cli/binstubs.rb +6 -2
- data/bundler/lib/bundler/cli/check.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +2 -0
- data/bundler/lib/bundler/cli/console.rb +2 -2
- data/bundler/lib/bundler/cli/doctor.rb +4 -6
- data/bundler/lib/bundler/cli/gem.rb +62 -40
- data/bundler/lib/bundler/cli/info.rb +1 -1
- data/bundler/lib/bundler/cli/init.rb +6 -2
- data/bundler/lib/bundler/cli/install.rb +8 -6
- data/bundler/lib/bundler/cli/lock.rb +8 -5
- data/bundler/lib/bundler/cli/open.rb +6 -4
- data/bundler/lib/bundler/cli/outdated.rb +14 -7
- data/bundler/lib/bundler/cli/platform.rb +7 -5
- data/bundler/lib/bundler/cli/viz.rb +1 -1
- data/bundler/lib/bundler/cli.rb +53 -7
- data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
- data/bundler/lib/bundler/compact_index_client/updater.rb +40 -39
- data/bundler/lib/bundler/constants.rb +1 -1
- data/bundler/lib/bundler/current_ruby.rb +16 -5
- data/bundler/lib/bundler/definition.rb +262 -133
- data/bundler/lib/bundler/dependency.rb +20 -86
- data/bundler/lib/bundler/digest.rb +1 -1
- data/bundler/lib/bundler/dsl.rb +6 -7
- data/bundler/lib/bundler/endpoint_specification.rb +2 -13
- data/bundler/lib/bundler/env.rb +2 -2
- data/bundler/lib/bundler/environment_preserver.rb +3 -2
- data/bundler/lib/bundler/errors.rb +1 -11
- data/bundler/lib/bundler/feature_flag.rb +0 -2
- data/bundler/lib/bundler/fetcher/compact_index.rb +11 -13
- data/bundler/lib/bundler/fetcher/dependency.rb +2 -6
- data/bundler/lib/bundler/fetcher/downloader.rb +4 -5
- data/bundler/lib/bundler/fetcher/index.rb +1 -2
- data/bundler/lib/bundler/fetcher.rb +21 -15
- data/bundler/lib/bundler/force_platform.rb +18 -0
- data/bundler/lib/bundler/friendly_errors.rb +1 -4
- data/bundler/lib/bundler/gem_helper.rb +3 -4
- data/bundler/lib/bundler/gem_helpers.rb +7 -2
- data/bundler/lib/bundler/gem_version_promoter.rb +53 -98
- data/bundler/lib/bundler/graph.rb +3 -3
- data/bundler/lib/bundler/index.rb +13 -47
- data/bundler/lib/bundler/injector.rb +5 -4
- data/bundler/lib/bundler/inline.rb +9 -11
- data/bundler/lib/bundler/installer/parallel_installer.rb +4 -34
- data/bundler/lib/bundler/installer/standalone.rb +13 -9
- data/bundler/lib/bundler/installer.rb +17 -29
- data/bundler/lib/bundler/lazy_specification.rb +54 -53
- data/bundler/lib/bundler/lockfile_generator.rb +3 -3
- data/bundler/lib/bundler/lockfile_parser.rb +17 -16
- data/bundler/lib/bundler/man/bundle-add.1 +6 -2
- data/bundler/lib/bundler/man/bundle-add.1.ronn +4 -1
- data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
- data/bundler/lib/bundler/man/bundle-cache.1 +9 -3
- data/bundler/lib/bundler/man/bundle-cache.1.ronn +9 -2
- data/bundler/lib/bundler/man/bundle-check.1 +1 -1
- data/bundler/lib/bundler/man/bundle-clean.1 +2 -2
- data/bundler/lib/bundler/man/bundle-clean.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-config.1 +26 -10
- data/bundler/lib/bundler/man/bundle-config.1.ronn +17 -10
- data/bundler/lib/bundler/man/bundle-console.1 +53 -0
- data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
- data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
- data/bundler/lib/bundler/man/bundle-exec.1 +6 -6
- data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -6
- data/bundler/lib/bundler/man/bundle-gem.1 +27 -37
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +5 -5
- data/bundler/lib/bundler/man/bundle-help.1 +13 -0
- data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
- data/bundler/lib/bundler/man/bundle-info.1 +3 -3
- data/bundler/lib/bundler/man/bundle-info.1.ronn +3 -3
- data/bundler/lib/bundler/man/bundle-init.1 +5 -1
- data/bundler/lib/bundler/man/bundle-init.1.ronn +2 -0
- data/bundler/lib/bundler/man/bundle-inject.1 +5 -2
- data/bundler/lib/bundler/man/bundle-inject.1.ronn +3 -1
- data/bundler/lib/bundler/man/bundle-install.1 +5 -30
- data/bundler/lib/bundler/man/bundle-install.1.ronn +6 -29
- data/bundler/lib/bundler/man/bundle-list.1 +1 -1
- data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
- data/bundler/lib/bundler/man/bundle-open.1 +22 -2
- data/bundler/lib/bundler/man/bundle-open.1.ronn +9 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +13 -9
- data/bundler/lib/bundler/man/bundle-outdated.1.ronn +12 -9
- data/bundler/lib/bundler/man/bundle-platform.1 +16 -6
- data/bundler/lib/bundler/man/bundle-platform.1.ronn +14 -7
- data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
- data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
- data/bundler/lib/bundler/man/bundle-show.1 +1 -1
- data/bundler/lib/bundler/man/bundle-update.1 +1 -1
- data/bundler/lib/bundler/man/bundle-version.1 +35 -0
- data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
- data/bundler/lib/bundler/man/bundle-viz.1 +4 -1
- data/bundler/lib/bundler/man/bundle-viz.1.ronn +2 -0
- data/bundler/lib/bundler/man/bundle.1 +15 -10
- data/bundler/lib/bundler/man/bundle.1.ronn +12 -7
- data/bundler/lib/bundler/man/gemfile.5 +55 -55
- data/bundler/lib/bundler/man/gemfile.5.ronn +57 -53
- data/bundler/lib/bundler/man/index.txt +4 -0
- data/bundler/lib/bundler/match_metadata.rb +13 -0
- data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
- data/bundler/lib/bundler/mirror.rb +5 -7
- data/bundler/lib/bundler/plugin/index.rb +5 -5
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -4
- data/bundler/lib/bundler/plugin/installer.rb +5 -2
- data/bundler/lib/bundler/plugin.rb +3 -1
- data/bundler/lib/bundler/remote_specification.rb +7 -12
- data/bundler/lib/bundler/resolver/base.rb +107 -0
- data/bundler/lib/bundler/resolver/candidate.rb +94 -0
- data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
- data/bundler/lib/bundler/resolver/package.rb +72 -0
- data/bundler/lib/bundler/resolver/root.rb +25 -0
- data/bundler/lib/bundler/resolver/spec_group.rb +42 -71
- data/bundler/lib/bundler/resolver.rb +335 -328
- data/bundler/lib/bundler/ruby_dsl.rb +7 -1
- data/bundler/lib/bundler/ruby_version.rb +8 -8
- data/bundler/lib/bundler/rubygems_ext.rb +100 -9
- data/bundler/lib/bundler/rubygems_gem_installer.rb +23 -14
- data/bundler/lib/bundler/rubygems_integration.rb +11 -15
- data/bundler/lib/bundler/runtime.rb +2 -6
- data/bundler/lib/bundler/safe_marshal.rb +31 -0
- data/bundler/lib/bundler/settings.rb +5 -11
- data/bundler/lib/bundler/setup.rb +4 -1
- data/bundler/lib/bundler/shared_helpers.rb +3 -3
- data/bundler/lib/bundler/source/git/git_proxy.rb +237 -74
- data/bundler/lib/bundler/source/git.rb +55 -30
- data/bundler/lib/bundler/source/metadata.rb +1 -2
- data/bundler/lib/bundler/source/path/installer.rb +1 -22
- data/bundler/lib/bundler/source/path.rb +6 -6
- data/bundler/lib/bundler/source/rubygems.rb +26 -81
- data/bundler/lib/bundler/source.rb +1 -1
- data/bundler/lib/bundler/source_list.rb +8 -2
- data/bundler/lib/bundler/spec_set.rb +60 -37
- data/bundler/lib/bundler/templates/Executable +1 -1
- data/bundler/lib/bundler/templates/Executable.bundler +5 -10
- data/bundler/lib/bundler/templates/Executable.standalone +2 -0
- data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/README.md.tt +6 -4
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +12 -1
- data/bundler/lib/bundler/templates/newgem/bin/console.tt +0 -4
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt +10 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +1 -1
- data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +10 -0
- data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +13 -4
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +9 -2
- data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
- data/bundler/lib/bundler/ui/shell.rb +35 -12
- data/bundler/lib/bundler/ui/silent.rb +21 -5
- data/bundler/lib/bundler/uri_normalizer.rb +23 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1351 -409
- data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
- data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +248 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +64 -16
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +27 -7
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +15 -9
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +11 -6
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +1 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -2
- data/bundler/lib/bundler/vendored_persistent.rb +1 -33
- data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_pub_grub.rb} +1 -1
- data/bundler/lib/bundler/version.rb +5 -1
- data/bundler/lib/bundler/worker.rb +5 -7
- data/bundler/lib/bundler.rb +25 -77
- data/{bin → exe}/gem +4 -5
- data/{bin → exe}/update_rubygems +12 -10
- data/lib/rubygems/available_set.rb +4 -3
- data/lib/rubygems/basic_specification.rb +5 -4
- data/lib/rubygems/bundler_version_finder.rb +2 -2
- data/lib/rubygems/command.rb +41 -32
- data/lib/rubygems/command_manager.rb +30 -15
- data/lib/rubygems/commands/build_command.rb +12 -8
- data/lib/rubygems/commands/cert_command.rb +34 -33
- data/lib/rubygems/commands/check_command.rb +21 -20
- data/lib/rubygems/commands/cleanup_command.rb +18 -17
- data/lib/rubygems/commands/contents_command.rb +14 -13
- data/lib/rubygems/commands/dependency_command.rb +17 -16
- data/lib/rubygems/commands/environment_command.rb +6 -5
- data/lib/rubygems/commands/exec_command.rb +249 -0
- data/lib/rubygems/commands/fetch_command.rb +10 -9
- data/lib/rubygems/commands/generate_index_command.rb +18 -17
- data/lib/rubygems/commands/help_command.rb +7 -6
- data/lib/rubygems/commands/info_command.rb +3 -3
- data/lib/rubygems/commands/install_command.rb +28 -23
- data/lib/rubygems/commands/list_command.rb +4 -3
- data/lib/rubygems/commands/lock_command.rb +5 -4
- data/lib/rubygems/commands/mirror_command.rb +4 -3
- data/lib/rubygems/commands/open_command.rb +10 -9
- data/lib/rubygems/commands/outdated_command.rb +6 -5
- data/lib/rubygems/commands/owner_command.rb +17 -14
- data/lib/rubygems/commands/pristine_command.rb +46 -36
- data/lib/rubygems/commands/push_command.rb +9 -8
- data/lib/rubygems/commands/query_command.rb +9 -8
- data/lib/rubygems/commands/rdoc_command.rb +21 -19
- data/lib/rubygems/commands/search_command.rb +4 -3
- data/lib/rubygems/commands/server_command.rb +4 -3
- data/lib/rubygems/commands/setup_command.rb +97 -106
- data/lib/rubygems/commands/signin_command.rb +10 -9
- data/lib/rubygems/commands/signout_command.rb +8 -7
- data/lib/rubygems/commands/sources_command.rb +22 -21
- data/lib/rubygems/commands/specification_command.rb +14 -13
- data/lib/rubygems/commands/stale_command.rb +3 -2
- data/lib/rubygems/commands/uninstall_command.rb +44 -40
- data/lib/rubygems/commands/unpack_command.rb +14 -13
- data/lib/rubygems/commands/update_command.rb +42 -63
- data/lib/rubygems/commands/which_command.rb +8 -7
- data/lib/rubygems/commands/yank_command.rb +12 -11
- data/lib/rubygems/config_file.rb +55 -21
- data/lib/rubygems/core_ext/kernel_gem.rb +1 -6
- data/lib/rubygems/core_ext/kernel_require.rb +109 -115
- data/lib/rubygems/core_ext/kernel_warn.rb +33 -37
- data/lib/rubygems/core_ext/tcpsocket_init.rb +3 -1
- data/lib/rubygems/defaults.rb +33 -18
- data/lib/rubygems/dependency.rb +15 -11
- data/lib/rubygems/dependency_installer.rb +38 -37
- data/lib/rubygems/dependency_list.rb +7 -6
- data/lib/rubygems/deprecate.rb +3 -2
- data/lib/rubygems/doctor.rb +19 -18
- data/lib/rubygems/errors.rb +3 -2
- data/lib/rubygems/exceptions.rb +16 -8
- data/lib/rubygems/ext/build_error.rb +2 -1
- data/lib/rubygems/ext/builder.rb +37 -21
- data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +9 -5
- data/lib/rubygems/ext/cargo_builder.rb +150 -111
- data/lib/rubygems/ext/cmake_builder.rb +2 -2
- data/lib/rubygems/ext/configure_builder.rb +2 -1
- data/lib/rubygems/ext/ext_conf_builder.rb +11 -9
- data/lib/rubygems/ext/rake_builder.rb +7 -5
- data/lib/rubygems/ext.rb +8 -7
- data/lib/rubygems/gem_runner.rb +6 -5
- data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +163 -0
- data/lib/rubygems/gemcutter_utilities/webauthn_listener.rb +105 -0
- data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +78 -0
- data/lib/rubygems/gemcutter_utilities.rb +90 -34
- data/lib/rubygems/indexer.rb +29 -28
- data/lib/rubygems/install_default_message.rb +3 -2
- data/lib/rubygems/install_message.rb +3 -2
- data/lib/rubygems/install_update_options.rb +56 -55
- data/lib/rubygems/installer.rb +54 -46
- data/lib/rubygems/installer_uninstaller_utils.rb +2 -2
- data/lib/rubygems/local_remote_options.rb +19 -20
- data/lib/rubygems/mock_gem_ui.rb +3 -2
- data/lib/rubygems/name_tuple.rb +5 -4
- data/lib/rubygems/optparse/lib/optparse.rb +20 -15
- data/lib/rubygems/optparse.rb +1 -1
- data/lib/rubygems/package/digest_io.rb +1 -0
- data/lib/rubygems/package/file_source.rb +3 -2
- data/lib/rubygems/package/io_source.rb +1 -0
- data/lib/rubygems/package/old.rb +9 -8
- data/lib/rubygems/package/source.rb +1 -0
- data/lib/rubygems/package/tar_header.rb +63 -62
- data/lib/rubygems/package/tar_reader/entry.rb +91 -9
- data/lib/rubygems/package/tar_reader.rb +2 -29
- data/lib/rubygems/package/tar_writer.rb +8 -7
- data/lib/rubygems/package.rb +64 -48
- data/lib/rubygems/package_task.rb +5 -4
- data/lib/rubygems/path_support.rb +1 -0
- data/lib/rubygems/platform.rb +79 -53
- data/lib/rubygems/psych_tree.rb +2 -1
- data/lib/rubygems/query_utils.rb +35 -35
- data/lib/rubygems/rdoc.rb +3 -2
- data/lib/rubygems/remote_fetcher.rb +23 -22
- data/lib/rubygems/request/connection_pools.rb +4 -4
- data/lib/rubygems/request/http_pool.rb +2 -1
- data/lib/rubygems/request/https_pool.rb +1 -0
- data/lib/rubygems/request.rb +23 -22
- data/lib/rubygems/request_set/gem_dependency_api.rb +123 -123
- data/lib/rubygems/request_set/lockfile/parser.rb +28 -27
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -3
- data/lib/rubygems/request_set/lockfile.rb +6 -5
- data/lib/rubygems/request_set.rb +20 -19
- data/lib/rubygems/requirement.rb +15 -14
- data/lib/rubygems/resolver/activation_request.rb +4 -3
- data/lib/rubygems/resolver/api_set.rb +5 -4
- data/lib/rubygems/resolver/api_specification.rb +7 -6
- data/lib/rubygems/resolver/best_set.rb +6 -5
- data/lib/rubygems/resolver/composed_set.rb +1 -0
- data/lib/rubygems/resolver/conflict.rb +11 -10
- data/lib/rubygems/resolver/current_set.rb +1 -0
- data/lib/rubygems/resolver/dependency_request.rb +3 -2
- data/lib/rubygems/resolver/git_set.rb +3 -2
- data/lib/rubygems/resolver/git_specification.rb +7 -6
- data/lib/rubygems/resolver/index_set.rb +4 -3
- data/lib/rubygems/resolver/index_specification.rb +7 -5
- data/lib/rubygems/resolver/installed_specification.rb +5 -4
- data/lib/rubygems/resolver/installer_set.rb +15 -17
- data/lib/rubygems/resolver/local_specification.rb +3 -2
- data/lib/rubygems/resolver/lock_set.rb +5 -4
- data/lib/rubygems/resolver/lock_specification.rb +5 -4
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +1 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/lib/rubygems/resolver/molinillo.rb +2 -1
- data/lib/rubygems/resolver/requirement_list.rb +1 -0
- data/lib/rubygems/resolver/set.rb +1 -0
- data/lib/rubygems/resolver/source_set.rb +2 -0
- data/lib/rubygems/resolver/spec_specification.rb +1 -0
- data/lib/rubygems/resolver/specification.rb +2 -1
- data/lib/rubygems/resolver/stats.rb +2 -1
- data/lib/rubygems/resolver/vendor_set.rb +2 -1
- data/lib/rubygems/resolver/vendor_specification.rb +4 -3
- data/lib/rubygems/resolver.rb +41 -40
- data/lib/rubygems/s3_uri_signer.rb +10 -8
- data/lib/rubygems/safe_yaml.rb +4 -2
- data/lib/rubygems/security/policies.rb +48 -47
- data/lib/rubygems/security/policy.rb +19 -18
- data/lib/rubygems/security/signer.rb +6 -5
- data/lib/rubygems/security/trust_dir.rb +5 -4
- data/lib/rubygems/security.rb +30 -42
- data/lib/rubygems/security_option.rb +6 -5
- data/lib/rubygems/shellwords.rb +3 -0
- data/lib/rubygems/source/git.rb +22 -22
- data/lib/rubygems/source/installed.rb +2 -1
- data/lib/rubygems/source/local.rb +3 -2
- data/lib/rubygems/source/lock.rb +1 -0
- data/lib/rubygems/source/specific_file.rb +2 -1
- data/lib/rubygems/source/vendor.rb +1 -0
- data/lib/rubygems/source.rb +16 -16
- data/lib/rubygems/spec_fetcher.rb +10 -9
- data/lib/rubygems/specification.rb +121 -114
- data/lib/rubygems/specification_policy.rb +36 -15
- data/lib/rubygems/stub_specification.rb +11 -9
- data/lib/rubygems/text.rb +2 -2
- data/lib/rubygems/tsort/lib/tsort.rb +308 -310
- data/lib/rubygems/tsort.rb +1 -1
- data/lib/rubygems/uninstaller.rb +19 -18
- data/lib/rubygems/update_suggestion.rb +69 -0
- data/lib/rubygems/uri.rb +4 -4
- data/lib/rubygems/uri_formatter.rb +1 -1
- data/lib/rubygems/user_interaction.rb +37 -21
- data/lib/rubygems/util/licenses.rb +4 -3
- data/lib/rubygems/util/list.rb +1 -0
- data/lib/rubygems/util.rb +12 -15
- data/lib/rubygems/validator.rb +7 -6
- data/lib/rubygems/version.rb +17 -11
- data/lib/rubygems/version_option.rb +4 -3
- data/lib/rubygems.rb +89 -68
- data/rubygems-update.gemspec +10 -8
- data/setup.rb +10 -9
- data/test/rubygems/alternate_cert.pem +14 -14
- data/test/rubygems/alternate_cert_32.pem +15 -15
- data/test/rubygems/alternate_key.pem +25 -25
- data/test/rubygems/bad_rake.rb +1 -0
- data/test/rubygems/bundler_test_gem.rb +421 -0
- data/test/rubygems/child_cert.pem +15 -16
- data/test/rubygems/child_cert_32.pem +15 -16
- data/test/rubygems/child_key.pem +25 -25
- data/test/rubygems/encrypted_private_key.pem +26 -26
- data/test/rubygems/expired_cert.pem +15 -15
- data/test/rubygems/fake_certlib/openssl.rb +1 -0
- data/test/rubygems/future_cert.pem +15 -15
- data/test/rubygems/future_cert_32.pem +15 -15
- data/test/rubygems/good_rake.rb +1 -0
- data/test/rubygems/grandchild_cert.pem +15 -16
- data/test/rubygems/grandchild_cert_32.pem +15 -16
- data/test/rubygems/grandchild_key.pem +25 -25
- data/test/rubygems/helper.rb +172 -151
- data/test/rubygems/installer_test_case.rb +14 -13
- data/test/rubygems/invalid_issuer_cert.pem +16 -16
- data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
- data/test/rubygems/invalid_key.pem +25 -25
- data/test/rubygems/invalid_signer_cert.pem +15 -15
- data/test/rubygems/invalid_signer_cert_32.pem +15 -15
- data/test/rubygems/invalidchild_cert.pem +15 -16
- data/test/rubygems/invalidchild_cert_32.pem +15 -16
- data/test/rubygems/invalidchild_key.pem +25 -25
- data/test/rubygems/multifactor_auth_utilities.rb +111 -0
- data/test/rubygems/package/tar_test_case.rb +53 -17
- data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
- data/test/rubygems/plugin/exception/rubygems_plugin.rb +2 -1
- data/test/rubygems/plugin/load/rubygems_plugin.rb +1 -0
- data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +2 -1
- data/test/rubygems/private_key.pem +25 -25
- data/test/rubygems/public_cert.pem +16 -16
- data/test/rubygems/public_cert_32.pem +15 -15
- data/test/rubygems/public_key.pem +7 -7
- data/test/rubygems/rubygems/commands/crash_command.rb +1 -0
- data/test/rubygems/rubygems_plugin.rb +3 -2
- data/test/rubygems/simple_gem.rb +2 -1
- data/test/rubygems/specifications/bar-0.0.2.gemspec +2 -0
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +6 -4
- data/test/rubygems/test_bundled_ca.rb +13 -12
- data/test/rubygems/test_config.rb +5 -4
- data/test/rubygems/test_deprecate.rb +5 -4
- data/test/rubygems/test_exit.rb +9 -3
- data/test/rubygems/test_gem.rb +339 -677
- data/test/rubygems/test_gem_available_set.rb +22 -21
- data/test/rubygems/test_gem_bundler_version_finder.rb +6 -4
- data/test/rubygems/test_gem_command.rb +45 -44
- data/test/rubygems/test_gem_command_manager.rb +96 -30
- data/test/rubygems/test_gem_commands_build_command.rb +74 -63
- data/test/rubygems/test_gem_commands_cert_command.rb +98 -99
- data/test/rubygems/test_gem_commands_check_command.rb +5 -4
- data/test/rubygems/test_gem_commands_cleanup_command.rb +41 -40
- data/test/rubygems/test_gem_commands_contents_command.rb +28 -27
- data/test/rubygems/test_gem_commands_dependency_command.rb +37 -36
- data/test/rubygems/test_gem_commands_environment_command.rb +17 -16
- data/test/rubygems/test_gem_commands_exec_command.rb +853 -0
- data/test/rubygems/test_gem_commands_fetch_command.rb +38 -37
- data/test/rubygems/test_gem_commands_generate_index_command.rb +8 -7
- data/test/rubygems/test_gem_commands_help_command.rb +14 -13
- data/test/rubygems/test_gem_commands_info_command.rb +29 -2
- data/test/rubygems/test_gem_commands_install_command.rb +152 -132
- data/test/rubygems/test_gem_commands_list_command.rb +5 -4
- data/test/rubygems/test_gem_commands_lock_command.rb +11 -10
- data/test/rubygems/test_gem_commands_mirror.rb +3 -2
- data/test/rubygems/test_gem_commands_open_command.rb +5 -4
- data/test/rubygems/test_gem_commands_outdated_command.rb +10 -9
- data/test/rubygems/test_gem_commands_owner_command.rb +227 -50
- data/test/rubygems/test_gem_commands_pristine_command.rb +142 -93
- data/test/rubygems/test_gem_commands_push_command.rb +189 -64
- data/test/rubygems/test_gem_commands_query_command.rb +74 -73
- data/test/rubygems/test_gem_commands_search_command.rb +3 -2
- data/test/rubygems/test_gem_commands_server_command.rb +3 -2
- data/test/rubygems/test_gem_commands_setup_command.rb +123 -96
- data/test/rubygems/test_gem_commands_signin_command.rb +71 -31
- data/test/rubygems/test_gem_commands_signout_command.rb +3 -3
- data/test/rubygems/test_gem_commands_sources_command.rb +29 -29
- data/test/rubygems/test_gem_commands_specification_command.rb +33 -32
- data/test/rubygems/test_gem_commands_stale_command.rb +5 -4
- data/test/rubygems/test_gem_commands_uninstall_command.rb +99 -81
- data/test/rubygems/test_gem_commands_unpack_command.rb +32 -31
- data/test/rubygems/test_gem_commands_update_command.rb +96 -95
- data/test/rubygems/test_gem_commands_which_command.rb +7 -6
- data/test/rubygems/test_gem_commands_yank_command.rb +162 -43
- data/test/rubygems/test_gem_config_file.rb +94 -81
- data/test/rubygems/test_gem_dependency.rb +76 -73
- data/test/rubygems/test_gem_dependency_installer.rb +200 -165
- data/test/rubygems/test_gem_dependency_list.rb +48 -47
- data/test/rubygems/test_gem_dependency_resolution_error.rb +5 -4
- data/test/rubygems/test_gem_doctor.rb +27 -26
- data/test/rubygems/test_gem_ext_builder.rb +60 -61
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +4 -4
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{Cargo.lock → ext/custom_name_lib/Cargo.lock} +23 -33
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{Cargo.toml → ext/custom_name_lib/Cargo.toml} +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{src → ext/custom_name_lib/src}/lib.rs +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +3 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +37 -33
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +2 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +12 -0
- data/test/rubygems/test_gem_ext_cargo_builder.rb +48 -59
- data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +20 -19
- data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +21 -36
- data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -15
- data/test/rubygems/test_gem_ext_configure_builder.rb +14 -13
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +51 -52
- data/test/rubygems/test_gem_ext_rake_builder.rb +16 -15
- data/test/rubygems/test_gem_gem_runner.rb +15 -9
- data/test/rubygems/test_gem_gemcutter_utilities.rb +170 -84
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +5 -4
- data/test/rubygems/test_gem_indexer.rb +87 -67
- data/test/rubygems/test_gem_install_update_options.rb +17 -16
- data/test/rubygems/test_gem_installer.rb +422 -304
- data/test/rubygems/test_gem_local_remote_options.rb +11 -10
- data/test/rubygems/test_gem_name_tuple.rb +5 -4
- data/test/rubygems/test_gem_package.rb +243 -231
- data/test/rubygems/test_gem_package_old.rb +14 -13
- data/test/rubygems/test_gem_package_tar_header.rb +48 -47
- data/test/rubygems/test_gem_package_tar_reader.rb +56 -8
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +162 -16
- data/test/rubygems/test_gem_package_tar_writer.rb +77 -76
- data/test/rubygems/test_gem_package_task.rb +19 -18
- data/test/rubygems/test_gem_path_support.rb +15 -14
- data/test/rubygems/test_gem_platform.rb +333 -227
- data/test/rubygems/test_gem_rdoc.rb +15 -14
- data/test/rubygems/test_gem_remote_fetcher.rb +155 -154
- data/test/rubygems/test_gem_request.rb +64 -58
- data/test/rubygems/test_gem_request_connection_pools.rb +30 -29
- data/test/rubygems/test_gem_request_set.rb +101 -100
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +210 -211
- data/test/rubygems/test_gem_request_set_lockfile.rb +87 -86
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +58 -57
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +63 -62
- data/test/rubygems/test_gem_requirement.rb +48 -41
- data/test/rubygems/test_gem_resolver.rb +167 -99
- data/test/rubygems/test_gem_resolver_activation_request.rb +7 -6
- data/test/rubygems/test_gem_resolver_api_set.rb +34 -33
- data/test/rubygems/test_gem_resolver_api_specification.rb +48 -47
- data/test/rubygems/test_gem_resolver_best_set.rb +23 -22
- data/test/rubygems/test_gem_resolver_composed_set.rb +2 -1
- data/test/rubygems/test_gem_resolver_conflict.rb +13 -12
- data/test/rubygems/test_gem_resolver_dependency_request.rb +16 -15
- data/test/rubygems/test_gem_resolver_git_set.rb +22 -21
- data/test/rubygems/test_gem_resolver_git_specification.rb +22 -21
- data/test/rubygems/test_gem_resolver_index_set.rb +13 -12
- data/test/rubygems/test_gem_resolver_index_specification.rb +17 -16
- data/test/rubygems/test_gem_resolver_installed_specification.rb +6 -5
- data/test/rubygems/test_gem_resolver_installer_set.rb +79 -34
- data/test/rubygems/test_gem_resolver_local_specification.rb +8 -7
- data/test/rubygems/test_gem_resolver_lock_set.rb +13 -12
- data/test/rubygems/test_gem_resolver_lock_specification.rb +18 -17
- data/test/rubygems/test_gem_resolver_requirement_list.rb +2 -1
- data/test/rubygems/test_gem_resolver_specification.rb +9 -8
- data/test/rubygems/test_gem_resolver_vendor_set.rb +7 -6
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +11 -10
- data/test/rubygems/test_gem_security.rb +69 -68
- data/test/rubygems/test_gem_security_policy.rb +72 -72
- data/test/rubygems/test_gem_security_signer.rb +35 -34
- data/test/rubygems/test_gem_security_trust_dir.rb +7 -6
- data/test/rubygems/test_gem_silent_ui.rb +39 -32
- data/test/rubygems/test_gem_source.rb +45 -44
- data/test/rubygems/test_gem_source_fetch_problem.rb +10 -9
- data/test/rubygems/test_gem_source_git.rb +69 -62
- data/test/rubygems/test_gem_source_installed.rb +17 -16
- data/test/rubygems/test_gem_source_list.rb +6 -5
- data/test/rubygems/test_gem_source_local.rb +15 -14
- data/test/rubygems/test_gem_source_lock.rb +32 -31
- data/test/rubygems/test_gem_source_specific_file.rb +18 -17
- data/test/rubygems/test_gem_source_subpath_problem.rb +8 -7
- data/test/rubygems/test_gem_source_vendor.rb +14 -13
- data/test/rubygems/test_gem_spec_fetcher.rb +73 -72
- data/test/rubygems/test_gem_specification.rb +533 -469
- data/test/rubygems/test_gem_stream_ui.rb +53 -22
- data/test/rubygems/test_gem_stub_specification.rb +33 -32
- data/test/rubygems/test_gem_text.rb +2 -1
- data/test/rubygems/test_gem_uninstaller.rb +118 -117
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +4 -3
- data/test/rubygems/test_gem_update_suggestion.rb +209 -0
- data/test/rubygems/test_gem_uri.rb +6 -4
- data/test/rubygems/test_gem_uri_formatter.rb +15 -14
- data/test/rubygems/test_gem_util.rb +24 -23
- data/test/rubygems/test_gem_validator.rb +8 -8
- data/test/rubygems/test_gem_version.rb +24 -16
- data/test/rubygems/test_gem_version_option.rb +16 -15
- data/test/rubygems/test_kernel.rb +43 -48
- data/test/rubygems/test_project_sanity.rb +32 -3
- data/test/rubygems/test_remote_fetch_error.rb +8 -7
- data/test/rubygems/test_require.rb +118 -103
- data/test/rubygems/test_rubygems.rb +10 -8
- data/test/rubygems/test_webauthn_listener.rb +143 -0
- data/test/rubygems/test_webauthn_listener_response.rb +93 -0
- data/test/rubygems/test_webauthn_poller.rb +124 -0
- data/test/rubygems/utilities.rb +98 -34
- data/test/rubygems/wrong_key_cert.pem +15 -15
- data/test/rubygems/wrong_key_cert_32.pem +15 -15
- data/test/test_changelog_generator.rb +1 -1
- metadata +99 -46
- data/bundler/lib/bundler/dep_proxy.rb +0 -55
- data/bundler/lib/bundler/templates/gems.rb +0 -5
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +0 -5
- data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
- data/bundler/lib/bundler/vendor/molinillo/LICENSE +0 -9
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -149
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
- data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
- data/bundler/lib/bundler/vendored_molinillo.rb +0 -4
- data/bundler/lib/bundler/version_ranges.rb +0 -122
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/build.rb +0 -21
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/build.rb +0 -21
@@ -1,16 +1,17 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
10
|
-
require
|
2
|
+
|
3
|
+
require "benchmark"
|
4
|
+
require_relative "helper"
|
5
|
+
require "date"
|
6
|
+
require "pathname"
|
7
|
+
require "stringio"
|
8
|
+
require "rubygems/ext"
|
9
|
+
require "rubygems/specification"
|
10
|
+
require "rubygems/installer"
|
11
|
+
require "rubygems/platform"
|
11
12
|
|
12
13
|
class TestGemSpecification < Gem::TestCase
|
13
|
-
LEGACY_YAML_SPEC = <<-EOF
|
14
|
+
LEGACY_YAML_SPEC = <<-EOF
|
14
15
|
--- !ruby/object:Gem::Specification
|
15
16
|
rubygems_version: "1.0"
|
16
17
|
name: keyedlist
|
@@ -29,7 +30,7 @@ email: flgr@ccan.de
|
|
29
30
|
has_rdoc: true
|
30
31
|
EOF
|
31
32
|
|
32
|
-
LEGACY_RUBY_SPEC = <<-EOF
|
33
|
+
LEGACY_RUBY_SPEC = <<-EOF
|
33
34
|
Gem::Specification.new do |s|
|
34
35
|
s.name = %q{keyedlist}
|
35
36
|
s.version = %q{0.4.0}
|
@@ -44,16 +45,16 @@ end
|
|
44
45
|
EOF
|
45
46
|
|
46
47
|
def make_spec_c1
|
47
|
-
@c1 = util_spec
|
48
|
-
s.executable =
|
49
|
-
s.extensions <<
|
50
|
-
s.test_file =
|
51
|
-
s.requirements <<
|
52
|
-
s.license =
|
48
|
+
@c1 = util_spec "a", "1" do |s|
|
49
|
+
s.executable = "exec"
|
50
|
+
s.extensions << "ext/a/extconf.rb"
|
51
|
+
s.test_file = "test/suite.rb"
|
52
|
+
s.requirements << "A working computer"
|
53
|
+
s.license = "MIT"
|
53
54
|
|
54
|
-
s.add_dependency
|
55
|
-
s.add_dependency
|
56
|
-
s.add_dependency
|
55
|
+
s.add_dependency "rake", "> 0.4"
|
56
|
+
s.add_dependency "jabber4r", "> 0.0.0"
|
57
|
+
s.add_dependency "pqa", ["> 0.4", "<= 0.6"]
|
57
58
|
|
58
59
|
s.mark_version
|
59
60
|
s.files = %w[lib/code.rb]
|
@@ -61,16 +62,16 @@ end
|
|
61
62
|
end
|
62
63
|
|
63
64
|
def ext_spec(platform: Gem::Platform::RUBY)
|
64
|
-
@ext = util_spec
|
65
|
-
s.executable =
|
66
|
-
s.test_file =
|
65
|
+
@ext = util_spec "ext", "1" do |s|
|
66
|
+
s.executable = "exec"
|
67
|
+
s.test_file = "test/suite.rb"
|
67
68
|
s.extensions = %w[ext/extconf.rb]
|
68
|
-
s.license =
|
69
|
+
s.license = "MIT"
|
69
70
|
s.platform = platform
|
70
71
|
|
71
72
|
s.mark_version
|
72
73
|
s.files = %w[lib/code.rb]
|
73
|
-
s.installed_by_version = v(
|
74
|
+
s.installed_by_version = v("2.2")
|
74
75
|
end
|
75
76
|
end
|
76
77
|
|
@@ -88,40 +89,40 @@ end
|
|
88
89
|
# is not set.
|
89
90
|
Gem.instance_variable_set(:'@default_source_date_epoch', nil)
|
90
91
|
|
91
|
-
@a1 = util_spec
|
92
|
-
s.executable =
|
93
|
-
s.test_file =
|
94
|
-
s.requirements <<
|
95
|
-
s.license =
|
92
|
+
@a1 = util_spec "a", "1" do |s|
|
93
|
+
s.executable = "exec"
|
94
|
+
s.test_file = "test/suite.rb"
|
95
|
+
s.requirements << "A working computer"
|
96
|
+
s.license = "MIT"
|
96
97
|
|
97
98
|
s.mark_version
|
98
99
|
s.files = %w[lib/code.rb]
|
99
100
|
end
|
100
101
|
|
101
|
-
@a2 = util_spec
|
102
|
+
@a2 = util_spec "a", "2" do |s|
|
102
103
|
s.files = %w[lib/code.rb]
|
103
104
|
end
|
104
105
|
|
105
|
-
@a3 = util_spec
|
106
|
-
s.metadata[
|
106
|
+
@a3 = util_spec "a", "3" do |s|
|
107
|
+
s.metadata["allowed_push_host"] = "https://privategemserver.com"
|
107
108
|
end
|
108
109
|
|
109
110
|
@current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
110
111
|
end
|
111
112
|
|
112
113
|
def test_self_find_active_stub_by_path
|
113
|
-
spec = util_spec(
|
114
|
+
spec = util_spec("a", "1", nil, "lib/foo.rb")
|
114
115
|
spec.activated = true
|
115
116
|
|
116
117
|
# There used to be a bug (introduced in a9c1aaf) when Gem::Specification
|
117
118
|
# objects are present in the @stubs collection. This test verifies that
|
118
119
|
# this scenario works correctly.
|
119
120
|
Gem::Specification.all = [spec]
|
120
|
-
assert_equal spec, Gem::Specification.find_active_stub_by_path(
|
121
|
+
assert_equal spec, Gem::Specification.find_active_stub_by_path("foo")
|
121
122
|
end
|
122
123
|
|
123
124
|
def test_self_activate
|
124
|
-
foo = util_spec
|
125
|
+
foo = util_spec "foo", "1"
|
125
126
|
|
126
127
|
assert_activate %w[foo-1], foo
|
127
128
|
end
|
@@ -147,7 +148,7 @@ end
|
|
147
148
|
end
|
148
149
|
|
149
150
|
def test_find_in_unresolved_tree_is_not_exponentiental
|
150
|
-
pend "currently slower in CI on TruffleRuby" if RUBY_ENGINE ==
|
151
|
+
pend "currently slower in CI on TruffleRuby" if RUBY_ENGINE == "truffleruby"
|
151
152
|
num_of_pkg = 7
|
152
153
|
num_of_version_per_pkg = 3
|
153
154
|
packages = (0..num_of_pkg).map do |pkgi|
|
@@ -166,7 +167,7 @@ end
|
|
166
167
|
base.activate
|
167
168
|
|
168
169
|
tms = Benchmark.measure do
|
169
|
-
assert_raise(LoadError) { require
|
170
|
+
assert_raise(LoadError) { require "no_such_file_foo" }
|
170
171
|
end
|
171
172
|
assert_operator tms.total, :<=, 10
|
172
173
|
end
|
@@ -372,13 +373,13 @@ end
|
|
372
373
|
# [B] ~> 1.0 (satisfied by 1.0)
|
373
374
|
|
374
375
|
def test_self_activate_checks_dependencies
|
375
|
-
a = util_spec
|
376
|
-
a.add_dependency
|
377
|
-
a.add_dependency
|
376
|
+
a = util_spec "a", "1.0"
|
377
|
+
a.add_dependency "c", "= 1.0"
|
378
|
+
a.add_dependency "b", "~> 1.0"
|
378
379
|
|
379
|
-
b1 = util_spec
|
380
|
-
b2 = util_spec
|
381
|
-
c = util_spec
|
380
|
+
b1 = util_spec "b", "1.0"
|
381
|
+
b2 = util_spec "b", "2.0"
|
382
|
+
c = util_spec "c", "1.0", "b" => "= 2.0"
|
382
383
|
install_specs b1, b2, c, a
|
383
384
|
|
384
385
|
e = assert_raise Gem::LoadError do
|
@@ -396,10 +397,10 @@ end
|
|
396
397
|
# [B] = 2.0
|
397
398
|
|
398
399
|
def test_self_activate_divergent
|
399
|
-
a = util_spec
|
400
|
-
b1 = util_spec
|
401
|
-
b2 = util_spec
|
402
|
-
c = util_spec
|
400
|
+
a = util_spec "a", "1.0", "b" => "~> 1.0", "c" => "= 1.0"
|
401
|
+
b1 = util_spec "b", "1.0"
|
402
|
+
b2 = util_spec "b", "2.0"
|
403
|
+
c = util_spec "c", "1.0", "b" => "= 2.0"
|
403
404
|
|
404
405
|
install_specs b1, b2, c, a
|
405
406
|
|
@@ -415,9 +416,9 @@ end
|
|
415
416
|
# DOC
|
416
417
|
|
417
418
|
def test_self_activate_old_required
|
418
|
-
e1, = util_spec
|
419
|
-
@d1 = util_spec
|
420
|
-
@d2 = util_spec
|
419
|
+
e1, = util_spec "e", "1", "d" => "= 1"
|
420
|
+
@d1 = util_spec "d", "1"
|
421
|
+
@d2 = util_spec "d", "2"
|
421
422
|
|
422
423
|
install_specs @d1, @d2, e1
|
423
424
|
|
@@ -428,17 +429,17 @@ end
|
|
428
429
|
# DOC
|
429
430
|
|
430
431
|
def test_self_activate_platform_alternate
|
431
|
-
@x1_m = util_spec
|
432
|
+
@x1_m = util_spec "x", "1" do |s|
|
432
433
|
s.platform = Gem::Platform.new %w[cpu my_platform 1]
|
433
434
|
end
|
434
435
|
|
435
|
-
@x1_o = util_spec
|
436
|
+
@x1_o = util_spec "x", "1" do |s|
|
436
437
|
s.platform = Gem::Platform.new %w[cpu other_platform 1]
|
437
438
|
end
|
438
439
|
|
439
|
-
@w1 = util_spec
|
440
|
+
@w1 = util_spec "w", "1", "x" => nil
|
440
441
|
|
441
|
-
util_set_arch
|
442
|
+
util_set_arch "cpu-my_platform1"
|
442
443
|
install_specs @x1_m, @x1_o, @w1
|
443
444
|
|
444
445
|
assert_activate %w[x-1-cpu-my_platform-1 w-1], @w1, @x1_m
|
@@ -448,13 +449,13 @@ end
|
|
448
449
|
# DOC
|
449
450
|
|
450
451
|
def test_self_activate_platform_bump
|
451
|
-
@y1 = util_spec
|
452
|
+
@y1 = util_spec "y", "1"
|
452
453
|
|
453
|
-
@y1_1_p = util_spec
|
454
|
+
@y1_1_p = util_spec "y", "1.1" do |s|
|
454
455
|
s.platform = Gem::Platform.new %w[cpu my_platform 1]
|
455
456
|
end
|
456
457
|
|
457
|
-
@z1 = util_spec
|
458
|
+
@z1 = util_spec "z", "1", "y" => nil
|
458
459
|
install_specs @y1, @y1_1_p, @z1
|
459
460
|
|
460
461
|
assert_activate %w[y-1 z-1], @z1, @y1
|
@@ -467,11 +468,11 @@ end
|
|
467
468
|
# [A] >= 0 (satisfied by 1.a)
|
468
469
|
|
469
470
|
def test_self_activate_prerelease
|
470
|
-
@c1_pre = util_spec
|
471
|
-
@a1_pre = util_spec
|
472
|
-
@b1 = util_spec
|
473
|
-
s.add_dependency
|
474
|
-
s.add_development_dependency
|
471
|
+
@c1_pre = util_spec "c", "1.a", "a" => "1.a", "b" => "1"
|
472
|
+
@a1_pre = util_spec "a", "1.a"
|
473
|
+
@b1 = util_spec "b", "1" do |s|
|
474
|
+
s.add_dependency "a"
|
475
|
+
s.add_development_dependency "aa"
|
475
476
|
end
|
476
477
|
install_specs @a1_pre, @b1, @c1_pre
|
477
478
|
|
@@ -533,7 +534,7 @@ end
|
|
533
534
|
end
|
534
535
|
|
535
536
|
def test_self_activate_loaded
|
536
|
-
foo = util_spec
|
537
|
+
foo = util_spec "foo", "1"
|
537
538
|
|
538
539
|
assert foo.activate
|
539
540
|
refute foo.activate
|
@@ -545,9 +546,9 @@ end
|
|
545
546
|
# [C] depends on nothing
|
546
547
|
|
547
548
|
def test_self_activate_unrelated
|
548
|
-
a = util_spec
|
549
|
-
b = util_spec
|
550
|
-
c = util_spec
|
549
|
+
a = util_spec "a", "1.0", "b" => ">= 1.0"
|
550
|
+
b = util_spec "b", "1.0"
|
551
|
+
c = util_spec "c", "1.0"
|
551
552
|
install_specs b, c, a
|
552
553
|
|
553
554
|
assert_activate %w[b-1.0 c-1.0 a-1.0], a, c, "b"
|
@@ -563,11 +564,11 @@ end
|
|
563
564
|
# TODO: move these to specification
|
564
565
|
|
565
566
|
def test_self_activate_over
|
566
|
-
a = util_spec
|
567
|
-
install_specs util_spec
|
568
|
-
install_specs util_spec
|
569
|
-
install_specs util_spec
|
570
|
-
install_specs util_spec
|
567
|
+
a = util_spec "a", "1.0", "b" => ">= 1.0", "c" => "= 1.0"
|
568
|
+
install_specs util_spec "b", "1.0"
|
569
|
+
install_specs util_spec "b", "1.1"
|
570
|
+
install_specs util_spec "b", "2.0"
|
571
|
+
install_specs util_spec "c", "1.0", "b" => "~> 1.0"
|
571
572
|
install_specs a
|
572
573
|
|
573
574
|
a.activate
|
@@ -588,10 +589,10 @@ end
|
|
588
589
|
# first resolve through a dependency that is later pruned.
|
589
590
|
|
590
591
|
def test_self_activate_under
|
591
|
-
a = util_spec
|
592
|
-
b1 = util_spec
|
593
|
-
b1_1 = util_spec
|
594
|
-
c = util_spec
|
592
|
+
a = util_spec "a", "1.0", "b" => "~> 1.0", "c" => "= 1.0"
|
593
|
+
b1 = util_spec "b", "1.0"
|
594
|
+
b1_1 = util_spec "b", "1.1"
|
595
|
+
c = util_spec "c", "1.0", "b" => "= 1.0"
|
595
596
|
|
596
597
|
install_specs b1, b1_1, c, a
|
597
598
|
|
@@ -607,10 +608,10 @@ end
|
|
607
608
|
# [C1] depends on nothing
|
608
609
|
|
609
610
|
def test_self_activate_dropped
|
610
|
-
a1 = util_spec
|
611
|
-
b1 = util_spec
|
612
|
-
b2 = util_spec
|
613
|
-
c1 = util_spec
|
611
|
+
a1 = util_spec "a", "1", "b" => nil
|
612
|
+
b1 = util_spec "b", "1", "c" => nil
|
613
|
+
b2 = util_spec "b", "2"
|
614
|
+
c1 = util_spec "c", "1"
|
614
615
|
install_specs c1, b1, b2, a1
|
615
616
|
|
616
617
|
assert_activate %w[b-2 a-1], a1, "b"
|
@@ -627,11 +628,11 @@ end
|
|
627
628
|
# resolve.
|
628
629
|
|
629
630
|
def test_self_activate_raggi_the_edgecase_generator
|
630
|
-
a = util_spec
|
631
|
-
b1 = util_spec
|
632
|
-
b1_0 = util_spec
|
633
|
-
c = util_spec
|
634
|
-
z = util_spec
|
631
|
+
a = util_spec "a", "1.0", "b" => ">= 1.0", "c" => ">= 1.0"
|
632
|
+
b1 = util_spec "b", "1.0"
|
633
|
+
b1_0 = util_spec "b", "1.1", "z" => ">= 1.0"
|
634
|
+
c = util_spec "c", "1.0", "b" => "= 1.0"
|
635
|
+
z = util_spec "z", "1"
|
635
636
|
|
636
637
|
install_specs z, b1, b1_0, c, z
|
637
638
|
|
@@ -639,8 +640,8 @@ end
|
|
639
640
|
end
|
640
641
|
|
641
642
|
def test_self_activate_conflict
|
642
|
-
install_specs util_spec
|
643
|
-
install_specs util_spec
|
643
|
+
install_specs util_spec "b", "1.0"
|
644
|
+
install_specs util_spec "b", "2.0"
|
644
645
|
|
645
646
|
gem "b", "= 1.0"
|
646
647
|
|
@@ -655,7 +656,7 @@ end
|
|
655
656
|
install_specs a
|
656
657
|
Gem::Specification.all = [a]
|
657
658
|
|
658
|
-
assert_equal a, Gem::Specification.find_inactive_by_path(
|
659
|
+
assert_equal a, Gem::Specification.find_inactive_by_path("foo")
|
659
660
|
end
|
660
661
|
|
661
662
|
def test_self_attribute_names
|
@@ -698,13 +699,13 @@ end
|
|
698
699
|
|
699
700
|
def test_self__load_future
|
700
701
|
spec = Gem::Specification.new
|
701
|
-
spec.name =
|
702
|
-
spec.version =
|
702
|
+
spec.name = "a"
|
703
|
+
spec.version = "1"
|
703
704
|
spec.specification_version = @current_version + 1
|
704
705
|
|
705
706
|
load_spec = Marshal.load Marshal.dump(spec)
|
706
707
|
|
707
|
-
assert_equal
|
708
|
+
assert_equal "a", load_spec.name
|
708
709
|
assert_equal Gem::Version.new(1), load_spec.version
|
709
710
|
assert_equal @current_version, load_spec.specification_version
|
710
711
|
end
|
@@ -783,20 +784,20 @@ dependencies: []
|
|
783
784
|
end
|
784
785
|
|
785
786
|
def test_self_load_relative
|
786
|
-
File.open
|
787
|
+
File.open "a-2.gemspec", "w" do |io|
|
787
788
|
io.write @a2.to_ruby_for_cache
|
788
789
|
end
|
789
790
|
|
790
|
-
spec = Gem::Specification.load
|
791
|
+
spec = Gem::Specification.load "a-2.gemspec"
|
791
792
|
|
792
793
|
@a2.files.clear
|
793
794
|
|
794
795
|
assert_equal @a2, spec
|
795
796
|
|
796
|
-
assert_equal File.join(@tempdir,
|
797
|
+
assert_equal File.join(@tempdir, "a-2.gemspec"), spec.loaded_from
|
797
798
|
end
|
798
799
|
|
799
|
-
if RUBY_ENGINE ==
|
800
|
+
if RUBY_ENGINE == "ruby" && RUBY_VERSION < "2.7"
|
800
801
|
def test_self_load_tainted
|
801
802
|
full_path = @a2.spec_file
|
802
803
|
write_file full_path do |io|
|
@@ -874,13 +875,13 @@ dependencies: []
|
|
874
875
|
end
|
875
876
|
|
876
877
|
def test_self_load_utf8_with_ascii_encoding
|
877
|
-
with_internal_encoding(
|
878
|
+
with_internal_encoding("US-ASCII") do
|
878
879
|
spec2 = @a2.dup
|
879
880
|
bin = "\u5678".dup
|
880
881
|
spec2.authors = [bin]
|
881
882
|
full_path = spec2.spec_file
|
882
883
|
write_file full_path do |io|
|
883
|
-
io.write spec2.to_ruby_for_cache.force_encoding(
|
884
|
+
io.write spec2.to_ruby_for_cache.force_encoding("BINARY").sub("\\u{5678}", bin.force_encoding("BINARY"))
|
884
885
|
end
|
885
886
|
|
886
887
|
spec = Gem::Specification.load full_path
|
@@ -895,10 +896,10 @@ dependencies: []
|
|
895
896
|
spec = Gem::Deprecate.skip_during do
|
896
897
|
eval LEGACY_RUBY_SPEC
|
897
898
|
end
|
898
|
-
assert_equal
|
899
|
-
assert_equal
|
899
|
+
assert_equal "keyedlist", spec.name
|
900
|
+
assert_equal "0.4.0", spec.version.to_s
|
900
901
|
assert_kind_of Time, spec.date
|
901
|
-
assert spec.required_ruby_version.satisfied_by?(Gem::Version.new(
|
902
|
+
assert spec.required_ruby_version.satisfied_by?(Gem::Version.new("1"))
|
902
903
|
assert_equal false, spec.has_unit_tests?
|
903
904
|
end
|
904
905
|
|
@@ -933,9 +934,9 @@ dependencies: []
|
|
933
934
|
|
934
935
|
def test_self_outdated
|
935
936
|
spec_fetcher do |fetcher|
|
936
|
-
fetcher.download
|
937
|
+
fetcher.download "a", 4
|
937
938
|
|
938
|
-
fetcher.spec
|
939
|
+
fetcher.spec "a", 3
|
939
940
|
end
|
940
941
|
|
941
942
|
assert_equal %w[a], Gem::Specification.outdated
|
@@ -943,16 +944,16 @@ dependencies: []
|
|
943
944
|
|
944
945
|
def test_self_outdated_and_latest_remotes
|
945
946
|
spec_fetcher do |fetcher|
|
946
|
-
fetcher.download
|
947
|
-
fetcher.download
|
947
|
+
fetcher.download "a", 4
|
948
|
+
fetcher.download "b", 3
|
948
949
|
|
949
|
-
fetcher.spec
|
950
|
-
fetcher.spec
|
950
|
+
fetcher.spec "a", "3.a"
|
951
|
+
fetcher.spec "b", 2
|
951
952
|
end
|
952
953
|
|
953
954
|
expected = [
|
954
|
-
[Gem::Specification.stubs.find {|s| s.full_name ==
|
955
|
-
[Gem::Specification.stubs.find {|s| s.full_name ==
|
955
|
+
[Gem::Specification.stubs.find {|s| s.full_name == "a-3.a" }, v(4)],
|
956
|
+
[Gem::Specification.stubs.find {|s| s.full_name == "b-2" }, v(3)],
|
956
957
|
]
|
957
958
|
|
958
959
|
assert_equal expected, Gem::Specification.outdated_and_latest_version.to_a
|
@@ -961,18 +962,18 @@ dependencies: []
|
|
961
962
|
def test_self_remove_spec
|
962
963
|
install_specs @a1
|
963
964
|
|
964
|
-
assert_includes Gem::Specification.all_names,
|
965
|
-
assert_includes Gem::Specification.stubs.map {|s| s.full_name },
|
965
|
+
assert_includes Gem::Specification.all_names, "a-1"
|
966
|
+
assert_includes Gem::Specification.stubs.map {|s| s.full_name }, "a-1"
|
966
967
|
|
967
968
|
uninstall_gem @a1
|
968
969
|
Gem::Specification.reset
|
969
970
|
|
970
|
-
refute_includes Gem::Specification.all_names,
|
971
|
-
refute_includes Gem::Specification.stubs.map {|s| s.full_name },
|
971
|
+
refute_includes Gem::Specification.all_names, "a-1"
|
972
|
+
refute_includes Gem::Specification.stubs.map {|s| s.full_name }, "a-1"
|
972
973
|
end
|
973
974
|
|
974
975
|
def test_self_remove_spec_removed
|
975
|
-
File.open @a1.spec_file,
|
976
|
+
File.open @a1.spec_file, "w" do |io|
|
976
977
|
io.write @a1.to_ruby
|
977
978
|
end
|
978
979
|
|
@@ -982,40 +983,40 @@ dependencies: []
|
|
982
983
|
|
983
984
|
Gem::Specification.reset
|
984
985
|
|
985
|
-
refute_includes Gem::Specification.all_names,
|
986
|
-
refute_includes Gem::Specification.stubs.map {|s| s.full_name },
|
986
|
+
refute_includes Gem::Specification.all_names, "a-1"
|
987
|
+
refute_includes Gem::Specification.stubs.map {|s| s.full_name }, "a-1"
|
987
988
|
end
|
988
989
|
|
989
990
|
def test_self_stubs_for_lazy_loading
|
990
991
|
Gem.loaded_specs.clear
|
991
992
|
Gem::Specification.class_variable_set(:@@stubs, nil)
|
992
993
|
|
993
|
-
dir_standard_specs = File.join Gem.dir,
|
994
|
+
dir_standard_specs = File.join Gem.dir, "specifications"
|
994
995
|
|
995
|
-
save_gemspec(
|
996
|
-
save_gemspec(
|
996
|
+
save_gemspec("a-1", "1", dir_standard_specs) {|s| s.name = "a" }
|
997
|
+
save_gemspec("b-1", "1", dir_standard_specs) {|s| s.name = "b" }
|
997
998
|
|
998
|
-
assert_equal [
|
999
|
+
assert_equal ["a-1"], Gem::Specification.stubs_for("a").map {|s| s.full_name }
|
999
1000
|
assert_equal 1, Gem::Specification.class_variable_get(:@@stubs_by_name).length
|
1000
|
-
assert_equal [
|
1001
|
+
assert_equal ["b-1"], Gem::Specification.stubs_for("b").map {|s| s.full_name }
|
1001
1002
|
assert_equal 2, Gem::Specification.class_variable_get(:@@stubs_by_name).length
|
1002
1003
|
|
1003
1004
|
assert_equal(
|
1004
|
-
Gem::Specification.stubs_for(
|
1005
|
-
Gem::Specification.stubs_for(
|
1005
|
+
Gem::Specification.stubs_for("a").map {|s| s.object_id },
|
1006
|
+
Gem::Specification.stubs_for("a").map {|s| s.object_id }
|
1006
1007
|
)
|
1007
1008
|
|
1008
|
-
Gem.loaded_specs.delete
|
1009
|
-
Gem.loaded_specs.delete
|
1009
|
+
Gem.loaded_specs.delete "a"
|
1010
|
+
Gem.loaded_specs.delete "b"
|
1010
1011
|
Gem::Specification.class_variable_set(:@@stubs, nil)
|
1011
1012
|
end
|
1012
1013
|
|
1013
1014
|
def test_self_stubs_for_no_lazy_loading_after_all_specs_setup
|
1014
|
-
Gem::Specification.all = [util_spec(
|
1015
|
+
Gem::Specification.all = [util_spec("a", "1")]
|
1015
1016
|
|
1016
|
-
save_gemspec(
|
1017
|
+
save_gemspec("b-1", "1", File.join(Gem.dir, "specifications")) {|s| s.name = "b" }
|
1017
1018
|
|
1018
|
-
assert_equal [], Gem::Specification.stubs_for(
|
1019
|
+
assert_equal [], Gem::Specification.stubs_for("b").map {|s| s.full_name }
|
1019
1020
|
end
|
1020
1021
|
|
1021
1022
|
def test_self_stubs_for_mult_platforms
|
@@ -1025,30 +1026,30 @@ dependencies: []
|
|
1025
1026
|
orig_platform = Gem.platforms.dup
|
1026
1027
|
|
1027
1028
|
# create user spec
|
1028
|
-
user_spec_dir = File.join Gem.user_dir,
|
1029
|
+
user_spec_dir = File.join Gem.user_dir, "specifications"
|
1029
1030
|
FileUtils.mkdir_p(user_spec_dir) unless Dir.exist? user_spec_dir
|
1030
1031
|
# dirs doesn't include user ?
|
1031
1032
|
Gem::Specification.dirs << user_spec_dir
|
1032
1033
|
|
1033
|
-
gem =
|
1034
|
-
v =
|
1035
|
-
platforms = [
|
1034
|
+
gem = "mingw"
|
1035
|
+
v = "1.1.1"
|
1036
|
+
platforms = ["x86-mingw32", "x64-mingw32"]
|
1036
1037
|
|
1037
1038
|
#create specs
|
1038
1039
|
platforms.each do |plat|
|
1039
1040
|
spec = Gem::Specification.new(gem, v) {|s| s.platform = plat }
|
1040
|
-
File.open File.join(user_spec_dir, "#{gem}-#{v}-#{plat}.gemspec"),
|
1041
|
+
File.open File.join(user_spec_dir, "#{gem}-#{v}-#{plat}.gemspec"), "w" do |io|
|
1041
1042
|
io.write spec.to_ruby
|
1042
1043
|
end
|
1043
1044
|
end
|
1044
1045
|
|
1045
1046
|
platforms.each do |plat|
|
1046
1047
|
cur_plat = Gem::Platform.new plat
|
1047
|
-
Gem.platforms = [
|
1048
|
+
Gem.platforms = ["ruby", cur_plat]
|
1048
1049
|
|
1049
1050
|
Gem::Specification.class_variable_set :@@stubs, nil
|
1050
1051
|
Gem::Specification.stubs if plat == platforms.last # test loading via stubs
|
1051
|
-
t = Gem::Specification.stubs_for
|
1052
|
+
t = Gem::Specification.stubs_for "mingw"
|
1052
1053
|
|
1053
1054
|
assert_equal 1, t.length
|
1054
1055
|
assert_equal cur_plat, t.first.platform
|
@@ -1058,29 +1059,37 @@ dependencies: []
|
|
1058
1059
|
end
|
1059
1060
|
|
1060
1061
|
def test_self_stubs_returns_only_specified_named_specs
|
1061
|
-
dir_standard_specs = File.join Gem.dir,
|
1062
|
+
dir_standard_specs = File.join Gem.dir, "specifications"
|
1062
1063
|
|
1063
|
-
save_gemspec(
|
1064
|
-
save_gemspec(
|
1065
|
-
save_gemspec(
|
1064
|
+
save_gemspec("a-1", "1", dir_standard_specs) {|s| s.name = "a" }
|
1065
|
+
save_gemspec("a-2", "2", dir_standard_specs) {|s| s.name = "a" }
|
1066
|
+
save_gemspec("a-a", "3", dir_standard_specs) {|s| s.name = "a-a" }
|
1066
1067
|
|
1067
|
-
assert_equal [
|
1068
|
+
assert_equal ["a-1", "a-2"], Gem::Specification.stubs_for("a").map(&:full_name).sort
|
1068
1069
|
end
|
1069
1070
|
|
1070
1071
|
def test_handles_private_null_type
|
1071
|
-
|
1072
|
+
yaml_defined = Object.const_defined?("YAML")
|
1073
|
+
|
1074
|
+
path = File.expand_path "data/pry-0.4.7.gemspec.rz", __dir__
|
1072
1075
|
|
1073
1076
|
data = Marshal.load Gem::Util.inflate(Gem.read_binary(path))
|
1074
1077
|
|
1075
1078
|
assert_instance_of Gem::Specification, data
|
1079
|
+
|
1080
|
+
assert_equal(yaml_defined, Object.const_defined?("YAML"))
|
1076
1081
|
end
|
1077
1082
|
|
1078
1083
|
def test_handles_dependencies_with_syck_requirements_bug
|
1079
|
-
|
1084
|
+
yaml_defined = Object.const_defined?("YAML")
|
1085
|
+
|
1086
|
+
path = File.expand_path "data/excon-0.7.7.gemspec.rz", __dir__
|
1080
1087
|
|
1081
1088
|
data = Marshal.load Gem::Util.inflate(Gem.read_binary(path))
|
1082
1089
|
|
1083
1090
|
assert_instance_of Gem::Specification, data
|
1091
|
+
|
1092
|
+
assert_equal(yaml_defined, Object.const_defined?("YAML"))
|
1084
1093
|
end
|
1085
1094
|
|
1086
1095
|
def test_initialize
|
@@ -1102,9 +1111,9 @@ dependencies: []
|
|
1102
1111
|
assert_equal [], spec.extensions
|
1103
1112
|
assert_equal [], spec.requirements
|
1104
1113
|
assert_equal [], spec.dependencies
|
1105
|
-
assert_equal
|
1106
|
-
assert_equal
|
1107
|
-
assert_equal
|
1114
|
+
assert_equal "bin", spec.bindir
|
1115
|
+
assert_equal ">= 0", spec.required_ruby_version.to_s
|
1116
|
+
assert_equal ">= 0", spec.required_rubygems_version.to_s
|
1108
1117
|
end
|
1109
1118
|
|
1110
1119
|
def test_initialize_future
|
@@ -1126,18 +1135,18 @@ dependencies: []
|
|
1126
1135
|
spec = Gem::Specification.new do |s|
|
1127
1136
|
s.name = "blah"
|
1128
1137
|
s.version = "1.3.5"
|
1129
|
-
s.summary =
|
1130
|
-
s.description =
|
1131
|
-
s.authors =
|
1132
|
-
s.licenses =
|
1133
|
-
s.files =
|
1134
|
-
s.test_files =
|
1135
|
-
s.rdoc_options =
|
1136
|
-
s.extra_rdoc_files =
|
1137
|
-
s.executables =
|
1138
|
-
s.extensions =
|
1139
|
-
s.requirements =
|
1140
|
-
s.add_dependency
|
1138
|
+
s.summary = "summary"
|
1139
|
+
s.description = "description"
|
1140
|
+
s.authors = "author a", "author b"
|
1141
|
+
s.licenses = "BSD-2-Clause"
|
1142
|
+
s.files = "lib/file.rb"
|
1143
|
+
s.test_files = "test/file.rb"
|
1144
|
+
s.rdoc_options = "--foo"
|
1145
|
+
s.extra_rdoc_files = "README.txt"
|
1146
|
+
s.executables = "exec"
|
1147
|
+
s.extensions = "ext/extconf.rb"
|
1148
|
+
s.requirements = "requirement"
|
1149
|
+
s.add_dependency "some_gem"
|
1141
1150
|
end
|
1142
1151
|
|
1143
1152
|
dup_spec = spec.dup
|
@@ -1151,84 +1160,93 @@ dependencies: []
|
|
1151
1160
|
assert_equal Gem::Platform::RUBY, spec.platform
|
1152
1161
|
assert_same spec.platform, dup_spec.platform
|
1153
1162
|
|
1154
|
-
assert_equal
|
1163
|
+
assert_equal "summary", spec.summary
|
1155
1164
|
assert_same spec.summary, dup_spec.summary
|
1156
1165
|
|
1157
1166
|
assert_equal %w[README.txt bin/exec ext/extconf.rb lib/file.rb
|
1158
1167
|
test/file.rb].sort,
|
1159
1168
|
spec.files
|
1160
|
-
refute_same spec.files, dup_spec.files,
|
1169
|
+
refute_same spec.files, dup_spec.files, "files"
|
1161
1170
|
|
1162
1171
|
assert_equal %w[test/file.rb], spec.test_files
|
1163
|
-
refute_same spec.test_files, dup_spec.test_files,
|
1172
|
+
refute_same spec.test_files, dup_spec.test_files, "test_files"
|
1164
1173
|
|
1165
1174
|
assert_equal %w[--foo], spec.rdoc_options
|
1166
|
-
refute_same spec.rdoc_options, dup_spec.rdoc_options,
|
1175
|
+
refute_same spec.rdoc_options, dup_spec.rdoc_options, "rdoc_options"
|
1167
1176
|
|
1168
1177
|
assert_equal %w[README.txt], spec.extra_rdoc_files
|
1169
1178
|
refute_same spec.extra_rdoc_files, dup_spec.extra_rdoc_files,
|
1170
|
-
|
1179
|
+
"extra_rdoc_files"
|
1171
1180
|
|
1172
1181
|
assert_equal %w[exec], spec.executables
|
1173
|
-
refute_same spec.executables, dup_spec.executables,
|
1182
|
+
refute_same spec.executables, dup_spec.executables, "executables"
|
1174
1183
|
|
1175
1184
|
assert_equal %w[ext/extconf.rb], spec.extensions
|
1176
|
-
refute_same spec.extensions, dup_spec.extensions,
|
1185
|
+
refute_same spec.extensions, dup_spec.extensions, "extensions"
|
1177
1186
|
|
1178
1187
|
assert_equal %w[requirement], spec.requirements
|
1179
|
-
refute_same spec.requirements, dup_spec.requirements,
|
1188
|
+
refute_same spec.requirements, dup_spec.requirements, "requirements"
|
1180
1189
|
|
1181
|
-
assert_equal [Gem::Dependency.new(
|
1190
|
+
assert_equal [Gem::Dependency.new("some_gem", Gem::Requirement.default)],
|
1182
1191
|
spec.dependencies
|
1183
|
-
refute_same spec.dependencies, dup_spec.dependencies,
|
1192
|
+
refute_same spec.dependencies, dup_spec.dependencies, "dependencies"
|
1184
1193
|
|
1185
|
-
assert_equal
|
1194
|
+
assert_equal "bin", spec.bindir
|
1186
1195
|
assert_same spec.bindir, dup_spec.bindir
|
1187
1196
|
|
1188
|
-
assert_equal
|
1197
|
+
assert_equal ">= 0", spec.required_ruby_version.to_s
|
1189
1198
|
assert_same spec.required_ruby_version, dup_spec.required_ruby_version
|
1190
1199
|
|
1191
|
-
assert_equal
|
1200
|
+
assert_equal ">= 0", spec.required_rubygems_version.to_s
|
1192
1201
|
assert_same spec.required_rubygems_version,
|
1193
1202
|
dup_spec.required_rubygems_version
|
1194
1203
|
end
|
1195
1204
|
|
1196
1205
|
def test_initialize_copy_broken
|
1197
1206
|
spec = Gem::Specification.new do |s|
|
1198
|
-
s.name =
|
1199
|
-
s.version =
|
1207
|
+
s.name = "a"
|
1208
|
+
s.version = "1"
|
1200
1209
|
end
|
1201
1210
|
|
1202
1211
|
spec.instance_variable_set :@licenses, (class << (Object.new);self;end)
|
1203
|
-
spec.loaded_from =
|
1212
|
+
spec.loaded_from = "/path/to/file"
|
1204
1213
|
|
1205
1214
|
e = assert_raise Gem::FormatException do
|
1206
1215
|
spec.dup
|
1207
1216
|
end
|
1208
1217
|
|
1209
|
-
assert_equal
|
1210
|
-
assert_equal
|
1218
|
+
assert_equal "a-1 has an invalid value for @licenses", e.message
|
1219
|
+
assert_equal "/path/to/file", e.file_path
|
1211
1220
|
end
|
1212
1221
|
|
1213
1222
|
def test_initialize_prerelease_version_before_name
|
1214
1223
|
spec = Gem::Specification.new do |s|
|
1215
|
-
s.version =
|
1216
|
-
s.name =
|
1224
|
+
s.version = "1.0.0.dev"
|
1225
|
+
s.name = "a"
|
1217
1226
|
end
|
1218
1227
|
|
1219
1228
|
assert_equal "a", spec.name
|
1220
1229
|
assert_equal "1.0.0.dev", spec.version.to_s
|
1221
1230
|
end
|
1222
1231
|
|
1232
|
+
def test_initialize_nil_version
|
1233
|
+
expected = "nil versions are discouraged and will be deprecated in Rubygems 4\n"
|
1234
|
+
actual_stdout, actual_stderr = capture_output do
|
1235
|
+
Gem::Specification.new.version = nil
|
1236
|
+
end
|
1237
|
+
assert_empty actual_stdout
|
1238
|
+
assert_equal(expected, actual_stderr)
|
1239
|
+
end
|
1240
|
+
|
1223
1241
|
def test__dump
|
1224
1242
|
@a2.platform = Gem::Platform.local
|
1225
|
-
@a2.instance_variable_set :@original_platform,
|
1243
|
+
@a2.instance_variable_set :@original_platform, "old_platform"
|
1226
1244
|
|
1227
1245
|
data = Marshal.dump @a2
|
1228
1246
|
|
1229
1247
|
same_spec = Marshal.load data
|
1230
1248
|
|
1231
|
-
assert_equal
|
1249
|
+
assert_equal "old_platform", same_spec.original_platform
|
1232
1250
|
end
|
1233
1251
|
|
1234
1252
|
def test_activate
|
@@ -1247,7 +1265,7 @@ dependencies: []
|
|
1247
1265
|
end
|
1248
1266
|
|
1249
1267
|
def test_add_dependency_from_existing_dependency
|
1250
|
-
dep = Gem::Dependency.new("existing_dep", Gem::Requirement.new(
|
1268
|
+
dep = Gem::Dependency.new("existing_dep", Gem::Requirement.new("> 1"), :runtime)
|
1251
1269
|
spec = Gem::Specification.new {|s| s.add_dependency dep }
|
1252
1270
|
assert_equal dep, spec.dependencies.first
|
1253
1271
|
end
|
@@ -1262,22 +1280,22 @@ dependencies: []
|
|
1262
1280
|
end
|
1263
1281
|
|
1264
1282
|
def test_author
|
1265
|
-
assert_equal
|
1283
|
+
assert_equal "A User", @a1.author
|
1266
1284
|
end
|
1267
1285
|
|
1268
1286
|
def test_authors
|
1269
|
-
assert_equal [
|
1287
|
+
assert_equal ["A User"], @a1.authors
|
1270
1288
|
end
|
1271
1289
|
|
1272
1290
|
def test_bindir_equals
|
1273
|
-
@a1.bindir =
|
1291
|
+
@a1.bindir = "apps"
|
1274
1292
|
|
1275
|
-
assert_equal
|
1293
|
+
assert_equal "apps", @a1.bindir
|
1276
1294
|
end
|
1277
1295
|
|
1278
1296
|
def test_bindir_equals_nil
|
1279
1297
|
@a2.bindir = nil
|
1280
|
-
@a2.executable =
|
1298
|
+
@a2.executable = "app"
|
1281
1299
|
|
1282
1300
|
assert_nil @a2.bindir
|
1283
1301
|
assert_equal %w[app lib/code.rb].sort, @a2.files
|
@@ -1313,14 +1331,14 @@ dependencies: []
|
|
1313
1331
|
|
1314
1332
|
assert_empty @ext.build_args
|
1315
1333
|
|
1316
|
-
File.open @ext.build_info_file,
|
1334
|
+
File.open @ext.build_info_file, "w" do |io|
|
1317
1335
|
io.puts
|
1318
1336
|
end
|
1319
1337
|
|
1320
1338
|
assert_empty @ext.build_args
|
1321
1339
|
|
1322
|
-
File.open @ext.build_info_file,
|
1323
|
-
io.puts
|
1340
|
+
File.open @ext.build_info_file, "w" do |io|
|
1341
|
+
io.puts "--with-foo-dir=wherever"
|
1324
1342
|
end
|
1325
1343
|
|
1326
1344
|
assert_equal %w[--with-foo-dir=wherever], @ext.build_args
|
@@ -1330,13 +1348,13 @@ dependencies: []
|
|
1330
1348
|
pend "extensions don't quite work on jruby" if Gem.java_platform?
|
1331
1349
|
ext_spec
|
1332
1350
|
|
1333
|
-
assert_path_not_exist @ext.extension_dir,
|
1334
|
-
refute_empty @ext.extensions,
|
1351
|
+
assert_path_not_exist @ext.extension_dir, "sanity check"
|
1352
|
+
refute_empty @ext.extensions, "sanity check"
|
1335
1353
|
|
1336
1354
|
extconf_rb = File.join @ext.gem_dir, @ext.extensions.first
|
1337
1355
|
FileUtils.mkdir_p File.dirname extconf_rb
|
1338
1356
|
|
1339
|
-
File.open extconf_rb,
|
1357
|
+
File.open extconf_rb, "w" do |f|
|
1340
1358
|
f.write <<-'RUBY'
|
1341
1359
|
File.open 'Makefile', 'w' do |f|
|
1342
1360
|
f.puts "clean:\n\techo clean"
|
@@ -1352,13 +1370,13 @@ dependencies: []
|
|
1352
1370
|
end
|
1353
1371
|
|
1354
1372
|
def test_default_spec_stub_is_marked_default
|
1355
|
-
default = new_default_spec
|
1373
|
+
default = new_default_spec "default", 2
|
1356
1374
|
install_default_gems default
|
1357
1375
|
|
1358
|
-
stub = Gem::Specification.stubs.find {|s| s.name ==
|
1376
|
+
stub = Gem::Specification.stubs.find {|s| s.name == "default" }
|
1359
1377
|
assert_predicate stub, :default_gem?
|
1360
1378
|
|
1361
|
-
stub = Gem::Specification.find_all_by_name(
|
1379
|
+
stub = Gem::Specification.find_all_by_name("default").first
|
1362
1380
|
assert_predicate stub, :default_gem?
|
1363
1381
|
end
|
1364
1382
|
|
@@ -1366,28 +1384,28 @@ dependencies: []
|
|
1366
1384
|
pend "extensions don't quite work on jruby" if Gem.java_platform?
|
1367
1385
|
ext_spec
|
1368
1386
|
|
1369
|
-
refute_empty @ext.extensions,
|
1387
|
+
refute_empty @ext.extensions, "sanity check"
|
1370
1388
|
|
1371
1389
|
gem_build_complete =
|
1372
|
-
File.join @ext.extension_dir,
|
1390
|
+
File.join @ext.extension_dir, "gem.build_complete"
|
1373
1391
|
|
1374
1392
|
FileUtils.mkdir_p @ext.extension_dir
|
1375
1393
|
FileUtils.touch gem_build_complete
|
1376
1394
|
|
1377
1395
|
@ext.build_extensions
|
1378
1396
|
|
1379
|
-
gem_make_out = File.join @ext.extension_dir,
|
1397
|
+
gem_make_out = File.join @ext.extension_dir, "gem_make.out"
|
1380
1398
|
assert_path_not_exist gem_make_out
|
1381
1399
|
end
|
1382
1400
|
|
1383
1401
|
def test_build_extensions_default_gem
|
1384
|
-
spec = new_default_spec
|
1385
|
-
spec.extensions <<
|
1402
|
+
spec = new_default_spec "default", 1
|
1403
|
+
spec.extensions << "extconf.rb"
|
1386
1404
|
|
1387
1405
|
extconf_rb = File.join spec.gem_dir, spec.extensions.first
|
1388
1406
|
FileUtils.mkdir_p File.dirname extconf_rb
|
1389
1407
|
|
1390
|
-
File.open extconf_rb,
|
1408
|
+
File.open extconf_rb, "w" do |f|
|
1391
1409
|
f.write <<-'RUBY'
|
1392
1410
|
File.open 'Makefile', 'w' do |f|
|
1393
1411
|
f.puts "default:\n\techo built"
|
@@ -1405,7 +1423,7 @@ dependencies: []
|
|
1405
1423
|
pend "extensions don't quite work on jruby" if Gem.java_platform?
|
1406
1424
|
ext_spec
|
1407
1425
|
|
1408
|
-
refute_empty @ext.extensions,
|
1426
|
+
refute_empty @ext.extensions, "sanity check"
|
1409
1427
|
|
1410
1428
|
assert_raise Gem::Ext::BuildError do
|
1411
1429
|
@ext.build_extensions
|
@@ -1413,18 +1431,18 @@ dependencies: []
|
|
1413
1431
|
end
|
1414
1432
|
|
1415
1433
|
def test_build_extensions_extensions_dir_unwritable
|
1416
|
-
pend
|
1417
|
-
pend
|
1434
|
+
pend "chmod not supported" if Gem.win_platform?
|
1435
|
+
pend "skipped in root privilege" if Process.uid.zero?
|
1418
1436
|
|
1419
1437
|
pend "extensions don't quite work on jruby" if Gem.java_platform?
|
1420
1438
|
ext_spec
|
1421
1439
|
|
1422
|
-
refute_empty @ext.extensions,
|
1440
|
+
refute_empty @ext.extensions, "sanity check"
|
1423
1441
|
|
1424
1442
|
extconf_rb = File.join @ext.gem_dir, @ext.extensions.first
|
1425
1443
|
FileUtils.mkdir_p File.dirname extconf_rb
|
1426
1444
|
|
1427
|
-
File.open extconf_rb,
|
1445
|
+
File.open extconf_rb, "w" do |f|
|
1428
1446
|
f.write <<-'RUBY'
|
1429
1447
|
File.open 'Makefile', 'w' do |f|
|
1430
1448
|
f.puts "clean:\n\techo clean"
|
@@ -1434,30 +1452,30 @@ dependencies: []
|
|
1434
1452
|
RUBY
|
1435
1453
|
end
|
1436
1454
|
|
1437
|
-
FileUtils.mkdir_p File.join @ext.base_dir,
|
1455
|
+
FileUtils.mkdir_p File.join @ext.base_dir, "extensions"
|
1438
1456
|
FileUtils.chmod 0555, @ext.base_dir
|
1439
|
-
FileUtils.chmod 0555, File.join(@ext.base_dir,
|
1457
|
+
FileUtils.chmod 0555, File.join(@ext.base_dir, "extensions")
|
1440
1458
|
|
1441
1459
|
@ext.build_extensions
|
1442
1460
|
assert_path_not_exist @ext.extension_dir
|
1443
1461
|
ensure
|
1444
|
-
unless ($DEBUG
|
1445
|
-
FileUtils.chmod 0755, File.join(@ext.base_dir,
|
1462
|
+
unless ($DEBUG || win_platform? || Process.uid.zero? || Gem.java_platform?)
|
1463
|
+
FileUtils.chmod 0755, File.join(@ext.base_dir, "extensions")
|
1446
1464
|
FileUtils.chmod 0755, @ext.base_dir
|
1447
1465
|
end
|
1448
1466
|
end
|
1449
1467
|
|
1450
1468
|
def test_build_extensions_no_extensions_dir_unwritable
|
1451
|
-
pend
|
1469
|
+
pend "chmod not supported" if Gem.win_platform?
|
1452
1470
|
pend "extensions don't quite work on jruby" if Gem.java_platform?
|
1453
1471
|
ext_spec
|
1454
1472
|
|
1455
|
-
refute_empty @ext.extensions,
|
1473
|
+
refute_empty @ext.extensions, "sanity check"
|
1456
1474
|
|
1457
1475
|
extconf_rb = File.join @ext.gem_dir, @ext.extensions.first
|
1458
1476
|
FileUtils.mkdir_p File.dirname extconf_rb
|
1459
1477
|
|
1460
|
-
File.open extconf_rb,
|
1478
|
+
File.open extconf_rb, "w" do |f|
|
1461
1479
|
f.write <<-'RUBY'
|
1462
1480
|
File.open 'Makefile', 'w' do |f|
|
1463
1481
|
f.puts "clean:\n\techo clean"
|
@@ -1467,20 +1485,20 @@ dependencies: []
|
|
1467
1485
|
RUBY
|
1468
1486
|
end
|
1469
1487
|
|
1470
|
-
FileUtils.rm_r File.join @gemhome,
|
1488
|
+
FileUtils.rm_r File.join @gemhome, "extensions"
|
1471
1489
|
FileUtils.chmod 0555, @gemhome
|
1472
1490
|
|
1473
1491
|
@ext.build_extensions
|
1474
1492
|
|
1475
|
-
gem_make_out = File.join @ext.extension_dir,
|
1493
|
+
gem_make_out = File.join @ext.extension_dir, "gem_make.out"
|
1476
1494
|
assert_path_not_exist gem_make_out
|
1477
1495
|
ensure
|
1478
1496
|
FileUtils.chmod 0755, @gemhome
|
1479
1497
|
end
|
1480
1498
|
|
1481
1499
|
def test_build_extensions_none
|
1482
|
-
assert_path_not_exist @a1.extension_dir,
|
1483
|
-
assert_empty @a1.extensions,
|
1500
|
+
assert_path_not_exist @a1.extension_dir, "sanity check"
|
1501
|
+
assert_empty @a1.extensions, "sanity check"
|
1484
1502
|
|
1485
1503
|
@a1.build_extensions
|
1486
1504
|
|
@@ -1494,7 +1512,7 @@ dependencies: []
|
|
1494
1512
|
extconf_rb = File.join @ext.gem_dir, @ext.extensions.first
|
1495
1513
|
FileUtils.mkdir_p File.dirname extconf_rb
|
1496
1514
|
|
1497
|
-
File.open extconf_rb,
|
1515
|
+
File.open extconf_rb, "w" do |f|
|
1498
1516
|
f.write <<-'RUBY'
|
1499
1517
|
File.open 'Makefile', 'w' do |f|
|
1500
1518
|
f.puts "clean:\n\techo clean"
|
@@ -1504,22 +1522,22 @@ dependencies: []
|
|
1504
1522
|
RUBY
|
1505
1523
|
end
|
1506
1524
|
|
1507
|
-
refute_empty @ext.extensions,
|
1525
|
+
refute_empty @ext.extensions, "sanity check"
|
1508
1526
|
|
1509
|
-
@ext.installed_by_version = v(
|
1527
|
+
@ext.installed_by_version = v("2.2.0.preview.2")
|
1510
1528
|
|
1511
1529
|
@ext.build_extensions
|
1512
1530
|
|
1513
|
-
gem_make_out = File.join @ext.extension_dir,
|
1531
|
+
gem_make_out = File.join @ext.extension_dir, "gem_make.out"
|
1514
1532
|
assert_path_exist gem_make_out
|
1515
1533
|
end
|
1516
1534
|
|
1517
1535
|
def test_contains_requirable_file_eh
|
1518
|
-
code_rb = File.join @a1.gem_dir,
|
1536
|
+
code_rb = File.join @a1.gem_dir, "lib", "code.rb"
|
1519
1537
|
FileUtils.mkdir_p File.dirname code_rb
|
1520
1538
|
FileUtils.touch code_rb
|
1521
1539
|
|
1522
|
-
assert @a1.contains_requirable_file?
|
1540
|
+
assert @a1.contains_requirable_file? "code"
|
1523
1541
|
end
|
1524
1542
|
|
1525
1543
|
def test_contains_requirable_file_eh_extension
|
@@ -1527,7 +1545,7 @@ dependencies: []
|
|
1527
1545
|
ext_spec
|
1528
1546
|
|
1529
1547
|
_, err = capture_output do
|
1530
|
-
refute @ext.contains_requirable_file?
|
1548
|
+
refute @ext.contains_requirable_file? "nonexistent"
|
1531
1549
|
end
|
1532
1550
|
|
1533
1551
|
expected = "Ignoring ext-1 because its extensions are not built. " +
|
@@ -1540,7 +1558,7 @@ dependencies: []
|
|
1540
1558
|
ext_spec(platform: Gem::Platform.new("java"))
|
1541
1559
|
|
1542
1560
|
_, err = capture_output do
|
1543
|
-
refute @ext.contains_requirable_file?
|
1561
|
+
refute @ext.contains_requirable_file? "nonexistent"
|
1544
1562
|
end
|
1545
1563
|
|
1546
1564
|
assert_empty err
|
@@ -1556,13 +1574,13 @@ dependencies: []
|
|
1556
1574
|
end
|
1557
1575
|
|
1558
1576
|
def test_date_equals_string
|
1559
|
-
@a1.date =
|
1577
|
+
@a1.date = "2003-09-17"
|
1560
1578
|
assert_equal Time.utc(2003, 9, 17, 0,0,0), @a1.date
|
1561
1579
|
end
|
1562
1580
|
|
1563
1581
|
def test_date_equals_string_bad
|
1564
1582
|
assert_raise Gem::InvalidSpecificationException do
|
1565
|
-
@a1.date =
|
1583
|
+
@a1.date = "9/11/2003"
|
1566
1584
|
end
|
1567
1585
|
end
|
1568
1586
|
|
@@ -1609,7 +1627,7 @@ dependencies: []
|
|
1609
1627
|
|
1610
1628
|
assert_empty @gem.dependent_gems
|
1611
1629
|
|
1612
|
-
bonobo = util_spec
|
1630
|
+
bonobo = util_spec "bonobo", 1
|
1613
1631
|
install_gem bonobo
|
1614
1632
|
install_gem @gem
|
1615
1633
|
|
@@ -1621,11 +1639,11 @@ dependencies: []
|
|
1621
1639
|
end
|
1622
1640
|
|
1623
1641
|
def test_doc_dir
|
1624
|
-
assert_equal File.join(@gemhome,
|
1642
|
+
assert_equal File.join(@gemhome, "doc", "a-1"), @a1.doc_dir
|
1625
1643
|
end
|
1626
1644
|
|
1627
1645
|
def test_doc_dir_type
|
1628
|
-
assert_equal File.join(@gemhome,
|
1646
|
+
assert_equal File.join(@gemhome, "doc", "a-1", "ri"), @a1.doc_dir("ri")
|
1629
1647
|
end
|
1630
1648
|
|
1631
1649
|
def test_runtime_dependencies
|
@@ -1639,12 +1657,12 @@ dependencies: []
|
|
1639
1657
|
end
|
1640
1658
|
|
1641
1659
|
def test_description
|
1642
|
-
assert_equal
|
1660
|
+
assert_equal "This is a test description", @a1.description
|
1643
1661
|
end
|
1644
1662
|
|
1645
1663
|
def test_eql_eh
|
1646
|
-
g1 = util_spec
|
1647
|
-
g2 = util_spec
|
1664
|
+
g1 = util_spec "gem", 1
|
1665
|
+
g2 = util_spec "gem", 1
|
1648
1666
|
|
1649
1667
|
assert_equal g1, g2
|
1650
1668
|
assert_equal g1.hash, g2.hash
|
@@ -1653,47 +1671,47 @@ dependencies: []
|
|
1653
1671
|
|
1654
1672
|
def test_eql_eh_extensions
|
1655
1673
|
spec = @a1.dup
|
1656
|
-
spec.extensions =
|
1674
|
+
spec.extensions = "xx"
|
1657
1675
|
|
1658
1676
|
refute_operator @a1, :eql?, spec
|
1659
1677
|
refute_operator spec, :eql?, @a1
|
1660
1678
|
end
|
1661
1679
|
|
1662
1680
|
def test_executables
|
1663
|
-
@a1.executable =
|
1681
|
+
@a1.executable = "app"
|
1664
1682
|
assert_equal %w[app], @a1.executables
|
1665
1683
|
end
|
1666
1684
|
|
1667
1685
|
def test_executable_equals
|
1668
|
-
@a2.executable =
|
1669
|
-
assert_equal
|
1686
|
+
@a2.executable = "app"
|
1687
|
+
assert_equal "app", @a2.executable
|
1670
1688
|
assert_equal %w[bin/app lib/code.rb].sort, @a2.files
|
1671
1689
|
end
|
1672
1690
|
|
1673
1691
|
def test_extensions
|
1674
|
-
assert_equal [
|
1692
|
+
assert_equal ["ext/extconf.rb"], ext_spec.extensions
|
1675
1693
|
end
|
1676
1694
|
|
1677
1695
|
def test_extension_dir
|
1678
|
-
enable_shared, RbConfig::CONFIG[
|
1679
|
-
RbConfig::CONFIG[
|
1696
|
+
enable_shared, RbConfig::CONFIG["ENABLE_SHARED"] =
|
1697
|
+
RbConfig::CONFIG["ENABLE_SHARED"], "no"
|
1680
1698
|
|
1681
1699
|
ext_spec
|
1682
1700
|
|
1683
1701
|
refute_empty @ext.extensions
|
1684
1702
|
|
1685
1703
|
expected =
|
1686
|
-
File.join(@ext.base_dir,
|
1704
|
+
File.join(@ext.base_dir, "extensions", Gem::Platform.local.to_s,
|
1687
1705
|
"#{Gem.ruby_api_version}-static", @ext.full_name)
|
1688
1706
|
|
1689
1707
|
assert_equal expected, @ext.extension_dir
|
1690
1708
|
ensure
|
1691
|
-
RbConfig::CONFIG[
|
1709
|
+
RbConfig::CONFIG["ENABLE_SHARED"] = enable_shared
|
1692
1710
|
end
|
1693
1711
|
|
1694
1712
|
def test_extension_dir_override
|
1695
|
-
enable_shared, RbConfig::CONFIG[
|
1696
|
-
RbConfig::CONFIG[
|
1713
|
+
enable_shared, RbConfig::CONFIG["ENABLE_SHARED"] =
|
1714
|
+
RbConfig::CONFIG["ENABLE_SHARED"], "no"
|
1697
1715
|
|
1698
1716
|
class << Gem
|
1699
1717
|
alias orig_default_ext_dir_for default_ext_dir_for
|
@@ -1701,7 +1719,7 @@ dependencies: []
|
|
1701
1719
|
remove_method :default_ext_dir_for
|
1702
1720
|
|
1703
1721
|
def Gem.default_ext_dir_for(base_dir)
|
1704
|
-
|
1722
|
+
"elsewhere"
|
1705
1723
|
end
|
1706
1724
|
end
|
1707
1725
|
|
@@ -1709,11 +1727,11 @@ dependencies: []
|
|
1709
1727
|
|
1710
1728
|
refute_empty @ext.extensions
|
1711
1729
|
|
1712
|
-
expected = File.join @tempdir,
|
1730
|
+
expected = File.join @tempdir, "elsewhere", @ext.full_name
|
1713
1731
|
|
1714
1732
|
assert_equal expected, @ext.extension_dir
|
1715
1733
|
ensure
|
1716
|
-
RbConfig::CONFIG[
|
1734
|
+
RbConfig::CONFIG["ENABLE_SHARED"] = enable_shared
|
1717
1735
|
|
1718
1736
|
class << Gem
|
1719
1737
|
remove_method :default_ext_dir_for
|
@@ -1803,9 +1821,9 @@ dependencies: []
|
|
1803
1821
|
end
|
1804
1822
|
|
1805
1823
|
def test_for_cache
|
1806
|
-
@a2.add_runtime_dependency
|
1824
|
+
@a2.add_runtime_dependency "b", "1"
|
1807
1825
|
@a2.dependencies.first.instance_variable_set :@type, nil
|
1808
|
-
@a2.required_rubygems_version = Gem::Requirement.new
|
1826
|
+
@a2.required_rubygems_version = Gem::Requirement.new "> 0"
|
1809
1827
|
@a2.test_files = %w[test/test_b.rb]
|
1810
1828
|
|
1811
1829
|
refute_empty @a2.files
|
@@ -1821,11 +1839,11 @@ dependencies: []
|
|
1821
1839
|
end
|
1822
1840
|
|
1823
1841
|
def test_full_gem_path
|
1824
|
-
assert_equal File.join(@gemhome,
|
1842
|
+
assert_equal File.join(@gemhome, "gems", @a1.full_name), @a1.full_gem_path
|
1825
1843
|
|
1826
|
-
@a1.original_platform =
|
1844
|
+
@a1.original_platform = "mswin32"
|
1827
1845
|
|
1828
|
-
assert_equal File.join(@gemhome,
|
1846
|
+
assert_equal File.join(@gemhome, "gems", @a1.original_name),
|
1829
1847
|
@a1.full_gem_path
|
1830
1848
|
end
|
1831
1849
|
|
@@ -1838,40 +1856,40 @@ dependencies: []
|
|
1838
1856
|
end
|
1839
1857
|
|
1840
1858
|
def test_full_name
|
1841
|
-
assert_equal
|
1859
|
+
assert_equal "a-1", @a1.full_name
|
1842
1860
|
|
1843
1861
|
@a1 = Gem::Specification.new "a", 1
|
1844
|
-
@a1.platform = Gem::Platform.new [
|
1845
|
-
assert_equal
|
1862
|
+
@a1.platform = Gem::Platform.new ["universal", "darwin", nil]
|
1863
|
+
assert_equal "a-1-universal-darwin", @a1.full_name
|
1846
1864
|
|
1847
1865
|
@a1 = Gem::Specification.new "a", 1
|
1848
|
-
@a1.instance_variable_set :@new_platform,
|
1849
|
-
assert_equal
|
1866
|
+
@a1.instance_variable_set :@new_platform, "mswin32"
|
1867
|
+
assert_equal "a-1-mswin32", @a1.full_name, "legacy"
|
1850
1868
|
|
1851
1869
|
return if win_platform?
|
1852
1870
|
|
1853
1871
|
@a1 = Gem::Specification.new "a", 1
|
1854
|
-
@a1.platform =
|
1855
|
-
assert_equal
|
1872
|
+
@a1.platform = "current"
|
1873
|
+
assert_equal "a-1-x86-darwin-8", @a1.full_name
|
1856
1874
|
end
|
1857
1875
|
|
1858
1876
|
def test_full_name_windows
|
1859
1877
|
test_cases = {
|
1860
|
-
|
1861
|
-
|
1862
|
-
|
1878
|
+
"i386-mswin32" => "a-1-x86-mswin32-60",
|
1879
|
+
"i386-mswin32_80" => "a-1-x86-mswin32-80",
|
1880
|
+
"i386-mingw32" => "a-1-x86-mingw32",
|
1863
1881
|
}
|
1864
1882
|
|
1865
1883
|
test_cases.each do |arch, expected|
|
1866
1884
|
@a1 = Gem::Specification.new "a", 1
|
1867
1885
|
util_set_arch arch
|
1868
|
-
@a1.platform =
|
1886
|
+
@a1.platform = "current"
|
1869
1887
|
assert_equal expected, @a1.full_name
|
1870
1888
|
end
|
1871
1889
|
end
|
1872
1890
|
|
1873
1891
|
def test_gem_build_complete_path
|
1874
|
-
expected = File.join @a1.extension_dir,
|
1892
|
+
expected = File.join @a1.extension_dir, "gem.build_complete"
|
1875
1893
|
assert_equal expected, @a1.gem_build_complete_path
|
1876
1894
|
end
|
1877
1895
|
|
@@ -1915,23 +1933,23 @@ dependencies: []
|
|
1915
1933
|
end
|
1916
1934
|
|
1917
1935
|
def test_license
|
1918
|
-
assert_equal
|
1936
|
+
assert_equal "MIT", @a1.license
|
1919
1937
|
end
|
1920
1938
|
|
1921
1939
|
def test_licenses
|
1922
|
-
assert_equal [
|
1940
|
+
assert_equal ["MIT"], @a1.licenses
|
1923
1941
|
end
|
1924
1942
|
|
1925
1943
|
def test_name
|
1926
|
-
assert_equal
|
1944
|
+
assert_equal "a", @a1.name
|
1927
1945
|
end
|
1928
1946
|
|
1929
1947
|
def test_original_name
|
1930
|
-
assert_equal
|
1948
|
+
assert_equal "a-1", @a1.full_name
|
1931
1949
|
|
1932
|
-
@a1.platform =
|
1933
|
-
@a1.instance_variable_set :@original_platform,
|
1934
|
-
assert_equal
|
1950
|
+
@a1.platform = "i386-linux"
|
1951
|
+
@a1.instance_variable_set :@original_platform, "i386-linux"
|
1952
|
+
assert_equal "a-1-i386-linux", @a1.original_name
|
1935
1953
|
end
|
1936
1954
|
|
1937
1955
|
def test_platform
|
@@ -1960,10 +1978,10 @@ dependencies: []
|
|
1960
1978
|
assert_equal Gem::Platform::RUBY, @a1.platform
|
1961
1979
|
|
1962
1980
|
test_cases = {
|
1963
|
-
|
1964
|
-
|
1965
|
-
|
1966
|
-
|
1981
|
+
"i386-mswin32" => ["x86", "mswin32", "60"],
|
1982
|
+
"i386-mswin32_80" => ["x86", "mswin32", "80"],
|
1983
|
+
"i386-mingw32" => ["x86", "mingw32", nil ],
|
1984
|
+
"x86-darwin8" => ["x86", "darwin", "8" ],
|
1967
1985
|
}
|
1968
1986
|
|
1969
1987
|
test_cases.each do |arch, expected|
|
@@ -1980,29 +1998,29 @@ dependencies: []
|
|
1980
1998
|
end
|
1981
1999
|
|
1982
2000
|
def test_platform_equals_legacy
|
1983
|
-
@a1.platform =
|
1984
|
-
assert_equal Gem::Platform.new(
|
2001
|
+
@a1.platform = "mswin32"
|
2002
|
+
assert_equal Gem::Platform.new("x86-mswin32"), @a1.platform
|
1985
2003
|
|
1986
|
-
@a1.platform =
|
1987
|
-
assert_equal Gem::Platform.new(
|
2004
|
+
@a1.platform = "i586-linux"
|
2005
|
+
assert_equal Gem::Platform.new("x86-linux"), @a1.platform
|
1988
2006
|
|
1989
|
-
@a1.platform =
|
1990
|
-
assert_equal Gem::Platform.new(
|
2007
|
+
@a1.platform = "powerpc-darwin"
|
2008
|
+
assert_equal Gem::Platform.new("ppc-darwin"), @a1.platform
|
1991
2009
|
end
|
1992
2010
|
|
1993
2011
|
def test_prerelease_spec_adds_required_rubygems_version
|
1994
|
-
@prerelease = util_spec(
|
1995
|
-
refute @prerelease.required_rubygems_version.satisfied_by?(Gem::Version.new(
|
1996
|
-
assert @prerelease.required_rubygems_version.satisfied_by?(Gem::Version.new(
|
2012
|
+
@prerelease = util_spec("tardis", "2.2.0.a")
|
2013
|
+
refute @prerelease.required_rubygems_version.satisfied_by?(Gem::Version.new("1.3.1"))
|
2014
|
+
assert @prerelease.required_rubygems_version.satisfied_by?(Gem::Version.new("1.4.0"))
|
1997
2015
|
end
|
1998
2016
|
|
1999
2017
|
def test_require_paths
|
2000
|
-
enable_shared
|
2018
|
+
enable_shared "no" do
|
2001
2019
|
ext_spec
|
2002
2020
|
|
2003
|
-
@ext.require_paths =
|
2021
|
+
@ext.require_paths = "lib"
|
2004
2022
|
|
2005
|
-
assert_equal [@ext.extension_dir,
|
2023
|
+
assert_equal [@ext.extension_dir, "lib"], @ext.require_paths
|
2006
2024
|
end
|
2007
2025
|
end
|
2008
2026
|
|
@@ -2014,15 +2032,15 @@ dependencies: []
|
|
2014
2032
|
end
|
2015
2033
|
|
2016
2034
|
def Gem.default_ext_dir_for(base_dir)
|
2017
|
-
|
2035
|
+
"/foo"
|
2018
2036
|
end
|
2019
2037
|
|
2020
|
-
enable_shared
|
2038
|
+
enable_shared "no" do
|
2021
2039
|
ext_spec
|
2022
2040
|
|
2023
|
-
@ext.require_paths =
|
2041
|
+
@ext.require_paths = "lib"
|
2024
2042
|
|
2025
|
-
assert_equal [File.expand_path(
|
2043
|
+
assert_equal [File.expand_path("/foo/ext-1"), "lib"], @ext.require_paths
|
2026
2044
|
end
|
2027
2045
|
ensure
|
2028
2046
|
class << Gem
|
@@ -2040,7 +2058,7 @@ dependencies: []
|
|
2040
2058
|
ext_spec
|
2041
2059
|
|
2042
2060
|
@ext.require_paths = %w[lib ext foo]
|
2043
|
-
@ext.extensions <<
|
2061
|
+
@ext.extensions << "bar/baz"
|
2044
2062
|
|
2045
2063
|
expected = %w[
|
2046
2064
|
lib
|
@@ -2055,10 +2073,10 @@ dependencies: []
|
|
2055
2073
|
def test_full_require_paths
|
2056
2074
|
ext_spec
|
2057
2075
|
|
2058
|
-
@ext.require_paths =
|
2076
|
+
@ext.require_paths = "lib"
|
2059
2077
|
|
2060
2078
|
expected = [
|
2061
|
-
File.join(@gemhome,
|
2079
|
+
File.join(@gemhome, "gems", @ext.original_name, "lib"),
|
2062
2080
|
@ext.extension_dir,
|
2063
2081
|
]
|
2064
2082
|
|
@@ -2068,10 +2086,10 @@ dependencies: []
|
|
2068
2086
|
def test_to_fullpath
|
2069
2087
|
ext_spec
|
2070
2088
|
|
2071
|
-
@ext.require_paths =
|
2089
|
+
@ext.require_paths = "lib"
|
2072
2090
|
|
2073
|
-
dir = File.join(@gemhome,
|
2074
|
-
expected_rb = File.join(dir,
|
2091
|
+
dir = File.join(@gemhome, "gems", @ext.original_name, "lib")
|
2092
|
+
expected_rb = File.join(dir, "code.rb")
|
2075
2093
|
FileUtils.mkdir_p dir
|
2076
2094
|
FileUtils.touch expected_rb
|
2077
2095
|
|
@@ -2105,10 +2123,10 @@ dependencies: []
|
|
2105
2123
|
def test_fullpath_return_rb_extension_file_when_exist_the_same_name_file
|
2106
2124
|
ext_spec
|
2107
2125
|
|
2108
|
-
@ext.require_paths =
|
2126
|
+
@ext.require_paths = "lib"
|
2109
2127
|
|
2110
|
-
dir = File.join(@gemhome,
|
2111
|
-
expected_rb = File.join(dir,
|
2128
|
+
dir = File.join(@gemhome, "gems", @ext.original_name, "lib")
|
2129
|
+
expected_rb = File.join(dir, "code.rb")
|
2112
2130
|
FileUtils.mkdir_p dir
|
2113
2131
|
FileUtils.touch expected_rb
|
2114
2132
|
|
@@ -2160,12 +2178,12 @@ dependencies: []
|
|
2160
2178
|
end
|
2161
2179
|
|
2162
2180
|
def test_requirements
|
2163
|
-
assert_equal [
|
2181
|
+
assert_equal ["A working computer"], @a1.requirements
|
2164
2182
|
end
|
2165
2183
|
|
2166
2184
|
def test_allowed_push_host
|
2167
|
-
assert_nil @a1.metadata[
|
2168
|
-
assert_equal
|
2185
|
+
assert_nil @a1.metadata["allowed_push_host"]
|
2186
|
+
assert_equal "https://privategemserver.com", @a3.metadata["allowed_push_host"]
|
2169
2187
|
end
|
2170
2188
|
|
2171
2189
|
def test_runtime_dependencies_legacy
|
@@ -2181,8 +2199,8 @@ dependencies: []
|
|
2181
2199
|
end
|
2182
2200
|
|
2183
2201
|
def test_spaceship_name
|
2184
|
-
s1 = util_spec
|
2185
|
-
s2 = util_spec
|
2202
|
+
s1 = util_spec "a", "1"
|
2203
|
+
s2 = util_spec "b", "1"
|
2186
2204
|
|
2187
2205
|
assert_equal(-1, (s1 <=> s2))
|
2188
2206
|
assert_equal(0, (s1 <=> s1))
|
@@ -2190,9 +2208,9 @@ dependencies: []
|
|
2190
2208
|
end
|
2191
2209
|
|
2192
2210
|
def test_spaceship_platform
|
2193
|
-
s1 = util_spec
|
2194
|
-
s2 = util_spec
|
2195
|
-
s.platform = Gem::Platform.new
|
2211
|
+
s1 = util_spec "a", "1"
|
2212
|
+
s2 = util_spec "a", "1" do |s|
|
2213
|
+
s.platform = Gem::Platform.new "x86-my_platform1"
|
2196
2214
|
end
|
2197
2215
|
|
2198
2216
|
assert_equal(-1, (s1 <=> s2))
|
@@ -2201,8 +2219,8 @@ dependencies: []
|
|
2201
2219
|
end
|
2202
2220
|
|
2203
2221
|
def test_spaceship_version
|
2204
|
-
s1 = util_spec
|
2205
|
-
s2 = util_spec
|
2222
|
+
s1 = util_spec "a", "1"
|
2223
|
+
s2 = util_spec "a", "2"
|
2206
2224
|
|
2207
2225
|
assert_equal(-1, (s1 <=> s2))
|
2208
2226
|
assert_equal(0, (s1 <=> s1))
|
@@ -2210,25 +2228,25 @@ dependencies: []
|
|
2210
2228
|
end
|
2211
2229
|
|
2212
2230
|
def test_spec_file
|
2213
|
-
assert_equal File.join(@gemhome,
|
2231
|
+
assert_equal File.join(@gemhome, "specifications", "a-1.gemspec"),
|
2214
2232
|
@a1.spec_file
|
2215
2233
|
end
|
2216
2234
|
|
2217
2235
|
def test_spec_name
|
2218
|
-
assert_equal
|
2236
|
+
assert_equal "a-1.gemspec", @a1.spec_name
|
2219
2237
|
end
|
2220
2238
|
|
2221
2239
|
def test_summary
|
2222
|
-
assert_equal
|
2240
|
+
assert_equal "this is a summary", @a1.summary
|
2223
2241
|
end
|
2224
2242
|
|
2225
2243
|
def test_test_files
|
2226
|
-
@a1.test_file =
|
2227
|
-
assert_equal [
|
2244
|
+
@a1.test_file = "test/suite.rb"
|
2245
|
+
assert_equal ["test/suite.rb"], @a1.test_files
|
2228
2246
|
end
|
2229
2247
|
|
2230
2248
|
def test_runtime_predicate_true
|
2231
|
-
@a2.add_runtime_dependency
|
2249
|
+
@a2.add_runtime_dependency "b", "1"
|
2232
2250
|
assert_predicate @a2.dependencies.first, :runtime?
|
2233
2251
|
|
2234
2252
|
@a2.dependencies.first.instance_variable_set :@type, nil
|
@@ -2236,15 +2254,15 @@ dependencies: []
|
|
2236
2254
|
end
|
2237
2255
|
|
2238
2256
|
def test_runtime_predicate_false
|
2239
|
-
@a2.add_development_dependency
|
2257
|
+
@a2.add_development_dependency "b", "1"
|
2240
2258
|
refute_predicate @a2.dependencies.first, :runtime?
|
2241
2259
|
end
|
2242
2260
|
|
2243
2261
|
def test_to_ruby
|
2244
|
-
@a2.add_runtime_dependency
|
2262
|
+
@a2.add_runtime_dependency "b", "1"
|
2245
2263
|
@a2.dependencies.first.instance_variable_set :@type, nil
|
2246
|
-
@a2.required_rubygems_version = Gem::Requirement.new
|
2247
|
-
@a2.require_paths <<
|
2264
|
+
@a2.required_rubygems_version = Gem::Requirement.new "> 0"
|
2265
|
+
@a2.require_paths << "other"
|
2248
2266
|
|
2249
2267
|
ruby_code = @a2.to_ruby
|
2250
2268
|
|
@@ -2267,15 +2285,9 @@ Gem::Specification.new do |s|
|
|
2267
2285
|
s.rubygems_version = "#{Gem::VERSION}".freeze
|
2268
2286
|
s.summary = "this is a summary".freeze
|
2269
2287
|
|
2270
|
-
|
2271
|
-
s.specification_version = #{Gem::Specification::CURRENT_SPECIFICATION_VERSION}
|
2272
|
-
end
|
2288
|
+
s.specification_version = #{Gem::Specification::CURRENT_SPECIFICATION_VERSION}
|
2273
2289
|
|
2274
|
-
|
2275
|
-
s.add_runtime_dependency(%q<b>.freeze, [\"= 1\"])
|
2276
|
-
else
|
2277
|
-
s.add_dependency(%q<b>.freeze, [\"= 1\"])
|
2278
|
-
end
|
2290
|
+
s.add_runtime_dependency(%q<b>.freeze, [\"= 1\"])
|
2279
2291
|
end
|
2280
2292
|
SPEC
|
2281
2293
|
|
@@ -2287,8 +2299,8 @@ end
|
|
2287
2299
|
end
|
2288
2300
|
|
2289
2301
|
def test_to_ruby_with_rsa_key
|
2290
|
-
require
|
2291
|
-
pend
|
2302
|
+
require "rubygems/openssl"
|
2303
|
+
pend "openssl is missing" unless defined?(OpenSSL::PKey::RSA)
|
2292
2304
|
|
2293
2305
|
rsa_key = OpenSSL::PKey::RSA.new(2048)
|
2294
2306
|
@a2.signing_key = rsa_key
|
@@ -2319,9 +2331,9 @@ end
|
|
2319
2331
|
end
|
2320
2332
|
|
2321
2333
|
def test_to_ruby_for_cache
|
2322
|
-
@a2.add_runtime_dependency
|
2334
|
+
@a2.add_runtime_dependency "b", "1"
|
2323
2335
|
@a2.dependencies.first.instance_variable_set :@type, nil
|
2324
|
-
@a2.required_rubygems_version = Gem::Requirement.new
|
2336
|
+
@a2.required_rubygems_version = Gem::Requirement.new "> 0"
|
2325
2337
|
@a2.installed_by_version = Gem.rubygems_version
|
2326
2338
|
|
2327
2339
|
# cached specs do not have spec.files populated:
|
@@ -2347,15 +2359,9 @@ Gem::Specification.new do |s|
|
|
2347
2359
|
|
2348
2360
|
s.installed_by_version = "#{Gem::VERSION}" if s.respond_to? :installed_by_version
|
2349
2361
|
|
2350
|
-
|
2351
|
-
s.specification_version = #{Gem::Specification::CURRENT_SPECIFICATION_VERSION}
|
2352
|
-
end
|
2362
|
+
s.specification_version = #{Gem::Specification::CURRENT_SPECIFICATION_VERSION}
|
2353
2363
|
|
2354
|
-
|
2355
|
-
s.add_runtime_dependency(%q<b>.freeze, [\"= 1\"])
|
2356
|
-
else
|
2357
|
-
s.add_dependency(%q<b>.freeze, [\"= 1\"])
|
2358
|
-
end
|
2364
|
+
s.add_runtime_dependency(%q<b>.freeze, [\"= 1\"])
|
2359
2365
|
end
|
2360
2366
|
SPEC
|
2361
2367
|
|
@@ -2406,19 +2412,11 @@ Gem::Specification.new do |s|
|
|
2406
2412
|
s.summary = "this is a summary".freeze
|
2407
2413
|
s.test_files = ["test/suite.rb".freeze]
|
2408
2414
|
|
2409
|
-
|
2410
|
-
s.specification_version = 4
|
2411
|
-
end
|
2415
|
+
s.specification_version = 4
|
2412
2416
|
|
2413
|
-
|
2414
|
-
|
2415
|
-
|
2416
|
-
s.add_runtime_dependency(%q<pqa>.freeze, [\"> 0.4\", \"<= 0.6\"])
|
2417
|
-
else
|
2418
|
-
s.add_dependency(%q<rake>.freeze, [\"> 0.4\"])
|
2419
|
-
s.add_dependency(%q<jabber4r>.freeze, [\"> 0.0.0\"])
|
2420
|
-
s.add_dependency(%q<pqa>.freeze, [\"> 0.4\", \"<= 0.6\"])
|
2421
|
-
end
|
2417
|
+
s.add_runtime_dependency(%q<rake>.freeze, [\"> 0.4\"])
|
2418
|
+
s.add_runtime_dependency(%q<jabber4r>.freeze, [\"> 0.0.0\"])
|
2419
|
+
s.add_runtime_dependency(%q<pqa>.freeze, [\"> 0.4\", \"<= 0.6\"])
|
2422
2420
|
end
|
2423
2421
|
SPEC
|
2424
2422
|
|
@@ -2430,8 +2428,8 @@ end
|
|
2430
2428
|
end
|
2431
2429
|
|
2432
2430
|
def test_to_ruby_keeps_requirements_as_originally_specified
|
2433
|
-
spec = util_spec
|
2434
|
-
s.add_dependency
|
2431
|
+
spec = util_spec "a", "1" do |s|
|
2432
|
+
s.add_dependency "b", ["~> 1.0", ">= 1.0.0"]
|
2435
2433
|
end
|
2436
2434
|
|
2437
2435
|
assert_includes spec.to_ruby, '"~> 1.0", ">= 1.0.0"'
|
@@ -2460,13 +2458,13 @@ end
|
|
2460
2458
|
|
2461
2459
|
def test_to_ruby_platform
|
2462
2460
|
@a2.platform = Gem::Platform.local
|
2463
|
-
@a2.instance_variable_set :@original_platform,
|
2461
|
+
@a2.instance_variable_set :@original_platform, "old_platform"
|
2464
2462
|
|
2465
2463
|
ruby_code = @a2.to_ruby
|
2466
2464
|
|
2467
2465
|
same_spec = eval ruby_code
|
2468
2466
|
|
2469
|
-
assert_equal
|
2467
|
+
assert_equal "old_platform", same_spec.original_platform
|
2470
2468
|
end
|
2471
2469
|
|
2472
2470
|
def test_to_yaml
|
@@ -2491,21 +2489,21 @@ end
|
|
2491
2489
|
end
|
2492
2490
|
|
2493
2491
|
def test_to_yaml_platform_empty_string
|
2494
|
-
@a1.instance_variable_set :@original_platform,
|
2492
|
+
@a1.instance_variable_set :@original_platform, ""
|
2495
2493
|
|
2496
2494
|
assert_match %r{^platform: ruby$}, @a1.to_yaml
|
2497
2495
|
end
|
2498
2496
|
|
2499
2497
|
def test_to_yaml_platform_legacy
|
2500
|
-
@a1.platform =
|
2501
|
-
@a1.instance_variable_set :@original_platform,
|
2498
|
+
@a1.platform = "powerpc-darwin7.9.0"
|
2499
|
+
@a1.instance_variable_set :@original_platform, "powerpc-darwin7.9.0"
|
2502
2500
|
|
2503
2501
|
yaml_str = @a1.to_yaml
|
2504
2502
|
|
2505
2503
|
same_spec = load_yaml yaml_str
|
2506
2504
|
|
2507
|
-
assert_equal Gem::Platform.new(
|
2508
|
-
assert_equal
|
2505
|
+
assert_equal Gem::Platform.new("powerpc-darwin7"), same_spec.platform
|
2506
|
+
assert_equal "powerpc-darwin7.9.0", same_spec.original_platform
|
2509
2507
|
end
|
2510
2508
|
|
2511
2509
|
def test_to_yaml_platform_nil
|
@@ -2522,7 +2520,7 @@ end
|
|
2522
2520
|
end
|
2523
2521
|
end
|
2524
2522
|
|
2525
|
-
def x(s); s.gsub(/xxx/,
|
2523
|
+
def x(s); s.gsub(/xxx/, ""); end
|
2526
2524
|
def w; x "WARxxxNING"; end
|
2527
2525
|
def t; x "TOxxxDO"; end
|
2528
2526
|
def f; x "FxxxIXME"; end
|
@@ -2537,7 +2535,7 @@ end
|
|
2537
2535
|
@a1.validate
|
2538
2536
|
end
|
2539
2537
|
|
2540
|
-
assert_match "#{w}: no author specified\n", @ui.error,
|
2538
|
+
assert_match "#{w}: no author specified\n", @ui.error, "error"
|
2541
2539
|
|
2542
2540
|
@a1.authors = [Object.new]
|
2543
2541
|
|
@@ -2571,14 +2569,14 @@ end
|
|
2571
2569
|
util_setup_validate
|
2572
2570
|
|
2573
2571
|
Dir.chdir @tempdir do
|
2574
|
-
@a1.autorequire =
|
2572
|
+
@a1.autorequire = "code"
|
2575
2573
|
|
2576
2574
|
use_ui @ui do
|
2577
2575
|
@a1.validate
|
2578
2576
|
end
|
2579
2577
|
|
2580
2578
|
assert_match "#{w}: deprecated autorequire specified\n",
|
2581
|
-
@ui.error,
|
2579
|
+
@ui.error, "error"
|
2582
2580
|
end
|
2583
2581
|
end
|
2584
2582
|
|
@@ -2586,19 +2584,19 @@ end
|
|
2586
2584
|
util_setup_validate
|
2587
2585
|
|
2588
2586
|
Dir.chdir @tempdir do
|
2589
|
-
@a1.add_runtime_dependency
|
2590
|
-
@a1.add_development_dependency
|
2591
|
-
@a1.add_runtime_dependency
|
2592
|
-
@a1.add_runtime_dependency
|
2593
|
-
@a1.add_runtime_dependency
|
2594
|
-
@a1.add_runtime_dependency
|
2595
|
-
@a1.add_runtime_dependency
|
2596
|
-
@a1.add_runtime_dependency
|
2597
|
-
@a1.add_runtime_dependency
|
2598
|
-
@a1.add_runtime_dependency
|
2599
|
-
@a1.add_runtime_dependency
|
2600
|
-
@a1.add_runtime_dependency
|
2601
|
-
@a1.add_runtime_dependency
|
2587
|
+
@a1.add_runtime_dependency "b", ">= 1.0.rc1"
|
2588
|
+
@a1.add_development_dependency "c", ">= 2.0.rc2"
|
2589
|
+
@a1.add_runtime_dependency "d", "~> 1.2.3"
|
2590
|
+
@a1.add_runtime_dependency "e", "~> 1.2.3.4"
|
2591
|
+
@a1.add_runtime_dependency "g", "~> 1.2.3", ">= 1.2.3.4"
|
2592
|
+
@a1.add_runtime_dependency "h", ">= 1.2.3", "<= 2"
|
2593
|
+
@a1.add_runtime_dependency "i", ">= 1.2"
|
2594
|
+
@a1.add_runtime_dependency "j", ">= 1.2.3"
|
2595
|
+
@a1.add_runtime_dependency "k", "> 1.2"
|
2596
|
+
@a1.add_runtime_dependency "l", "> 1.2.3"
|
2597
|
+
@a1.add_runtime_dependency "m", "~> 2.1.0"
|
2598
|
+
@a1.add_runtime_dependency "n", "~> 0.1.0"
|
2599
|
+
@a1.add_runtime_dependency "o"
|
2602
2600
|
|
2603
2601
|
use_ui @ui do
|
2604
2602
|
@a1.validate
|
@@ -2624,7 +2622,7 @@ end
|
|
2624
2622
|
#{w}: See https://guides.rubygems.org/specification-reference/ for help
|
2625
2623
|
EXPECTED
|
2626
2624
|
|
2627
|
-
assert_equal expected, @ui.error,
|
2625
|
+
assert_equal expected, @ui.error, "warning"
|
2628
2626
|
end
|
2629
2627
|
end
|
2630
2628
|
|
@@ -2632,10 +2630,10 @@ end
|
|
2632
2630
|
util_setup_validate
|
2633
2631
|
|
2634
2632
|
Dir.chdir @tempdir do
|
2635
|
-
@a1.add_runtime_dependency
|
2636
|
-
@a1.add_runtime_dependency
|
2637
|
-
@a1.add_development_dependency
|
2638
|
-
@a1.add_development_dependency
|
2633
|
+
@a1.add_runtime_dependency "b", "~> 1.2"
|
2634
|
+
@a1.add_runtime_dependency "b", ">= 1.2.3"
|
2635
|
+
@a1.add_development_dependency "c", "~> 1.2"
|
2636
|
+
@a1.add_development_dependency "c", ">= 1.2.3"
|
2639
2637
|
|
2640
2638
|
use_ui @ui do
|
2641
2639
|
e = assert_raise Gem::InvalidSpecificationException do
|
@@ -2662,14 +2660,14 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
|
|
2662
2660
|
util_setup_validate
|
2663
2661
|
|
2664
2662
|
Dir.chdir @tempdir do
|
2665
|
-
@a1.add_runtime_dependency
|
2666
|
-
@a1.add_development_dependency
|
2663
|
+
@a1.add_runtime_dependency "b", "~> 1.2"
|
2664
|
+
@a1.add_development_dependency "b", "= 1.2.3"
|
2667
2665
|
|
2668
2666
|
use_ui @ui do
|
2669
2667
|
@a1.validate
|
2670
2668
|
end
|
2671
2669
|
|
2672
|
-
assert_equal
|
2670
|
+
assert_equal "", @ui.error, "warning"
|
2673
2671
|
end
|
2674
2672
|
end
|
2675
2673
|
|
@@ -2677,14 +2675,31 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
|
|
2677
2675
|
util_setup_validate
|
2678
2676
|
|
2679
2677
|
Dir.chdir @tempdir do
|
2680
|
-
@a1.version =
|
2681
|
-
@a1.add_runtime_dependency
|
2678
|
+
@a1.version = "1.0.0.beta.1"
|
2679
|
+
@a1.add_runtime_dependency "b", "~> 1.2.0.beta.1"
|
2680
|
+
|
2681
|
+
use_ui @ui do
|
2682
|
+
@a1.validate
|
2683
|
+
end
|
2684
|
+
|
2685
|
+
assert_equal "", @ui.error, "warning"
|
2686
|
+
end
|
2687
|
+
end
|
2688
|
+
|
2689
|
+
def test_validate_self_referencing_dependencies
|
2690
|
+
util_setup_validate
|
2691
|
+
|
2692
|
+
Dir.chdir @tempdir do
|
2693
|
+
@a1.add_runtime_dependency @a1.name, "1"
|
2682
2694
|
|
2683
2695
|
use_ui @ui do
|
2684
2696
|
@a1.validate
|
2685
2697
|
end
|
2686
2698
|
|
2687
|
-
assert_equal
|
2699
|
+
assert_equal <<-EXPECTED, @ui.error
|
2700
|
+
#{w}: Self referencing dependency is unnecessary and strongly discouraged.
|
2701
|
+
#{w}: See https://guides.rubygems.org/specification-reference/ for help
|
2702
|
+
EXPECTED
|
2688
2703
|
end
|
2689
2704
|
end
|
2690
2705
|
|
@@ -2692,8 +2707,8 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
|
|
2692
2707
|
util_setup_validate
|
2693
2708
|
|
2694
2709
|
Dir.chdir @tempdir do
|
2695
|
-
@a1.extensions = [
|
2696
|
-
File.write File.join(@tempdir,
|
2710
|
+
@a1.extensions = ["Rakefile"]
|
2711
|
+
File.write File.join(@tempdir, "Rakefile"), ""
|
2697
2712
|
|
2698
2713
|
use_ui @ui do
|
2699
2714
|
@a1.validate
|
@@ -2707,9 +2722,9 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
|
|
2707
2722
|
util_setup_validate
|
2708
2723
|
|
2709
2724
|
Dir.chdir @tempdir do
|
2710
|
-
@a1.extensions = [
|
2711
|
-
@a1.add_runtime_dependency
|
2712
|
-
File.write File.join(@tempdir,
|
2725
|
+
@a1.extensions = ["Rakefile"]
|
2726
|
+
@a1.add_runtime_dependency "rake"
|
2727
|
+
File.write File.join(@tempdir, "Rakefile"), ""
|
2713
2728
|
|
2714
2729
|
use_ui @ui do
|
2715
2730
|
@a1.validate
|
@@ -2719,11 +2734,44 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
|
|
2719
2734
|
end
|
2720
2735
|
end
|
2721
2736
|
|
2737
|
+
def test_validate_rust_extension_have_missing_cargo_toml_error
|
2738
|
+
util_setup_validate
|
2739
|
+
|
2740
|
+
Dir.chdir @tempdir do
|
2741
|
+
@a1.extensions = ["Cargo.toml"]
|
2742
|
+
File.write File.join(@tempdir, "Cargo.toml"), ""
|
2743
|
+
|
2744
|
+
e = assert_raise Gem::InvalidSpecificationException do
|
2745
|
+
use_ui @ui do
|
2746
|
+
@a1.validate
|
2747
|
+
end
|
2748
|
+
end
|
2749
|
+
|
2750
|
+
assert_match(/but Cargo.lock is not part of the gem files/, e.message)
|
2751
|
+
end
|
2752
|
+
end
|
2753
|
+
|
2754
|
+
def test_validate_rust_extension_have_no_missing_cargo_toml_error
|
2755
|
+
util_setup_validate
|
2756
|
+
|
2757
|
+
Dir.chdir @tempdir do
|
2758
|
+
@a1.extensions = ["Cargo.toml"]
|
2759
|
+
@a1.files << "Cargo.toml"
|
2760
|
+
@a1.files << "Cargo.lock"
|
2761
|
+
File.write File.join(@tempdir, "Cargo.toml"), ""
|
2762
|
+
File.write File.join(@tempdir, "Cargo.lock"), ""
|
2763
|
+
|
2764
|
+
use_ui @ui do
|
2765
|
+
@a1.validate
|
2766
|
+
end
|
2767
|
+
end
|
2768
|
+
end
|
2769
|
+
|
2722
2770
|
def test_validate_description
|
2723
2771
|
util_setup_validate
|
2724
2772
|
|
2725
2773
|
Dir.chdir @tempdir do
|
2726
|
-
@a1.description =
|
2774
|
+
@a1.description = ""
|
2727
2775
|
|
2728
2776
|
use_ui @ui do
|
2729
2777
|
@a1.validate
|
@@ -2813,7 +2861,7 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
|
|
2813
2861
|
Gem::Specification.new.validate
|
2814
2862
|
end
|
2815
2863
|
|
2816
|
-
assert_equal
|
2864
|
+
assert_equal "missing value for attribute name", e.message
|
2817
2865
|
end
|
2818
2866
|
|
2819
2867
|
def test_validate_error
|
@@ -2823,15 +2871,15 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
|
|
2823
2871
|
end
|
2824
2872
|
end
|
2825
2873
|
|
2826
|
-
assert_match
|
2874
|
+
assert_match "See https://guides.rubygems.org/specification-reference/ for help", @ui.error
|
2827
2875
|
end
|
2828
2876
|
|
2829
2877
|
def test_validate_executables
|
2830
2878
|
util_setup_validate
|
2831
2879
|
|
2832
|
-
FileUtils.mkdir_p File.join(@tempdir,
|
2833
|
-
File.write File.join(@tempdir,
|
2834
|
-
FileUtils.mkdir_p File.join(@tempdir,
|
2880
|
+
FileUtils.mkdir_p File.join(@tempdir, "bin")
|
2881
|
+
File.write File.join(@tempdir, "bin", "exec"), ""
|
2882
|
+
FileUtils.mkdir_p File.join(@tempdir, "exec")
|
2835
2883
|
|
2836
2884
|
use_ui @ui do
|
2837
2885
|
Dir.chdir @tempdir do
|
@@ -2841,13 +2889,13 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
|
|
2841
2889
|
|
2842
2890
|
assert_equal %w[exec], @a1.executables
|
2843
2891
|
|
2844
|
-
assert_equal
|
2845
|
-
assert_match "#{w}: bin/exec is missing #! line\n", @ui.error,
|
2892
|
+
assert_equal "", @ui.output, "output"
|
2893
|
+
assert_match "#{w}: bin/exec is missing #! line\n", @ui.error, "error"
|
2846
2894
|
end
|
2847
2895
|
|
2848
2896
|
def test_validate_empty_require_paths
|
2849
2897
|
if win_platform?
|
2850
|
-
pend
|
2898
|
+
pend "test_validate_empty_require_paths skipped on MS Windows (symlink)"
|
2851
2899
|
else
|
2852
2900
|
util_setup_validate
|
2853
2901
|
|
@@ -2856,26 +2904,26 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
|
|
2856
2904
|
@a1.validate
|
2857
2905
|
end
|
2858
2906
|
|
2859
|
-
assert_equal
|
2907
|
+
assert_equal "specification must have at least one require_path",
|
2860
2908
|
e.message
|
2861
2909
|
end
|
2862
2910
|
end
|
2863
2911
|
|
2864
2912
|
def test_validate_files
|
2865
|
-
pend
|
2913
|
+
pend "test_validate_files skipped on MS Windows (symlink)" if win_platform?
|
2866
2914
|
util_setup_validate
|
2867
2915
|
|
2868
|
-
@a1.files += [
|
2869
|
-
@a1.extensions <<
|
2916
|
+
@a1.files += ["lib", "lib2"]
|
2917
|
+
@a1.extensions << "ext/a/extconf.rb"
|
2870
2918
|
|
2871
2919
|
Dir.chdir @tempdir do
|
2872
|
-
FileUtils.ln_s
|
2920
|
+
FileUtils.ln_s "lib/code.rb", "lib2" unless vc_windows?
|
2873
2921
|
|
2874
2922
|
use_ui @ui do
|
2875
2923
|
@a1.validate
|
2876
2924
|
end
|
2877
2925
|
|
2878
|
-
assert_match
|
2926
|
+
assert_match "WARNING: lib2 is a symlink, which is not supported on all platforms", @ui.error
|
2879
2927
|
end
|
2880
2928
|
|
2881
2929
|
assert_equal %w[bin/exec ext/a/extconf.rb lib/code.rb lib2 test/suite.rb].sort,
|
@@ -2981,19 +3029,19 @@ Please report a bug if this causes problems.
|
|
2981
3029
|
@a1.validate
|
2982
3030
|
end
|
2983
3031
|
|
2984
|
-
assert_match "#{w}: no homepage specified\n", @ui.error,
|
3032
|
+
assert_match "#{w}: no homepage specified\n", @ui.error, "error"
|
2985
3033
|
|
2986
3034
|
@ui = Gem::MockGemUi.new
|
2987
3035
|
|
2988
|
-
@a1.homepage =
|
3036
|
+
@a1.homepage = ""
|
2989
3037
|
|
2990
3038
|
use_ui @ui do
|
2991
3039
|
@a1.validate
|
2992
3040
|
end
|
2993
3041
|
|
2994
|
-
assert_match "#{w}: no homepage specified\n", @ui.error,
|
3042
|
+
assert_match "#{w}: no homepage specified\n", @ui.error, "error"
|
2995
3043
|
|
2996
|
-
@a1.homepage =
|
3044
|
+
@a1.homepage = "over at my cool site"
|
2997
3045
|
|
2998
3046
|
e = assert_raise Gem::InvalidSpecificationException do
|
2999
3047
|
@a1.validate
|
@@ -3001,7 +3049,7 @@ Please report a bug if this causes problems.
|
|
3001
3049
|
|
3002
3050
|
assert_equal '"over at my cool site" is not a valid HTTP URI', e.message
|
3003
3051
|
|
3004
|
-
@a1.homepage =
|
3052
|
+
@a1.homepage = "ftp://rubygems.org"
|
3005
3053
|
|
3006
3054
|
e = assert_raise Gem::InvalidSpecificationException do
|
3007
3055
|
@a1.validate
|
@@ -3009,12 +3057,11 @@ Please report a bug if this causes problems.
|
|
3009
3057
|
|
3010
3058
|
assert_equal '"ftp://rubygems.org" is not a valid HTTP URI', e.message
|
3011
3059
|
|
3012
|
-
@a1.homepage =
|
3060
|
+
@a1.homepage = "https://rubygems.org/"
|
3013
3061
|
assert_equal true, @a1.validate
|
3014
3062
|
|
3015
|
-
@a1.homepage =
|
3063
|
+
@a1.homepage = "https://rubygems.org"
|
3016
3064
|
assert_equal true, @a1.validate
|
3017
|
-
|
3018
3065
|
end
|
3019
3066
|
end
|
3020
3067
|
|
@@ -3051,7 +3098,7 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
|
|
3051
3098
|
util_setup_validate
|
3052
3099
|
|
3053
3100
|
use_ui @ui do
|
3054
|
-
@a1.rubyforge_project =
|
3101
|
+
@a1.rubyforge_project = "invalid-attribute"
|
3055
3102
|
@a1.validate
|
3056
3103
|
end
|
3057
3104
|
|
@@ -3062,7 +3109,7 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
|
|
3062
3109
|
util_setup_validate
|
3063
3110
|
|
3064
3111
|
use_ui @ui do
|
3065
|
-
@a1.licenses = [
|
3112
|
+
@a1.licenses = ["BSD"]
|
3066
3113
|
@a1.validate
|
3067
3114
|
end
|
3068
3115
|
|
@@ -3076,7 +3123,7 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
|
|
3076
3123
|
util_setup_validate
|
3077
3124
|
|
3078
3125
|
use_ui @ui do
|
3079
|
-
@a1.licenses = [
|
3126
|
+
@a1.licenses = ["LicenseRef-LICENSE.md"]
|
3080
3127
|
@a1.validate
|
3081
3128
|
end
|
3082
3129
|
|
@@ -3087,7 +3134,7 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
|
|
3087
3134
|
util_setup_validate
|
3088
3135
|
|
3089
3136
|
use_ui @ui do
|
3090
|
-
@a1.licenses = [
|
3137
|
+
@a1.licenses = ["GPL-2.0+"]
|
3091
3138
|
@a1.validate
|
3092
3139
|
end
|
3093
3140
|
|
@@ -3098,7 +3145,7 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
|
|
3098
3145
|
util_setup_validate
|
3099
3146
|
|
3100
3147
|
use_ui @ui do
|
3101
|
-
@a1.licenses = [
|
3148
|
+
@a1.licenses = ["GPL-2.0-or-later"]
|
3102
3149
|
@a1.validate
|
3103
3150
|
end
|
3104
3151
|
|
@@ -3109,7 +3156,7 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
|
|
3109
3156
|
util_setup_validate
|
3110
3157
|
|
3111
3158
|
use_ui @ui do
|
3112
|
-
@a1.licenses = [
|
3159
|
+
@a1.licenses = ["GPL-2.0+ WITH Autoconf-exception-2.0"]
|
3113
3160
|
@a1.validate
|
3114
3161
|
end
|
3115
3162
|
|
@@ -3120,7 +3167,7 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
|
|
3120
3167
|
util_setup_validate
|
3121
3168
|
|
3122
3169
|
use_ui @ui do
|
3123
|
-
@a1.licenses = [
|
3170
|
+
@a1.licenses = ["GPL-2.0+ FOO", "GPL-2.0 FOO"]
|
3124
3171
|
@a1.validate
|
3125
3172
|
end
|
3126
3173
|
|
@@ -3138,7 +3185,7 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
|
|
3138
3185
|
util_setup_validate
|
3139
3186
|
|
3140
3187
|
use_ui @ui do
|
3141
|
-
@a1.licenses = [
|
3188
|
+
@a1.licenses = ["GPL-2.0+ WITH Autocofn-exception-2.0"]
|
3142
3189
|
@a1.validate
|
3143
3190
|
end
|
3144
3191
|
|
@@ -3152,7 +3199,7 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
|
|
3152
3199
|
util_setup_validate
|
3153
3200
|
|
3154
3201
|
use_ui @ui do
|
3155
|
-
@a1.licenses = [
|
3202
|
+
@a1.licenses = ["ruby"]
|
3156
3203
|
@a1.validate
|
3157
3204
|
end
|
3158
3205
|
|
@@ -3262,13 +3309,13 @@ Did you mean 'Ruby'?
|
|
3262
3309
|
end
|
3263
3310
|
|
3264
3311
|
def test_validate_permissions
|
3265
|
-
pend
|
3312
|
+
pend "chmod not supported" if Gem.win_platform?
|
3266
3313
|
|
3267
3314
|
util_setup_validate
|
3268
3315
|
|
3269
3316
|
Dir.chdir @tempdir do
|
3270
|
-
File.chmod 0640, File.join(
|
3271
|
-
File.chmod 0640, File.join(
|
3317
|
+
File.chmod 0640, File.join("lib", "code.rb")
|
3318
|
+
File.chmod 0640, File.join("bin", "exec")
|
3272
3319
|
|
3273
3320
|
use_ui @ui do
|
3274
3321
|
@a1.validate
|
@@ -3281,12 +3328,12 @@ Did you mean 'Ruby'?
|
|
3281
3328
|
end
|
3282
3329
|
|
3283
3330
|
def test_validate_permissions_of_missing_file_non_packaging
|
3284
|
-
pend
|
3331
|
+
pend "chmod not supported" if Gem.win_platform?
|
3285
3332
|
|
3286
3333
|
util_setup_validate
|
3287
3334
|
|
3288
3335
|
Dir.chdir @tempdir do
|
3289
|
-
File.delete File.join(
|
3336
|
+
File.delete File.join("lib", "code.rb")
|
3290
3337
|
|
3291
3338
|
use_ui @ui do
|
3292
3339
|
assert @a1.validate(false)
|
@@ -3298,13 +3345,13 @@ Did you mean 'Ruby'?
|
|
3298
3345
|
util_setup_validate
|
3299
3346
|
|
3300
3347
|
Dir.chdir @tempdir do
|
3301
|
-
@a1.platform =
|
3348
|
+
@a1.platform = "mswin32"
|
3302
3349
|
assert @a1.validate
|
3303
3350
|
|
3304
|
-
@a1.platform =
|
3351
|
+
@a1.platform = "i586-linux"
|
3305
3352
|
assert @a1.validate
|
3306
3353
|
|
3307
|
-
@a1.platform =
|
3354
|
+
@a1.platform = "powerpc-darwin"
|
3308
3355
|
assert @a1.validate
|
3309
3356
|
end
|
3310
3357
|
end
|
@@ -3325,7 +3372,7 @@ Did you mean 'Ruby'?
|
|
3325
3372
|
util_setup_validate
|
3326
3373
|
|
3327
3374
|
Dir.chdir @tempdir do
|
3328
|
-
@a1.specification_version =
|
3375
|
+
@a1.specification_version = "1.0"
|
3329
3376
|
|
3330
3377
|
e = assert_raise Gem::InvalidSpecificationException do
|
3331
3378
|
use_ui @ui do
|
@@ -3333,7 +3380,7 @@ Did you mean 'Ruby'?
|
|
3333
3380
|
end
|
3334
3381
|
end
|
3335
3382
|
|
3336
|
-
err =
|
3383
|
+
err = "specification_version must be an Integer (did you mean version?)"
|
3337
3384
|
assert_equal err, e.message
|
3338
3385
|
end
|
3339
3386
|
end
|
@@ -3342,13 +3389,13 @@ Did you mean 'Ruby'?
|
|
3342
3389
|
util_setup_validate
|
3343
3390
|
|
3344
3391
|
Dir.chdir @tempdir do
|
3345
|
-
@a1.summary =
|
3392
|
+
@a1.summary = ""
|
3346
3393
|
|
3347
3394
|
use_ui @ui do
|
3348
3395
|
@a1.validate
|
3349
3396
|
end
|
3350
3397
|
|
3351
|
-
assert_match "#{w}: no summary specified\n", @ui.error,
|
3398
|
+
assert_match "#{w}: no summary specified\n", @ui.error, "error"
|
3352
3399
|
|
3353
3400
|
@a1.summary = "#{f} (describe your package)"
|
3354
3401
|
|
@@ -3376,11 +3423,11 @@ Did you mean 'Ruby'?
|
|
3376
3423
|
@a1.validate
|
3377
3424
|
end
|
3378
3425
|
|
3379
|
-
assert_match
|
3426
|
+
assert_match "See https://guides.rubygems.org/specification-reference/ for help", @ui.error
|
3380
3427
|
end
|
3381
3428
|
|
3382
3429
|
def test_version
|
3383
|
-
assert_equal Gem::Version.new(
|
3430
|
+
assert_equal Gem::Version.new("1"), @a1.version
|
3384
3431
|
end
|
3385
3432
|
|
3386
3433
|
def test_version_change_reset_full_name
|
@@ -3426,22 +3473,22 @@ Did you mean 'Ruby'?
|
|
3426
3473
|
|
3427
3474
|
def test_latest_specs
|
3428
3475
|
spec_fetcher do |fetcher|
|
3429
|
-
fetcher.spec
|
3430
|
-
s.platform = Gem::Platform.new
|
3476
|
+
fetcher.spec "a", 1 do |s|
|
3477
|
+
s.platform = Gem::Platform.new "x86-my_platform1"
|
3431
3478
|
end
|
3432
3479
|
|
3433
|
-
fetcher.spec
|
3480
|
+
fetcher.spec "a", 2
|
3434
3481
|
|
3435
|
-
fetcher.spec
|
3436
|
-
s.platform = Gem::Platform.new
|
3482
|
+
fetcher.spec "a", 2 do |s|
|
3483
|
+
s.platform = Gem::Platform.new "x86-my_platform1"
|
3437
3484
|
end
|
3438
3485
|
|
3439
|
-
fetcher.spec
|
3440
|
-
s.platform = Gem::Platform.new
|
3486
|
+
fetcher.spec "a", 2 do |s|
|
3487
|
+
s.platform = Gem::Platform.new "x86-other_platform1"
|
3441
3488
|
end
|
3442
3489
|
|
3443
|
-
fetcher.spec
|
3444
|
-
s.platform = Gem::Platform.new
|
3490
|
+
fetcher.spec "a", 3 do |s|
|
3491
|
+
s.platform = Gem::Platform.new "x86-other_platform1"
|
3445
3492
|
end
|
3446
3493
|
end
|
3447
3494
|
|
@@ -3458,13 +3505,13 @@ Did you mean 'Ruby'?
|
|
3458
3505
|
util_setup_validate
|
3459
3506
|
|
3460
3507
|
Dir.chdir @tempdir do
|
3461
|
-
@m1 = quick_gem
|
3508
|
+
@m1 = quick_gem "m", "1" do |s|
|
3462
3509
|
s.files = %w[lib/code.rb]
|
3463
3510
|
s.metadata = {
|
3464
|
-
"one"
|
3465
|
-
"home"
|
3511
|
+
"one" => "two",
|
3512
|
+
"home" => "three",
|
3466
3513
|
"homepage_uri" => "https://example.com/user/repo",
|
3467
|
-
"funding_uri"
|
3514
|
+
"funding_uri" => "https://example.com/donate",
|
3468
3515
|
}
|
3469
3516
|
end
|
3470
3517
|
|
@@ -3478,7 +3525,7 @@ Did you mean 'Ruby'?
|
|
3478
3525
|
util_setup_validate
|
3479
3526
|
|
3480
3527
|
Dir.chdir @tempdir do
|
3481
|
-
@m2 = quick_gem
|
3528
|
+
@m2 = quick_gem "m", "2" do |s|
|
3482
3529
|
s.files = %w[lib/code.rb]
|
3483
3530
|
s.metadata = { 1 => "fail" }
|
3484
3531
|
end
|
@@ -3495,7 +3542,7 @@ Did you mean 'Ruby'?
|
|
3495
3542
|
util_setup_validate
|
3496
3543
|
|
3497
3544
|
Dir.chdir @tempdir do
|
3498
|
-
@m2 = quick_gem
|
3545
|
+
@m2 = quick_gem "m", "2" do |s|
|
3499
3546
|
s.files = %w[lib/code.rb]
|
3500
3547
|
s.metadata = { ("x" * 129) => "fail" }
|
3501
3548
|
end
|
@@ -3512,9 +3559,9 @@ Did you mean 'Ruby'?
|
|
3512
3559
|
util_setup_validate
|
3513
3560
|
|
3514
3561
|
Dir.chdir @tempdir do
|
3515
|
-
@m2 = quick_gem
|
3562
|
+
@m2 = quick_gem "m", "2" do |s|
|
3516
3563
|
s.files = %w[lib/code.rb]
|
3517
|
-
s.metadata = {
|
3564
|
+
s.metadata = { "fail" => [] }
|
3518
3565
|
end
|
3519
3566
|
|
3520
3567
|
e = assert_raise Gem::InvalidSpecificationException do
|
@@ -3529,9 +3576,9 @@ Did you mean 'Ruby'?
|
|
3529
3576
|
util_setup_validate
|
3530
3577
|
|
3531
3578
|
Dir.chdir @tempdir do
|
3532
|
-
@m2 = quick_gem
|
3579
|
+
@m2 = quick_gem "m", "2" do |s|
|
3533
3580
|
s.files = %w[lib/code.rb]
|
3534
|
-
s.metadata = {
|
3581
|
+
s.metadata = { "fail" => ("x" * 1025) }
|
3535
3582
|
end
|
3536
3583
|
|
3537
3584
|
e = assert_raise Gem::InvalidSpecificationException do
|
@@ -3546,9 +3593,9 @@ Did you mean 'Ruby'?
|
|
3546
3593
|
util_setup_validate
|
3547
3594
|
|
3548
3595
|
Dir.chdir @tempdir do
|
3549
|
-
@m2 = quick_gem
|
3596
|
+
@m2 = quick_gem "m", "2" do |s|
|
3550
3597
|
s.files = %w[lib/code.rb]
|
3551
|
-
s.metadata = {
|
3598
|
+
s.metadata = { "homepage_uri" => "http:/example.com" }
|
3552
3599
|
end
|
3553
3600
|
|
3554
3601
|
e = assert_raise Gem::InvalidSpecificationException do
|
@@ -3560,9 +3607,9 @@ Did you mean 'Ruby'?
|
|
3560
3607
|
end
|
3561
3608
|
|
3562
3609
|
def test_metadata_specs
|
3563
|
-
@m1 = quick_gem
|
3610
|
+
@m1 = quick_gem "m", "1" do |s|
|
3564
3611
|
s.files = %w[lib/code.rb]
|
3565
|
-
s.metadata = {
|
3612
|
+
s.metadata = { "one" => "two", "two" => "three" }
|
3566
3613
|
end
|
3567
3614
|
|
3568
3615
|
valid_ruby_spec = <<-EOF
|
@@ -3599,7 +3646,7 @@ end
|
|
3599
3646
|
extconf_rb = File.join @ext.gem_dir, @ext.extensions.first
|
3600
3647
|
FileUtils.mkdir_p File.dirname extconf_rb
|
3601
3648
|
|
3602
|
-
File.open extconf_rb,
|
3649
|
+
File.open extconf_rb, "w" do |f|
|
3603
3650
|
f.write <<-'RUBY'
|
3604
3651
|
File.open 'Makefile', 'w' do |f|
|
3605
3652
|
f.puts "clean:\n\techo clean"
|
@@ -3615,8 +3662,8 @@ end
|
|
3615
3662
|
end
|
3616
3663
|
|
3617
3664
|
def test_missing_extensions_eh_default_gem
|
3618
|
-
spec = new_default_spec
|
3619
|
-
spec.extensions <<
|
3665
|
+
spec = new_default_spec "default", 1
|
3666
|
+
spec.extensions << "extconf.rb"
|
3620
3667
|
|
3621
3668
|
refute spec.missing_extensions?
|
3622
3669
|
end
|
@@ -3626,7 +3673,7 @@ end
|
|
3626
3673
|
end
|
3627
3674
|
|
3628
3675
|
def test_find_all_by_full_name
|
3629
|
-
pl = Gem::Platform.new
|
3676
|
+
pl = Gem::Platform.new "i386-linux"
|
3630
3677
|
|
3631
3678
|
a1 = util_spec "a", "1"
|
3632
3679
|
a1_pre = util_spec "a", "1.0.0.pre.1"
|
@@ -3688,14 +3735,31 @@ end
|
|
3688
3735
|
assert Gem::Specification.find_by_name "b", ">1"
|
3689
3736
|
end
|
3690
3737
|
|
3738
|
+
def test_find_by_full_name
|
3739
|
+
pl = Gem::Platform.new "x86_64-linux"
|
3740
|
+
|
3741
|
+
a = util_spec "a", "1"
|
3742
|
+
install_specs a
|
3743
|
+
|
3744
|
+
a_pl = util_spec("a", "1") {|s| s.platform = pl }
|
3745
|
+
install_specs a_pl
|
3746
|
+
|
3747
|
+
assert_equal a, Gem::Specification.find_by_full_name("a-1")
|
3748
|
+
assert_equal a_pl, Gem::Specification.find_by_full_name("a-1-x86_64-linux")
|
3749
|
+
|
3750
|
+
assert_nil Gem::Specification.find_by_full_name("a-2")
|
3751
|
+
assert_nil Gem::Specification.find_by_full_name("b-1")
|
3752
|
+
assert_nil Gem::Specification.find_by_full_name("a-1-arm64-linux")
|
3753
|
+
end
|
3754
|
+
|
3691
3755
|
def test_find_by_path
|
3692
3756
|
a = util_spec "foo", "1", nil, "lib/foo.rb"
|
3693
3757
|
|
3694
3758
|
install_specs a
|
3695
3759
|
|
3696
|
-
assert_equal a, Gem::Specification.find_by_path(
|
3760
|
+
assert_equal a, Gem::Specification.find_by_path("foo")
|
3697
3761
|
a.activate
|
3698
|
-
assert_equal a, Gem::Specification.find_by_path(
|
3762
|
+
assert_equal a, Gem::Specification.find_by_path("foo")
|
3699
3763
|
end
|
3700
3764
|
|
3701
3765
|
def test_find_inactive_by_path
|
@@ -3703,9 +3767,9 @@ end
|
|
3703
3767
|
|
3704
3768
|
install_specs a
|
3705
3769
|
|
3706
|
-
assert_equal a, Gem::Specification.find_inactive_by_path(
|
3770
|
+
assert_equal a, Gem::Specification.find_inactive_by_path("foo")
|
3707
3771
|
a.activate
|
3708
|
-
assert_nil Gem::Specification.find_inactive_by_path(
|
3772
|
+
assert_nil Gem::Specification.find_inactive_by_path("foo")
|
3709
3773
|
end
|
3710
3774
|
|
3711
3775
|
def test_load_default_gem
|