rubygems-update 3.4.22 → 3.5.1
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 +105 -2
- data/Manifest.txt +46 -221
- data/README.md +1 -3
- data/bundler/CHANGELOG.md +63 -0
- data/bundler/bundler.gemspec +4 -2
- data/bundler/exe/bundle +1 -10
- data/bundler/lib/bundler/build_metadata.rb +3 -3
- data/bundler/lib/bundler/capistrano.rb +1 -1
- data/bundler/lib/bundler/checksum.rb +254 -0
- data/bundler/lib/bundler/ci_detector.rb +75 -0
- data/bundler/lib/bundler/cli/add.rb +3 -3
- data/bundler/lib/bundler/cli/binstubs.rb +4 -4
- data/bundler/lib/bundler/cli/cache.rb +1 -1
- data/bundler/lib/bundler/cli/check.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +9 -1
- data/bundler/lib/bundler/cli/config.rb +8 -7
- data/bundler/lib/bundler/cli/console.rb +3 -2
- data/bundler/lib/bundler/cli/doctor.rb +2 -2
- data/bundler/lib/bundler/cli/exec.rb +1 -1
- data/bundler/lib/bundler/cli/gem.rb +28 -23
- data/bundler/lib/bundler/cli/info.rb +2 -13
- data/bundler/lib/bundler/cli/install.rb +5 -4
- data/bundler/lib/bundler/cli/issue.rb +1 -1
- data/bundler/lib/bundler/cli/lock.rb +4 -4
- data/bundler/lib/bundler/cli/open.rb +1 -1
- data/bundler/lib/bundler/cli/outdated.rb +6 -6
- data/bundler/lib/bundler/cli/plugin.rb +7 -14
- data/bundler/lib/bundler/cli/pristine.rb +38 -30
- data/bundler/lib/bundler/cli/show.rb +2 -2
- data/bundler/lib/bundler/cli/update.rb +5 -5
- data/bundler/lib/bundler/cli.rb +215 -263
- data/bundler/lib/bundler/compact_index_client/cache.rb +29 -9
- data/bundler/lib/bundler/compact_index_client/cache_file.rb +153 -0
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +7 -3
- data/bundler/lib/bundler/compact_index_client/updater.rb +79 -81
- data/bundler/lib/bundler/compact_index_client.rb +14 -7
- data/bundler/lib/bundler/constants.rb +1 -1
- data/bundler/lib/bundler/current_ruby.rb +5 -21
- data/bundler/lib/bundler/definition.rb +42 -15
- data/bundler/lib/bundler/dependency.rb +16 -12
- data/bundler/lib/bundler/digest.rb +2 -2
- data/bundler/lib/bundler/dsl.rb +46 -30
- data/bundler/lib/bundler/endpoint_specification.rb +5 -1
- data/bundler/lib/bundler/env.rb +1 -3
- data/bundler/lib/bundler/errors.rb +43 -0
- data/bundler/lib/bundler/fetcher/base.rb +3 -1
- data/bundler/lib/bundler/fetcher/compact_index.rb +4 -4
- data/bundler/lib/bundler/fetcher/downloader.rb +13 -11
- data/bundler/lib/bundler/fetcher/gem_remote_fetcher.rb +16 -0
- data/bundler/lib/bundler/fetcher/index.rb +1 -1
- data/bundler/lib/bundler/fetcher.rb +28 -25
- data/bundler/lib/bundler/friendly_errors.rb +5 -5
- data/bundler/lib/bundler/gem_helper.rb +1 -1
- data/bundler/lib/bundler/gem_helpers.rb +5 -2
- data/bundler/lib/bundler/graph.rb +9 -9
- data/bundler/lib/bundler/index.rb +1 -2
- data/bundler/lib/bundler/injector.rb +1 -1
- data/bundler/lib/bundler/inline.rb +3 -3
- data/bundler/lib/bundler/installer/gem_installer.rb +5 -5
- data/bundler/lib/bundler/installer/parallel_installer.rb +16 -8
- data/bundler/lib/bundler/installer/standalone.rb +2 -3
- data/bundler/lib/bundler/installer.rb +9 -9
- data/bundler/lib/bundler/lazy_specification.rb +24 -17
- data/bundler/lib/bundler/lockfile_generator.rb +9 -0
- data/bundler/lib/bundler/lockfile_parser.rb +81 -10
- data/bundler/lib/bundler/man/bundle-add.1 +3 -26
- data/bundler/lib/bundler/man/bundle-binstubs.1 +4 -16
- data/bundler/lib/bundler/man/bundle-cache.1 +3 -24
- data/bundler/lib/bundler/man/bundle-check.1 +3 -12
- data/bundler/lib/bundler/man/bundle-clean.1 +3 -10
- data/bundler/lib/bundler/man/bundle-config.1 +20 -211
- data/bundler/lib/bundler/man/bundle-config.1.ronn +6 -0
- data/bundler/lib/bundler/man/bundle-console.1 +4 -22
- data/bundler/lib/bundler/man/bundle-doctor.1 +4 -18
- data/bundler/lib/bundler/man/bundle-exec.1 +12 -73
- data/bundler/lib/bundler/man/bundle-gem.1 +13 -49
- data/bundler/lib/bundler/man/bundle-help.1 +3 -7
- data/bundler/lib/bundler/man/bundle-info.1 +3 -9
- data/bundler/lib/bundler/man/bundle-init.1 +3 -12
- data/bundler/lib/bundler/man/bundle-inject.1 +6 -19
- data/bundler/lib/bundler/man/bundle-install.1 +27 -125
- data/bundler/lib/bundler/man/bundle-install.1.ronn +1 -0
- data/bundler/lib/bundler/man/bundle-list.1 +4 -19
- data/bundler/lib/bundler/man/bundle-lock.1 +5 -29
- data/bundler/lib/bundler/man/bundle-open.1 +7 -27
- data/bundler/lib/bundler/man/bundle-outdated.1 +3 -55
- data/bundler/lib/bundler/man/bundle-outdated.1.ronn +1 -0
- data/bundler/lib/bundler/man/bundle-platform.1 +5 -27
- data/bundler/lib/bundler/man/bundle-plugin.1 +3 -29
- data/bundler/lib/bundler/man/bundle-pristine.1 +5 -16
- data/bundler/lib/bundler/man/bundle-remove.1 +4 -14
- data/bundler/lib/bundler/man/bundle-show.1 +3 -10
- data/bundler/lib/bundler/man/bundle-update.1 +18 -137
- data/bundler/lib/bundler/man/bundle-version.1 +3 -16
- data/bundler/lib/bundler/man/bundle-viz.1 +4 -16
- data/bundler/lib/bundler/man/bundle.1 +5 -44
- data/bundler/lib/bundler/man/gemfile.5 +24 -301
- data/bundler/lib/bundler/man/gemfile.5.ronn +4 -0
- data/bundler/lib/bundler/match_metadata.rb +4 -0
- data/bundler/lib/bundler/match_platform.rb +1 -1
- data/bundler/lib/bundler/plugin/api/source.rb +3 -2
- data/bundler/lib/bundler/plugin/installer.rb +1 -1
- data/bundler/lib/bundler/plugin.rb +3 -3
- data/bundler/lib/bundler/resolver/base.rb +1 -1
- data/bundler/lib/bundler/resolver/incompatibility.rb +1 -1
- data/bundler/lib/bundler/resolver/spec_group.rb +1 -4
- data/bundler/lib/bundler/resolver.rb +16 -16
- data/bundler/lib/bundler/ruby_dsl.rb +20 -12
- data/bundler/lib/bundler/ruby_version.rb +1 -1
- data/bundler/lib/bundler/rubygems_ext.rb +24 -50
- data/bundler/lib/bundler/rubygems_gem_installer.rb +6 -56
- data/bundler/lib/bundler/rubygems_integration.rb +25 -94
- data/bundler/lib/bundler/runtime.rb +2 -2
- data/bundler/lib/bundler/self_manager.rb +23 -7
- data/bundler/lib/bundler/settings.rb +27 -7
- data/bundler/lib/bundler/setup.rb +4 -1
- data/bundler/lib/bundler/shared_helpers.rb +35 -13
- data/bundler/lib/bundler/source/git/git_proxy.rb +15 -15
- data/bundler/lib/bundler/source/git.rb +4 -3
- data/bundler/lib/bundler/source/metadata.rb +15 -15
- data/bundler/lib/bundler/source/path.rb +7 -6
- data/bundler/lib/bundler/source/rubygems.rb +21 -14
- data/bundler/lib/bundler/source.rb +2 -0
- data/bundler/lib/bundler/spec_set.rb +38 -10
- data/bundler/lib/bundler/stub_specification.rb +1 -0
- data/bundler/lib/bundler/templates/Executable.bundler +1 -1
- data/bundler/lib/bundler/templates/newgem/README.md.tt +3 -3
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +2 -6
- data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +1 -1
- data/bundler/lib/bundler/templates/newgem/standard.yml.tt +1 -1
- data/bundler/lib/bundler/ui/shell.rb +1 -1
- data/bundler/lib/bundler/vendor/connection_pool/.document +1 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +53 -6
- data/bundler/lib/bundler/vendor/fileutils/.document +1 -0
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +8 -20
- data/bundler/lib/bundler/vendor/net-http-persistent/.document +1 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +3 -3
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +2 -2
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +1 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +34 -34
- data/bundler/lib/bundler/vendor/pub_grub/.document +1 -0
- data/bundler/lib/bundler/vendor/thor/.document +1 -0
- data/bundler/lib/bundler/vendor/tsort/.document +1 -0
- data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +3 -0
- data/bundler/lib/bundler/vendor/uri/.document +1 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +256 -132
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +95 -31
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/vendored_net_http.rb +8 -0
- data/bundler/lib/bundler/vendored_persistent.rb +0 -4
- data/bundler/lib/bundler/vendored_timeout.rb +8 -0
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler/vlad.rb +1 -1
- data/bundler/lib/bundler/yaml_serializer.rb +3 -3
- data/bundler/lib/bundler.rb +41 -32
- data/lib/rubygems/available_set.rb +4 -4
- data/lib/rubygems/basic_specification.rb +35 -37
- data/lib/rubygems/bundler_version_finder.rb +4 -4
- data/lib/rubygems/ci_detector.rb +75 -0
- data/lib/rubygems/command.rb +13 -15
- data/lib/rubygems/command_manager.rb +5 -4
- data/lib/rubygems/commands/build_command.rb +2 -2
- data/lib/rubygems/commands/cert_command.rb +1 -2
- data/lib/rubygems/commands/check_command.rb +4 -4
- data/lib/rubygems/commands/cleanup_command.rb +12 -14
- data/lib/rubygems/commands/contents_command.rb +4 -4
- data/lib/rubygems/commands/dependency_command.rb +4 -5
- data/lib/rubygems/commands/environment_command.rb +1 -3
- data/lib/rubygems/commands/exec_command.rb +1 -1
- data/lib/rubygems/commands/fetch_command.rb +2 -2
- data/lib/rubygems/commands/generate_index_command.rb +39 -74
- data/lib/rubygems/commands/help_command.rb +3 -3
- data/lib/rubygems/commands/info_command.rb +2 -2
- data/lib/rubygems/commands/install_command.rb +8 -16
- data/lib/rubygems/commands/list_command.rb +2 -2
- data/lib/rubygems/commands/lock_command.rb +1 -1
- data/lib/rubygems/commands/open_command.rb +1 -1
- data/lib/rubygems/commands/owner_command.rb +1 -1
- data/lib/rubygems/commands/pristine_command.rb +13 -15
- data/lib/rubygems/commands/push_command.rb +2 -2
- data/lib/rubygems/commands/query_command.rb +4 -5
- data/lib/rubygems/commands/rdoc_command.rb +2 -2
- data/lib/rubygems/commands/search_command.rb +2 -2
- data/lib/rubygems/commands/setup_command.rb +31 -34
- data/lib/rubygems/commands/sources_command.rb +12 -12
- data/lib/rubygems/commands/specification_command.rb +10 -10
- data/lib/rubygems/commands/stale_command.rb +1 -1
- data/lib/rubygems/commands/uninstall_command.rb +9 -10
- data/lib/rubygems/commands/unpack_command.rb +4 -4
- data/lib/rubygems/commands/update_command.rb +10 -12
- data/lib/rubygems/commands/which_command.rb +1 -1
- data/lib/rubygems/commands/yank_command.rb +1 -1
- data/lib/rubygems/compatibility.rb +5 -6
- data/lib/rubygems/config_file.rb +4 -4
- data/lib/rubygems/core_ext/kernel_gem.rb +0 -2
- data/lib/rubygems/core_ext/kernel_require.rb +19 -48
- data/lib/rubygems/core_ext/kernel_warn.rb +1 -1
- data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
- data/lib/rubygems/defaults.rb +15 -3
- data/lib/rubygems/dependency.rb +12 -14
- data/lib/rubygems/dependency_installer.rb +29 -30
- data/lib/rubygems/dependency_list.rb +1 -1
- data/lib/rubygems/deprecate.rb +16 -15
- data/lib/rubygems/doctor.rb +5 -5
- data/lib/rubygems/errors.rb +2 -6
- data/lib/rubygems/exceptions.rb +2 -1
- data/lib/rubygems/ext/builder.rb +15 -10
- data/lib/rubygems/ext/cargo_builder.rb +5 -5
- data/lib/rubygems/ext/ext_conf_builder.rb +1 -3
- data/lib/rubygems/gem_runner.rb +4 -4
- data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +3 -3
- data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +3 -3
- data/lib/rubygems/gemcutter_utilities.rb +18 -19
- data/lib/rubygems/install_update_options.rb +18 -19
- data/lib/rubygems/installer.rb +59 -33
- data/lib/rubygems/installer_uninstaller_utils.rb +0 -2
- data/lib/rubygems/local_remote_options.rb +7 -10
- data/lib/rubygems/name_tuple.rb +7 -9
- data/lib/rubygems/net/http.rb +3 -0
- data/lib/rubygems/net-http/.document +1 -0
- data/lib/rubygems/net-http/LICENSE.txt +22 -0
- data/lib/rubygems/net-http/lib/net/http/backward.rb +40 -0
- data/lib/rubygems/net-http/lib/net/http/exceptions.rb +34 -0
- data/lib/rubygems/net-http/lib/net/http/generic_request.rb +414 -0
- data/lib/rubygems/net-http/lib/net/http/header.rb +981 -0
- data/lib/rubygems/net-http/lib/net/http/proxy_delta.rb +17 -0
- data/lib/rubygems/net-http/lib/net/http/request.rb +88 -0
- data/lib/rubygems/net-http/lib/net/http/requests.rb +425 -0
- data/lib/rubygems/net-http/lib/net/http/response.rb +738 -0
- data/lib/rubygems/net-http/lib/net/http/responses.rb +1174 -0
- data/lib/rubygems/net-http/lib/net/http/status.rb +84 -0
- data/lib/rubygems/net-http/lib/net/http.rb +2496 -0
- data/lib/rubygems/net-http/lib/net/https.rb +23 -0
- data/lib/rubygems/net-protocol/.document +1 -0
- data/lib/rubygems/net-protocol/LICENSE.txt +22 -0
- data/lib/rubygems/net-protocol/lib/net/protocol.rb +544 -0
- data/lib/rubygems/optparse/lib/optparse.rb +39 -17
- data/lib/rubygems/package/old.rb +2 -2
- data/lib/rubygems/package/tar_header.rb +45 -39
- data/lib/rubygems/package/tar_reader/entry.rb +5 -4
- data/lib/rubygems/package/tar_reader.rb +5 -3
- data/lib/rubygems/package/tar_writer.rb +19 -17
- data/lib/rubygems/package.rb +27 -26
- data/lib/rubygems/package_task.rb +2 -2
- data/lib/rubygems/path_support.rb +9 -10
- data/lib/rubygems/platform.rb +60 -45
- data/lib/rubygems/query_utils.rb +7 -9
- data/lib/rubygems/remote_fetcher.rb +15 -15
- data/lib/rubygems/request/connection_pools.rb +3 -3
- data/lib/rubygems/request.rb +20 -17
- data/lib/rubygems/request_set/gem_dependency_api.rb +119 -122
- data/lib/rubygems/request_set/lockfile/parser.rb +9 -9
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +20 -12
- data/lib/rubygems/request_set/lockfile.rb +6 -11
- data/lib/rubygems/request_set.rb +5 -5
- data/lib/rubygems/requirement.rb +7 -7
- data/lib/rubygems/resolv/.document +1 -0
- data/lib/rubygems/resolv/LICENSE.txt +22 -0
- data/lib/rubygems/resolv/lib/resolv.rb +3387 -0
- data/lib/rubygems/resolver/activation_request.rb +1 -3
- data/lib/rubygems/resolver/api_set/gem_parser.rb +7 -3
- data/lib/rubygems/resolver/best_set.rb +1 -1
- data/lib/rubygems/resolver/composed_set.rb +1 -1
- data/lib/rubygems/resolver/conflict.rb +4 -12
- data/lib/rubygems/resolver/index_set.rb +4 -4
- data/lib/rubygems/resolver/index_specification.rb +2 -2
- data/lib/rubygems/resolver/installer_set.rb +5 -6
- data/lib/rubygems/resolver/lock_set.rb +1 -1
- data/lib/rubygems/resolver/molinillo/.document +1 -0
- data/lib/rubygems/resolver.rb +3 -10
- data/lib/rubygems/s3_uri_signer.rb +6 -6
- data/lib/rubygems/safe_marshal/elements.rb +138 -0
- data/lib/rubygems/safe_marshal/reader.rb +306 -0
- data/lib/rubygems/safe_marshal/visitors/stream_printer.rb +31 -0
- data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +385 -0
- data/lib/rubygems/safe_marshal/visitors/visitor.rb +74 -0
- data/lib/rubygems/safe_marshal.rb +74 -0
- data/lib/rubygems/safe_yaml.rb +5 -28
- data/lib/rubygems/security/policies.rb +36 -38
- data/lib/rubygems/security/policy.rb +7 -11
- data/lib/rubygems/security/signer.rb +1 -1
- data/lib/rubygems/security/trust_dir.rb +3 -3
- data/lib/rubygems/security.rb +8 -22
- data/lib/rubygems/source/git.rb +1 -3
- data/lib/rubygems/source/installed.rb +0 -2
- data/lib/rubygems/source/local.rb +5 -8
- data/lib/rubygems/source/lock.rb +1 -3
- data/lib/rubygems/source/specific_file.rb +0 -1
- data/lib/rubygems/source/vendor.rb +0 -2
- data/lib/rubygems/source.rb +12 -12
- data/lib/rubygems/source_list.rb +4 -4
- data/lib/rubygems/spec_fetcher.rb +29 -29
- data/lib/rubygems/specification.rb +125 -138
- data/lib/rubygems/specification_policy.rb +55 -25
- data/lib/rubygems/stub_specification.rb +4 -5
- data/lib/rubygems/text.rb +1 -2
- data/lib/rubygems/timeout/.document +1 -0
- data/lib/rubygems/timeout/LICENSE.txt +22 -0
- data/lib/rubygems/timeout/lib/timeout.rb +199 -0
- data/lib/rubygems/timeout.rb +3 -0
- data/lib/rubygems/tsort/lib/tsort.rb +3 -0
- data/lib/rubygems/uninstaller.rb +7 -9
- data/lib/rubygems/update_suggestion.rb +5 -18
- data/lib/rubygems/uri_formatter.rb +1 -1
- data/lib/rubygems/user_interaction.rb +15 -21
- data/lib/rubygems/util/licenses.rb +65 -35
- data/lib/rubygems/util/list.rb +3 -1
- data/lib/rubygems/util.rb +2 -4
- data/lib/rubygems/validator.rb +5 -3
- data/lib/rubygems/version.rb +34 -28
- data/lib/rubygems/version_option.rb +2 -5
- data/lib/rubygems/yaml_serializer.rb +3 -3
- data/lib/rubygems.rb +37 -37
- data/rubygems-update.gemspec +4 -4
- data/setup.rb +2 -2
- metadata +50 -225
- data/lib/rubygems/indexer.rb +0 -428
- data/lib/rubygems/mock_gem_ui.rb +0 -86
- data/test/rubygems/alternate_cert.pem +0 -19
- data/test/rubygems/alternate_cert_32.pem +0 -19
- data/test/rubygems/alternate_key.pem +0 -27
- data/test/rubygems/bad_rake.rb +0 -3
- data/test/rubygems/bundler_test_gem.rb +0 -424
- data/test/rubygems/ca_cert.pem +0 -77
- data/test/rubygems/child_cert.pem +0 -19
- data/test/rubygems/child_cert_32.pem +0 -19
- data/test/rubygems/child_key.pem +0 -27
- data/test/rubygems/client.pem +0 -107
- data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
- data/test/rubygems/data/gem-private_key.pem +0 -27
- data/test/rubygems/data/gem-public_cert.pem +0 -20
- data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
- data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
- data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
- data/test/rubygems/encrypted_private_key.pem +0 -30
- data/test/rubygems/expired_cert.pem +0 -19
- data/test/rubygems/fake_certlib/openssl.rb +0 -9
- data/test/rubygems/foo/discover.rb +0 -1
- data/test/rubygems/future_cert.pem +0 -19
- data/test/rubygems/future_cert_32.pem +0 -19
- data/test/rubygems/good_rake.rb +0 -3
- data/test/rubygems/grandchild_cert.pem +0 -19
- data/test/rubygems/grandchild_cert_32.pem +0 -19
- data/test/rubygems/grandchild_key.pem +0 -27
- data/test/rubygems/helper.rb +0 -1649
- data/test/rubygems/installer_test_case.rb +0 -248
- data/test/rubygems/invalid_client.pem +0 -49
- data/test/rubygems/invalid_issuer_cert.pem +0 -20
- data/test/rubygems/invalid_issuer_cert_32.pem +0 -20
- data/test/rubygems/invalid_key.pem +0 -27
- data/test/rubygems/invalid_signer_cert.pem +0 -19
- data/test/rubygems/invalid_signer_cert_32.pem +0 -19
- data/test/rubygems/invalidchild_cert.pem +0 -19
- data/test/rubygems/invalidchild_cert_32.pem +0 -19
- data/test/rubygems/invalidchild_key.pem +0 -27
- data/test/rubygems/multifactor_auth_utilities.rb +0 -111
- data/test/rubygems/package/tar_test_case.rb +0 -175
- data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
- data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
- data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
- data/test/rubygems/plugin/exception/rubygems_plugin.rb +0 -4
- data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -5
- data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +0 -4
- data/test/rubygems/private3072_key.pem +0 -40
- data/test/rubygems/private_ec_key.pem +0 -9
- data/test/rubygems/private_key.pem +0 -27
- data/test/rubygems/public3072_cert.pem +0 -25
- data/test/rubygems/public_cert.pem +0 -20
- data/test/rubygems/public_cert_32.pem +0 -19
- data/test/rubygems/public_key.pem +0 -9
- data/test/rubygems/rubygems/commands/crash_command.rb +0 -5
- data/test/rubygems/rubygems_plugin.rb +0 -24
- data/test/rubygems/sff/discover.rb +0 -1
- data/test/rubygems/simple_gem.rb +0 -68
- data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -9
- data/test/rubygems/specifications/foo-0.0.1-x86-mswin32.gemspec +0 -0
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +0 -14
- data/test/rubygems/ssl_cert.pem +0 -80
- data/test/rubygems/ssl_key.pem +0 -27
- data/test/rubygems/test_bundled_ca.rb +0 -61
- data/test/rubygems/test_config.rb +0 -28
- data/test/rubygems/test_deprecate.rb +0 -158
- data/test/rubygems/test_exit.rb +0 -17
- data/test/rubygems/test_gem.rb +0 -1799
- data/test/rubygems/test_gem_available_set.rb +0 -130
- data/test/rubygems/test_gem_bundler_version_finder.rb +0 -127
- data/test/rubygems/test_gem_command.rb +0 -403
- data/test/rubygems/test_gem_command_manager.rb +0 -400
- data/test/rubygems/test_gem_commands_build_command.rb +0 -739
- data/test/rubygems/test_gem_commands_cert_command.rb +0 -866
- data/test/rubygems/test_gem_commands_check_command.rb +0 -68
- data/test/rubygems/test_gem_commands_cleanup_command.rb +0 -292
- data/test/rubygems/test_gem_commands_contents_command.rb +0 -271
- data/test/rubygems/test_gem_commands_dependency_command.rb +0 -228
- data/test/rubygems/test_gem_commands_environment_command.rb +0 -169
- data/test/rubygems/test_gem_commands_exec_command.rb +0 -857
- data/test/rubygems/test_gem_commands_fetch_command.rb +0 -258
- data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -81
- data/test/rubygems/test_gem_commands_help_command.rb +0 -94
- data/test/rubygems/test_gem_commands_info_command.rb +0 -70
- data/test/rubygems/test_gem_commands_install_command.rb +0 -1573
- data/test/rubygems/test_gem_commands_list_command.rb +0 -33
- data/test/rubygems/test_gem_commands_lock_command.rb +0 -67
- data/test/rubygems/test_gem_commands_mirror.rb +0 -20
- data/test/rubygems/test_gem_commands_open_command.rb +0 -101
- data/test/rubygems/test_gem_commands_outdated_command.rb +0 -50
- data/test/rubygems/test_gem_commands_owner_command.rb +0 -503
- data/test/rubygems/test_gem_commands_pristine_command.rb +0 -708
- data/test/rubygems/test_gem_commands_push_command.rb +0 -603
- data/test/rubygems/test_gem_commands_query_command.rb +0 -858
- data/test/rubygems/test_gem_commands_search_command.rb +0 -16
- data/test/rubygems/test_gem_commands_server_command.rb +0 -20
- data/test/rubygems/test_gem_commands_setup_command.rb +0 -474
- data/test/rubygems/test_gem_commands_signin_command.rb +0 -259
- data/test/rubygems/test_gem_commands_signout_command.rb +0 -30
- data/test/rubygems/test_gem_commands_sources_command.rb +0 -534
- data/test/rubygems/test_gem_commands_specification_command.rb +0 -277
- data/test/rubygems/test_gem_commands_stale_command.rb +0 -43
- data/test/rubygems/test_gem_commands_uninstall_command.rb +0 -542
- data/test/rubygems/test_gem_commands_unpack_command.rb +0 -224
- data/test/rubygems/test_gem_commands_update_command.rb +0 -836
- data/test/rubygems/test_gem_commands_which_command.rb +0 -85
- data/test/rubygems/test_gem_commands_yank_command.rb +0 -299
- data/test/rubygems/test_gem_config_file.rb +0 -551
- data/test/rubygems/test_gem_dependency.rb +0 -398
- data/test/rubygems/test_gem_dependency_installer.rb +0 -1190
- data/test/rubygems/test_gem_dependency_list.rb +0 -265
- data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -27
- data/test/rubygems/test_gem_doctor.rb +0 -195
- data/test/rubygems/test_gem_ext_builder.rb +0 -337
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +0 -1
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +0 -10
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +0 -249
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +0 -10
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +0 -27
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +0 -3
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +0 -1
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +0 -249
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +0 -10
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +0 -10
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +0 -51
- data/test/rubygems/test_gem_ext_cargo_builder.rb +0 -167
- data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +0 -34
- data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +0 -60
- data/test/rubygems/test_gem_ext_cmake_builder.rb +0 -84
- data/test/rubygems/test_gem_ext_configure_builder.rb +0 -80
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -229
- data/test/rubygems/test_gem_ext_rake_builder.rb +0 -113
- data/test/rubygems/test_gem_gem_runner.rb +0 -119
- data/test/rubygems/test_gem_gemcutter_utilities.rb +0 -361
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -60
- data/test/rubygems/test_gem_indexer.rb +0 -381
- data/test/rubygems/test_gem_install_update_options.rb +0 -208
- data/test/rubygems/test_gem_installer.rb +0 -2512
- data/test/rubygems/test_gem_local_remote_options.rb +0 -133
- data/test/rubygems/test_gem_name_tuple.rb +0 -43
- data/test/rubygems/test_gem_package.rb +0 -1306
- data/test/rubygems/test_gem_package_old.rb +0 -91
- data/test/rubygems/test_gem_package_tar_header.rb +0 -226
- data/test/rubygems/test_gem_package_tar_reader.rb +0 -150
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -350
- data/test/rubygems/test_gem_package_tar_writer.rb +0 -331
- data/test/rubygems/test_gem_package_task.rb +0 -118
- data/test/rubygems/test_gem_path_support.rb +0 -139
- data/test/rubygems/test_gem_platform.rb +0 -497
- data/test/rubygems/test_gem_rdoc.rb +0 -137
- data/test/rubygems/test_gem_remote_fetcher.rb +0 -1227
- data/test/rubygems/test_gem_request.rb +0 -547
- data/test/rubygems/test_gem_request_connection_pools.rb +0 -152
- data/test/rubygems/test_gem_request_set.rb +0 -672
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +0 -853
- data/test/rubygems/test_gem_request_set_lockfile.rb +0 -469
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +0 -544
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +0 -307
- data/test/rubygems/test_gem_requirement.rb +0 -505
- data/test/rubygems/test_gem_resolver.rb +0 -859
- data/test/rubygems/test_gem_resolver_activation_request.rb +0 -43
- data/test/rubygems/test_gem_resolver_api_set.rb +0 -210
- data/test/rubygems/test_gem_resolver_api_specification.rb +0 -167
- data/test/rubygems/test_gem_resolver_best_set.rb +0 -159
- data/test/rubygems/test_gem_resolver_composed_set.rb +0 -44
- data/test/rubygems/test_gem_resolver_conflict.rb +0 -82
- data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -83
- data/test/rubygems/test_gem_resolver_git_set.rb +0 -188
- data/test/rubygems/test_gem_resolver_git_specification.rb +0 -114
- data/test/rubygems/test_gem_resolver_index_set.rb +0 -88
- data/test/rubygems/test_gem_resolver_index_specification.rb +0 -93
- data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -47
- data/test/rubygems/test_gem_resolver_installer_set.rb +0 -320
- data/test/rubygems/test_gem_resolver_local_specification.rb +0 -44
- data/test/rubygems/test_gem_resolver_lock_set.rb +0 -62
- data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -98
- data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -19
- data/test/rubygems/test_gem_resolver_specification.rb +0 -63
- data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -82
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -82
- data/test/rubygems/test_gem_security.rb +0 -341
- data/test/rubygems/test_gem_security_policy.rb +0 -535
- data/test/rubygems/test_gem_security_signer.rb +0 -218
- data/test/rubygems/test_gem_security_trust_dir.rb +0 -99
- data/test/rubygems/test_gem_silent_ui.rb +0 -123
- data/test/rubygems/test_gem_source.rb +0 -254
- data/test/rubygems/test_gem_source_fetch_problem.rb +0 -37
- data/test/rubygems/test_gem_source_git.rb +0 -310
- data/test/rubygems/test_gem_source_installed.rb +0 -35
- data/test/rubygems/test_gem_source_list.rb +0 -119
- data/test/rubygems/test_gem_source_local.rb +0 -107
- data/test/rubygems/test_gem_source_lock.rb +0 -113
- data/test/rubygems/test_gem_source_specific_file.rb +0 -76
- data/test/rubygems/test_gem_source_subpath_problem.rb +0 -50
- data/test/rubygems/test_gem_source_vendor.rb +0 -30
- data/test/rubygems/test_gem_spec_fetcher.rb +0 -338
- data/test/rubygems/test_gem_specification.rb +0 -3856
- data/test/rubygems/test_gem_stream_ui.rb +0 -255
- data/test/rubygems/test_gem_stub_specification.rb +0 -278
- data/test/rubygems/test_gem_text.rb +0 -103
- data/test/rubygems/test_gem_uninstaller.rb +0 -675
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -31
- data/test/rubygems/test_gem_update_suggestion.rb +0 -209
- data/test/rubygems/test_gem_uri.rb +0 -41
- data/test/rubygems/test_gem_uri_formatter.rb +0 -27
- data/test/rubygems/test_gem_util.rb +0 -91
- data/test/rubygems/test_gem_validator.rb +0 -42
- data/test/rubygems/test_gem_version.rb +0 -305
- data/test/rubygems/test_gem_version_option.rb +0 -165
- data/test/rubygems/test_kernel.rb +0 -124
- data/test/rubygems/test_project_sanity.rb +0 -49
- data/test/rubygems/test_remote_fetch_error.rb +0 -20
- data/test/rubygems/test_require.rb +0 -732
- data/test/rubygems/test_rubygems.rb +0 -76
- data/test/rubygems/test_webauthn_listener.rb +0 -143
- data/test/rubygems/test_webauthn_listener_response.rb +0 -93
- data/test/rubygems/test_webauthn_poller.rb +0 -124
- data/test/rubygems/utilities.rb +0 -436
- data/test/rubygems/wrong_key_cert.pem +0 -19
- data/test/rubygems/wrong_key_cert_32.pem +0 -19
- data/test/test_changelog_generator.rb +0 -17
@@ -1,732 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative "helper"
|
4
|
-
require "rubygems"
|
5
|
-
|
6
|
-
class TestGemRequire < Gem::TestCase
|
7
|
-
class Latch
|
8
|
-
def initialize(count = 1)
|
9
|
-
@count = count
|
10
|
-
@lock = Monitor.new
|
11
|
-
@cv = @lock.new_cond
|
12
|
-
end
|
13
|
-
|
14
|
-
def release
|
15
|
-
@lock.synchronize do
|
16
|
-
@count -= 1 if @count > 0
|
17
|
-
@cv.broadcast if @count.zero?
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def await
|
22
|
-
@lock.synchronize do
|
23
|
-
@cv.wait_while { @count > 0 }
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def assert_require(path)
|
29
|
-
assert require(path), "'#{path}' was already required"
|
30
|
-
end
|
31
|
-
|
32
|
-
def refute_require(path)
|
33
|
-
refute require(path), "'#{path}' was not yet required"
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_respect_loaded_features_caching_like_standard_require
|
37
|
-
dir = Dir.mktmpdir("test_require", @tempdir)
|
38
|
-
|
39
|
-
lp1 = File.join dir, "foo1"
|
40
|
-
foo1 = File.join lp1, "foo.rb"
|
41
|
-
|
42
|
-
FileUtils.mkdir_p lp1
|
43
|
-
File.open(foo1, "w") {|f| f.write "class Object; HELLO = 'foo1' end" }
|
44
|
-
|
45
|
-
lp = $LOAD_PATH.dup
|
46
|
-
|
47
|
-
$LOAD_PATH.unshift lp1
|
48
|
-
assert_require "foo"
|
49
|
-
assert_equal "foo1", ::Object::HELLO
|
50
|
-
|
51
|
-
lp2 = File.join dir, "foo2"
|
52
|
-
foo2 = File.join lp2, "foo.rb"
|
53
|
-
|
54
|
-
FileUtils.mkdir_p lp2
|
55
|
-
File.open(foo2, "w") {|f| f.write "class Object; HELLO = 'foo2' end" }
|
56
|
-
|
57
|
-
$LOAD_PATH.unshift lp2
|
58
|
-
refute_require "foo"
|
59
|
-
assert_equal "foo1", ::Object::HELLO
|
60
|
-
ensure
|
61
|
-
$LOAD_PATH.replace lp
|
62
|
-
Object.send :remove_const, :HELLO if Object.const_defined? :HELLO
|
63
|
-
end
|
64
|
-
|
65
|
-
# Providing -I on the commandline should always beat gems
|
66
|
-
def test_dash_i_beats_gems
|
67
|
-
a1 = util_spec "a", "1", { "b" => "= 1" }, "lib/test_gem_require_a.rb"
|
68
|
-
b1 = util_spec "b", "1", { "c" => "> 0" }, "lib/b/c.rb"
|
69
|
-
c1 = util_spec "c", "1", nil, "lib/c/c.rb"
|
70
|
-
c2 = util_spec "c", "2", nil, "lib/c/c.rb"
|
71
|
-
|
72
|
-
install_specs c1, c2, b1, a1
|
73
|
-
|
74
|
-
dir = Dir.mktmpdir("test_require", @tempdir)
|
75
|
-
dash_i_arg = File.join dir, "lib"
|
76
|
-
|
77
|
-
c_rb = File.join dash_i_arg, "b", "c.rb"
|
78
|
-
|
79
|
-
FileUtils.mkdir_p File.dirname c_rb
|
80
|
-
File.open(c_rb, "w") {|f| f.write "class Object; HELLO = 'world' end" }
|
81
|
-
|
82
|
-
# Pretend to provide a commandline argument that overrides a file in gem b
|
83
|
-
$LOAD_PATH.unshift dash_i_arg
|
84
|
-
|
85
|
-
assert_require "test_gem_require_a"
|
86
|
-
assert_require "b/c" # this should be required from -I
|
87
|
-
assert_equal "world", ::Object::HELLO
|
88
|
-
assert_equal %w[a-1 b-1], loaded_spec_names
|
89
|
-
ensure
|
90
|
-
Object.send :remove_const, :HELLO if Object.const_defined? :HELLO
|
91
|
-
end
|
92
|
-
|
93
|
-
def create_sync_thread
|
94
|
-
Thread.new do
|
95
|
-
yield
|
96
|
-
ensure
|
97
|
-
FILE_ENTERED_LATCH.release
|
98
|
-
FILE_EXIT_LATCH.await
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
# Providing -I on the commandline should always beat gems
|
103
|
-
def test_dash_i_beats_default_gems
|
104
|
-
a1 = new_default_spec "a", "1", { "b" => "= 1" }, "test_gem_require_a.rb"
|
105
|
-
b1 = new_default_spec "b", "1", { "c" => "> 0" }, "b/c.rb"
|
106
|
-
c1 = new_default_spec "c", "1", nil, "c/c.rb"
|
107
|
-
c2 = new_default_spec "c", "2", nil, "c/c.rb"
|
108
|
-
|
109
|
-
install_default_gems c1, c2, b1, a1
|
110
|
-
|
111
|
-
dir = Dir.mktmpdir("test_require", @tempdir)
|
112
|
-
dash_i_arg = File.join dir, "lib"
|
113
|
-
|
114
|
-
c_rb = File.join dash_i_arg, "c", "c.rb"
|
115
|
-
|
116
|
-
FileUtils.mkdir_p File.dirname c_rb
|
117
|
-
File.open(c_rb, "w") {|f| f.write "class Object; HELLO = 'world' end" }
|
118
|
-
|
119
|
-
assert_require "test_gem_require_a"
|
120
|
-
|
121
|
-
# Pretend to provide a commandline argument that overrides a file in gem b
|
122
|
-
$LOAD_PATH.unshift dash_i_arg
|
123
|
-
|
124
|
-
assert_require "b/c"
|
125
|
-
assert_require "c/c" # this should be required from -I
|
126
|
-
assert_equal "world", ::Object::HELLO
|
127
|
-
assert_equal %w[a-1 b-1], loaded_spec_names
|
128
|
-
ensure
|
129
|
-
Object.send :remove_const, :HELLO if Object.const_defined? :HELLO
|
130
|
-
end
|
131
|
-
|
132
|
-
def test_dash_i_respects_default_library_extension_priority
|
133
|
-
pend "extensions don't quite work on jruby" if Gem.java_platform?
|
134
|
-
pend "not installed yet" unless RbConfig::TOPDIR
|
135
|
-
|
136
|
-
dash_i_ext_arg = util_install_extension_file("a")
|
137
|
-
dash_i_lib_arg = util_install_ruby_file("a")
|
138
|
-
|
139
|
-
$LOAD_PATH.unshift dash_i_lib_arg
|
140
|
-
$LOAD_PATH.unshift dash_i_ext_arg
|
141
|
-
assert_require "a"
|
142
|
-
assert_match(/a\.rb$/, $LOADED_FEATURES.last)
|
143
|
-
end
|
144
|
-
|
145
|
-
def test_concurrent_require
|
146
|
-
Object.const_set :FILE_ENTERED_LATCH, Latch.new(2)
|
147
|
-
Object.const_set :FILE_EXIT_LATCH, Latch.new(1)
|
148
|
-
|
149
|
-
a1 = util_spec "a#{$$}", "1", nil, "lib/a#{$$}.rb"
|
150
|
-
b1 = util_spec "b#{$$}", "1", nil, "lib/b#{$$}.rb"
|
151
|
-
|
152
|
-
install_specs a1, b1
|
153
|
-
|
154
|
-
t1 = create_sync_thread { assert_require "a#{$$}" }
|
155
|
-
t2 = create_sync_thread { assert_require "b#{$$}" }
|
156
|
-
|
157
|
-
# wait until both files are waiting on the exit latch
|
158
|
-
FILE_ENTERED_LATCH.await
|
159
|
-
|
160
|
-
# now let them finish
|
161
|
-
FILE_EXIT_LATCH.release
|
162
|
-
|
163
|
-
assert t1.join, "thread 1 should exit"
|
164
|
-
assert t2.join, "thread 2 should exit"
|
165
|
-
ensure
|
166
|
-
Object.send :remove_const, :FILE_ENTERED_LATCH if Object.const_defined? :FILE_ENTERED_LATCH
|
167
|
-
Object.send :remove_const, :FILE_EXIT_LATCH if Object.const_defined? :FILE_EXIT_LATCH
|
168
|
-
end
|
169
|
-
|
170
|
-
def test_require_is_not_lazy_with_exact_req
|
171
|
-
a1 = util_spec "a", "1", { "b" => "= 1" }, "lib/test_gem_require_a.rb"
|
172
|
-
b1 = util_spec "b", "1", nil, "lib/b/c.rb"
|
173
|
-
b2 = util_spec "b", "2", nil, "lib/b/c.rb"
|
174
|
-
|
175
|
-
install_specs b1, b2, a1
|
176
|
-
|
177
|
-
assert_require "test_gem_require_a"
|
178
|
-
assert_equal %w[a-1 b-1], loaded_spec_names
|
179
|
-
assert_equal unresolved_names, []
|
180
|
-
|
181
|
-
assert_require "b/c"
|
182
|
-
assert_equal %w[a-1 b-1], loaded_spec_names
|
183
|
-
end
|
184
|
-
|
185
|
-
def test_require_is_lazy_with_inexact_req
|
186
|
-
a1 = util_spec "a", "1", { "b" => ">= 1" }, "lib/test_gem_require_a.rb"
|
187
|
-
b1 = util_spec "b", "1", nil, "lib/b/c.rb"
|
188
|
-
b2 = util_spec "b", "2", nil, "lib/b/c.rb"
|
189
|
-
|
190
|
-
install_specs b1, b2, a1
|
191
|
-
|
192
|
-
assert_require "test_gem_require_a"
|
193
|
-
assert_equal %w[a-1], loaded_spec_names
|
194
|
-
assert_equal unresolved_names, ["b (>= 1)"]
|
195
|
-
|
196
|
-
assert_require "b/c"
|
197
|
-
assert_equal %w[a-1 b-2], loaded_spec_names
|
198
|
-
end
|
199
|
-
|
200
|
-
def test_require_is_not_lazy_with_one_possible
|
201
|
-
a1 = util_spec "a", "1", { "b" => ">= 1" }, "lib/test_gem_require_a.rb"
|
202
|
-
b1 = util_spec "b", "1", nil, "lib/b/c.rb"
|
203
|
-
|
204
|
-
install_specs b1, a1
|
205
|
-
|
206
|
-
assert_require "test_gem_require_a"
|
207
|
-
assert_equal %w[a-1 b-1], loaded_spec_names
|
208
|
-
assert_equal unresolved_names, []
|
209
|
-
|
210
|
-
assert_require "b/c"
|
211
|
-
assert_equal %w[a-1 b-1], loaded_spec_names
|
212
|
-
end
|
213
|
-
|
214
|
-
def test_require_can_use_a_pathname_object
|
215
|
-
a1 = util_spec "a", "1", nil, "lib/test_gem_require_a.rb"
|
216
|
-
|
217
|
-
install_specs a1
|
218
|
-
|
219
|
-
assert_require Pathname.new "test_gem_require_a"
|
220
|
-
assert_equal %w[a-1], loaded_spec_names
|
221
|
-
assert_equal unresolved_names, []
|
222
|
-
end
|
223
|
-
|
224
|
-
def test_activate_via_require_respects_loaded_files
|
225
|
-
pend "Not sure what's going on. If another spec creates a 'a' gem before
|
226
|
-
this test, somehow require will load the benchmark in b, and ignore that the
|
227
|
-
stdlib one is already in $LOADED_FEATURES?. Reproducible by running the
|
228
|
-
spaceship_specific_file test before this one" if java_platform?
|
229
|
-
|
230
|
-
pend "not installed yet" unless RbConfig::TOPDIR
|
231
|
-
|
232
|
-
lib_dir = File.expand_path("../lib", __dir__)
|
233
|
-
rubylibdir = File.realdirpath(RbConfig::CONFIG["rubylibdir"])
|
234
|
-
if rubylibdir == lib_dir
|
235
|
-
# testing in the ruby repository where RubyGems' lib/ == stdlib lib/
|
236
|
-
# In that case we want to move the stdlib lib/ to still be after b-2 in $LOAD_PATH
|
237
|
-
lp = $LOAD_PATH.dup
|
238
|
-
$LOAD_PATH.delete lib_dir
|
239
|
-
$LOAD_PATH.push lib_dir
|
240
|
-
load_path_changed = true
|
241
|
-
end
|
242
|
-
|
243
|
-
require "benchmark" # the stdlib
|
244
|
-
|
245
|
-
a1 = util_spec "a", "1", { "b" => ">= 1" }, "lib/test_gem_require_a.rb"
|
246
|
-
b1 = util_spec "b", "1", nil, "lib/benchmark.rb"
|
247
|
-
b2 = util_spec "b", "2", nil, "lib/benchmark.rb"
|
248
|
-
|
249
|
-
install_specs b1, b2, a1
|
250
|
-
|
251
|
-
# Activates a-1, but not b-1 and b-2
|
252
|
-
assert_require "test_gem_require_a"
|
253
|
-
assert_equal %w[a-1], loaded_spec_names
|
254
|
-
assert $LOAD_PATH.include? a1.full_require_paths[0]
|
255
|
-
refute $LOAD_PATH.include? b1.full_require_paths[0]
|
256
|
-
refute $LOAD_PATH.include? b2.full_require_paths[0]
|
257
|
-
|
258
|
-
assert_equal unresolved_names, ["b (>= 1)"]
|
259
|
-
|
260
|
-
# The require('benchmark') below will activate b-2. However, its
|
261
|
-
# lib/benchmark.rb won't ever be loaded. The reason is MRI sees that even
|
262
|
-
# though b-2 is earlier in $LOAD_PATH it already loaded a benchmark.rb file
|
263
|
-
# and that still exists in $LOAD_PATH (further down),
|
264
|
-
# and as a result #gem_original_require returns false.
|
265
|
-
refute require("benchmark"), "the benchmark stdlib should be recognized as already loaded"
|
266
|
-
|
267
|
-
assert_includes $LOAD_PATH, b2.full_require_paths[0]
|
268
|
-
assert_includes $LOAD_PATH, rubylibdir
|
269
|
-
message = proc {
|
270
|
-
"this test relies on the b-2 gem lib/ to be before stdlib to make sense\n" +
|
271
|
-
$LOAD_PATH.pretty_inspect
|
272
|
-
}
|
273
|
-
assert_operator $LOAD_PATH.index(b2.full_require_paths[0]), :<, $LOAD_PATH.index(rubylibdir), message
|
274
|
-
|
275
|
-
# We detected that we should activate b-2, so we did so, but
|
276
|
-
# then #gem_original_require decided "I've already got some benchmark.rb" loaded.
|
277
|
-
# This case is fine because our lazy loading provided exactly
|
278
|
-
# the same behavior as eager loading would have.
|
279
|
-
|
280
|
-
assert_equal %w[a-1 b-2], loaded_spec_names
|
281
|
-
ensure
|
282
|
-
$LOAD_PATH.replace lp if load_path_changed
|
283
|
-
end
|
284
|
-
|
285
|
-
def test_activate_via_require_respects_loaded_default_from_default_gems
|
286
|
-
a1 = new_default_spec "a", "1", nil, "a.rb"
|
287
|
-
|
288
|
-
# simulate requiring a default gem before rubygems is loaded
|
289
|
-
Kernel.send(:gem_original_require, "a")
|
290
|
-
|
291
|
-
# simulate registering default specs on loading rubygems
|
292
|
-
install_default_gems a1
|
293
|
-
|
294
|
-
a2 = util_spec "a", "2", nil, "lib/a.rb"
|
295
|
-
|
296
|
-
install_specs a2
|
297
|
-
|
298
|
-
refute_require "a"
|
299
|
-
|
300
|
-
assert_equal %w[a-1], loaded_spec_names
|
301
|
-
end
|
302
|
-
|
303
|
-
def test_already_activated_direct_conflict
|
304
|
-
a1 = util_spec "a", "1", { "b" => "> 0" }
|
305
|
-
b1 = util_spec "b", "1", { "c" => ">= 1" }, "lib/ib.rb"
|
306
|
-
b2 = util_spec "b", "2", { "c" => ">= 2" }, "lib/ib.rb"
|
307
|
-
c1 = util_spec "c", "1", nil, "lib/d.rb"
|
308
|
-
c2 = util_spec("c", "2", nil, "lib/d.rb")
|
309
|
-
|
310
|
-
install_specs c1, c2, b1, b2, a1
|
311
|
-
|
312
|
-
a1.activate
|
313
|
-
c1.activate
|
314
|
-
assert_equal %w[a-1 c-1], loaded_spec_names
|
315
|
-
assert_equal ["b (> 0)"], unresolved_names
|
316
|
-
|
317
|
-
assert require("ib")
|
318
|
-
|
319
|
-
assert_equal %w[a-1 b-1 c-1], loaded_spec_names
|
320
|
-
assert_equal [], unresolved_names
|
321
|
-
end
|
322
|
-
|
323
|
-
def test_multiple_gems_with_the_same_path
|
324
|
-
a1 = util_spec "a", "1", { "b" => "> 0", "x" => "> 0" }
|
325
|
-
b1 = util_spec "b", "1", { "c" => ">= 1" }, "lib/ib.rb"
|
326
|
-
b2 = util_spec "b", "2", { "c" => ">= 2" }, "lib/ib.rb"
|
327
|
-
x1 = util_spec "x", "1", nil, "lib/ib.rb"
|
328
|
-
x2 = util_spec "x", "2", nil, "lib/ib.rb"
|
329
|
-
c1 = util_spec "c", "1", nil, "lib/d.rb"
|
330
|
-
c2 = util_spec("c", "2", nil, "lib/d.rb")
|
331
|
-
|
332
|
-
install_specs c1, c2, x1, x2, b1, b2, a1
|
333
|
-
|
334
|
-
a1.activate
|
335
|
-
c1.activate
|
336
|
-
assert_equal %w[a-1 c-1], loaded_spec_names
|
337
|
-
assert_equal ["b (> 0)", "x (> 0)"], unresolved_names
|
338
|
-
|
339
|
-
e = assert_raise(Gem::LoadError) do
|
340
|
-
require("ib")
|
341
|
-
end
|
342
|
-
|
343
|
-
assert_equal "ib found in multiple gems: b, x", e.message
|
344
|
-
end
|
345
|
-
|
346
|
-
def test_unable_to_find_good_unresolved_version
|
347
|
-
a1 = util_spec "a", "1", { "b" => "> 0" }
|
348
|
-
b1 = util_spec "b", "1", { "c" => ">= 2" }, "lib/ib.rb"
|
349
|
-
b2 = util_spec "b", "2", { "c" => ">= 3" }, "lib/ib.rb"
|
350
|
-
|
351
|
-
c1 = util_spec "c", "1", nil, "lib/d.rb"
|
352
|
-
c2 = util_spec "c", "2", nil, "lib/d.rb"
|
353
|
-
c3 = util_spec "c", "3", nil, "lib/d.rb"
|
354
|
-
|
355
|
-
install_specs c1, c2, c3, b1, b2, a1
|
356
|
-
|
357
|
-
a1.activate
|
358
|
-
c1.activate
|
359
|
-
assert_equal %w[a-1 c-1], loaded_spec_names
|
360
|
-
assert_equal ["b (> 0)"], unresolved_names
|
361
|
-
|
362
|
-
e = assert_raise(Gem::LoadError) do
|
363
|
-
require("ib")
|
364
|
-
end
|
365
|
-
|
366
|
-
assert_equal "unable to find a version of 'b' to activate", e.message
|
367
|
-
end
|
368
|
-
|
369
|
-
def test_require_works_after_cleanup
|
370
|
-
a1 = new_default_spec "a", "1.0", nil, "a/b.rb"
|
371
|
-
b1 = new_default_spec "b", "1.0", nil, "b/c.rb"
|
372
|
-
b2 = new_default_spec "b", "2.0", nil, "b/d.rb"
|
373
|
-
|
374
|
-
install_default_gems a1
|
375
|
-
install_default_gems b1
|
376
|
-
install_default_gems b2
|
377
|
-
|
378
|
-
# Load default ruby gems fresh as if we've just started a ruby script.
|
379
|
-
Gem::Specification.reset
|
380
|
-
require "rubygems"
|
381
|
-
Gem::Specification.stubs
|
382
|
-
|
383
|
-
# Remove an old default gem version directly from disk as if someone ran
|
384
|
-
# gem cleanup.
|
385
|
-
FileUtils.rm_rf(File.join @gemhome, "#{b1.full_name}")
|
386
|
-
FileUtils.rm_rf(File.join @gemhome, "specifications", "default", "#{b1.full_name}.gemspec")
|
387
|
-
|
388
|
-
# Require gems that have not been removed.
|
389
|
-
assert_require "a/b"
|
390
|
-
assert_equal %w[a-1.0], loaded_spec_names
|
391
|
-
assert_require "b/d"
|
392
|
-
assert_equal %w[a-1.0 b-2.0], loaded_spec_names
|
393
|
-
end
|
394
|
-
|
395
|
-
def test_require_doesnt_traverse_development_dependencies
|
396
|
-
a = util_spec("a#{$$}", "1", nil, "lib/a#{$$}.rb")
|
397
|
-
z = util_spec("z", "1", "w" => "> 0")
|
398
|
-
w1 = util_spec("w", "1") {|s| s.add_development_dependency "non-existent" }
|
399
|
-
w2 = util_spec("w", "2") {|s| s.add_development_dependency "non-existent" }
|
400
|
-
|
401
|
-
install_specs a, w1, w2, z
|
402
|
-
|
403
|
-
assert gem("z")
|
404
|
-
assert_equal %w[z-1], loaded_spec_names
|
405
|
-
assert_equal ["w (> 0)"], unresolved_names
|
406
|
-
|
407
|
-
assert require("a#{$$}")
|
408
|
-
end
|
409
|
-
|
410
|
-
def test_default_gem_only
|
411
|
-
default_gem_spec = new_default_spec("default", "2.0.0.0",
|
412
|
-
nil, "default/gem.rb")
|
413
|
-
install_default_gems(default_gem_spec)
|
414
|
-
assert_require "default/gem"
|
415
|
-
assert_equal %w[default-2.0.0.0], loaded_spec_names
|
416
|
-
end
|
417
|
-
|
418
|
-
def test_default_gem_require_activates_just_once
|
419
|
-
default_gem_spec = new_default_spec("default", "2.0.0.0",
|
420
|
-
nil, "default/gem.rb")
|
421
|
-
install_default_gems(default_gem_spec)
|
422
|
-
|
423
|
-
assert_require "default/gem"
|
424
|
-
|
425
|
-
times_called = 0
|
426
|
-
|
427
|
-
Kernel.stub(:gem, ->(name, requirement) { times_called += 1 }) do
|
428
|
-
refute_require "default/gem"
|
429
|
-
end
|
430
|
-
|
431
|
-
assert_equal 0, times_called
|
432
|
-
end
|
433
|
-
|
434
|
-
def test_second_gem_require_does_not_resolve_path_manually_before_going_through_standard_require
|
435
|
-
a1 = util_spec "a", "1", nil, "lib/test_gem_require_a.rb"
|
436
|
-
install_gem a1
|
437
|
-
|
438
|
-
assert_require "test_gem_require_a"
|
439
|
-
|
440
|
-
stub(:gem_original_require, ->(path) { assert_equal "test_gem_require_a", path }) do
|
441
|
-
require "test_gem_require_a"
|
442
|
-
end
|
443
|
-
end
|
444
|
-
|
445
|
-
def test_realworld_default_gem
|
446
|
-
omit "this test can't work under ruby-core setup" if ruby_repo?
|
447
|
-
|
448
|
-
cmd = <<-RUBY
|
449
|
-
$stderr = $stdout
|
450
|
-
require "json"
|
451
|
-
puts Gem.loaded_specs["json"]
|
452
|
-
RUBY
|
453
|
-
output = Gem::Util.popen(*ruby_with_rubygems_in_load_path, "-e", cmd).strip
|
454
|
-
assert $?.success?
|
455
|
-
refute_empty output
|
456
|
-
end
|
457
|
-
|
458
|
-
def test_realworld_upgraded_default_gem
|
459
|
-
omit "this test can't work under ruby-core setup" if ruby_repo?
|
460
|
-
|
461
|
-
newer_json = util_spec("json", "999.99.9", nil, ["lib/json.rb"])
|
462
|
-
install_gem newer_json
|
463
|
-
|
464
|
-
path = "#{@tempdir}/test_realworld_upgraded_default_gem.rb"
|
465
|
-
code = <<-RUBY
|
466
|
-
$stderr = $stdout
|
467
|
-
require "json"
|
468
|
-
puts Gem.loaded_specs["json"].version
|
469
|
-
puts $LOADED_FEATURES
|
470
|
-
RUBY
|
471
|
-
File.write(path, code)
|
472
|
-
|
473
|
-
output = Gem::Util.popen({ "GEM_HOME" => @gemhome }, *ruby_with_rubygems_in_load_path, path).strip
|
474
|
-
assert $?.success?
|
475
|
-
refute_empty output
|
476
|
-
assert_equal "999.99.9", output.lines[0].chomp
|
477
|
-
# Make sure only files from the newer json gem are loaded, and no files from the default json gem
|
478
|
-
assert_equal ["#{@gemhome}/gems/json-999.99.9/lib/json.rb"], output.lines.grep(%r{/gems/json-}).map(&:chomp)
|
479
|
-
end
|
480
|
-
|
481
|
-
def test_default_gem_and_normal_gem
|
482
|
-
default_gem_spec = new_default_spec("default", "2.0.0.0",
|
483
|
-
nil, "default/gem.rb")
|
484
|
-
install_default_gems(default_gem_spec)
|
485
|
-
normal_gem_spec = util_spec("default", "3.0", nil,
|
486
|
-
"lib/default/gem.rb")
|
487
|
-
install_specs(normal_gem_spec)
|
488
|
-
assert_require "default/gem"
|
489
|
-
assert_equal %w[default-3.0], loaded_spec_names
|
490
|
-
end
|
491
|
-
|
492
|
-
def test_normal_gems_with_overridden_load_error_message
|
493
|
-
normal_gem_spec = util_spec("normal", "3.0", nil, "lib/normal/gem.rb")
|
494
|
-
|
495
|
-
install_specs(normal_gem_spec)
|
496
|
-
|
497
|
-
File.write("require_with_overridden_load_error_message.rb", <<-RUBY)
|
498
|
-
LoadError.class_eval do
|
499
|
-
def message
|
500
|
-
"Overridden message"
|
501
|
-
end
|
502
|
-
end
|
503
|
-
|
504
|
-
require 'normal/gem'
|
505
|
-
RUBY
|
506
|
-
|
507
|
-
require "open3"
|
508
|
-
|
509
|
-
output, exit_status = Open3.capture2e(
|
510
|
-
{ "GEM_HOME" => Gem.paths.home },
|
511
|
-
*ruby_with_rubygems_in_load_path,
|
512
|
-
"-r",
|
513
|
-
"./require_with_overridden_load_error_message.rb"
|
514
|
-
)
|
515
|
-
|
516
|
-
assert exit_status.success?, "Require failed due to #{output}"
|
517
|
-
end
|
518
|
-
|
519
|
-
def test_default_gem_prerelease
|
520
|
-
default_gem_spec = new_default_spec("default", "2.0.0",
|
521
|
-
nil, "default/gem.rb")
|
522
|
-
install_default_gems(default_gem_spec)
|
523
|
-
|
524
|
-
normal_gem_higher_prerelease_spec = util_spec("default", "3.0.0.rc2", nil,
|
525
|
-
"lib/default/gem.rb")
|
526
|
-
install_default_gems(normal_gem_higher_prerelease_spec)
|
527
|
-
|
528
|
-
assert_require "default/gem"
|
529
|
-
assert_equal %w[default-3.0.0.rc2], loaded_spec_names
|
530
|
-
end
|
531
|
-
|
532
|
-
def loaded_spec_names
|
533
|
-
Gem.loaded_specs.values.map(&:full_name).sort
|
534
|
-
end
|
535
|
-
|
536
|
-
def unresolved_names
|
537
|
-
Gem::Specification.unresolved_deps.values.map(&:to_s).sort
|
538
|
-
end
|
539
|
-
|
540
|
-
def test_try_activate_error_unlocks_require_monitor
|
541
|
-
silence_warnings do
|
542
|
-
class << ::Gem
|
543
|
-
alias old_try_activate try_activate
|
544
|
-
def try_activate(*); raise "raised from try_activate"; end
|
545
|
-
end
|
546
|
-
end
|
547
|
-
|
548
|
-
require "does_not_exist_for_try_activate_test"
|
549
|
-
rescue RuntimeError => e
|
550
|
-
assert_match(/raised from try_activate/, e.message)
|
551
|
-
assert Kernel::RUBYGEMS_ACTIVATION_MONITOR.try_enter, "require monitor was not unlocked when try_activate raised"
|
552
|
-
ensure
|
553
|
-
silence_warnings do
|
554
|
-
class << ::Gem
|
555
|
-
alias try_activate old_try_activate
|
556
|
-
end
|
557
|
-
end
|
558
|
-
Kernel::RUBYGEMS_ACTIVATION_MONITOR.exit
|
559
|
-
end
|
560
|
-
|
561
|
-
def test_require_when_gem_defined
|
562
|
-
default_gem_spec = new_default_spec("default", "2.0.0.0",
|
563
|
-
nil, "default/gem.rb")
|
564
|
-
install_default_gems(default_gem_spec)
|
565
|
-
c = Class.new do
|
566
|
-
def self.gem(*args)
|
567
|
-
raise "received #gem with #{args.inspect}"
|
568
|
-
end
|
569
|
-
end
|
570
|
-
assert c.send(:require, "default/gem")
|
571
|
-
assert_equal %w[default-2.0.0.0], loaded_spec_names
|
572
|
-
end
|
573
|
-
|
574
|
-
def test_require_default_when_gem_defined
|
575
|
-
a = util_spec("a#{$$}", "1", nil, "lib/a#{$$}.rb")
|
576
|
-
install_specs a
|
577
|
-
c = Class.new do
|
578
|
-
def self.gem(*args)
|
579
|
-
raise "received #gem with #{args.inspect}"
|
580
|
-
end
|
581
|
-
end
|
582
|
-
assert c.send(:require, "a#{$$}")
|
583
|
-
assert_equal %W[a#{$$}-1], loaded_spec_names
|
584
|
-
end
|
585
|
-
|
586
|
-
def test_require_bundler
|
587
|
-
b1 = util_spec("bundler", "1", nil, "lib/bundler/setup.rb")
|
588
|
-
b2a = util_spec("bundler", "2.a", nil, "lib/bundler/setup.rb")
|
589
|
-
install_specs b1, b2a
|
590
|
-
|
591
|
-
require "rubygems/bundler_version_finder"
|
592
|
-
$:.clear
|
593
|
-
assert_require "bundler/setup"
|
594
|
-
assert_equal %w[bundler-2.a], loaded_spec_names
|
595
|
-
assert_empty unresolved_names
|
596
|
-
end
|
597
|
-
|
598
|
-
["", "Kernel."].each do |prefix|
|
599
|
-
define_method "test_no_kernel_require_in_#{prefix.tr(".", "_")}warn_with_uplevel" do
|
600
|
-
Dir.mktmpdir("warn_test") do |dir|
|
601
|
-
File.write(dir + "/sub.rb", "#{prefix}warn 'uplevel', 'test', uplevel: 1\n")
|
602
|
-
File.write(dir + "/main.rb", "require 'sub'\n")
|
603
|
-
_, err = capture_subprocess_io do
|
604
|
-
system(*ruby_with_rubygems_in_load_path, "-w", "--disable=gems", "-C", dir, "-I", dir, "main.rb")
|
605
|
-
end
|
606
|
-
assert_match(/main\.rb:1: warning: uplevel\ntest\n$/, err)
|
607
|
-
_, err = capture_subprocess_io do
|
608
|
-
system(*ruby_with_rubygems_in_load_path, "-w", "--enable=gems", "-C", dir, "-I", dir, "main.rb")
|
609
|
-
end
|
610
|
-
assert_match(/main\.rb:1: warning: uplevel\ntest\n$/, err)
|
611
|
-
end
|
612
|
-
end
|
613
|
-
|
614
|
-
define_method "test_no_other_behavioral_changes_with_#{prefix.tr(".", "_")}warn" do
|
615
|
-
Dir.mktmpdir("warn_test") do |dir|
|
616
|
-
File.write(dir + "/main.rb", "#{prefix}warn({x:1}, {y:2}, [])\n")
|
617
|
-
_, err = capture_subprocess_io do
|
618
|
-
system(*ruby_with_rubygems_in_load_path, "-w", "--disable=gems", "-C", dir, "main.rb")
|
619
|
-
end
|
620
|
-
assert_match(/{:x=>1}\n{:y=>2}\n$/, err)
|
621
|
-
_, err = capture_subprocess_io do
|
622
|
-
system(*ruby_with_rubygems_in_load_path, "-w", "--enable=gems", "-C", dir, "main.rb")
|
623
|
-
end
|
624
|
-
assert_match(/{:x=>1}\n{:y=>2}\n$/, err)
|
625
|
-
end
|
626
|
-
end
|
627
|
-
end
|
628
|
-
|
629
|
-
def test_no_crash_when_overriding_warn_with_warning_module
|
630
|
-
Dir.mktmpdir("warn_test") do |dir|
|
631
|
-
File.write(dir + "/main.rb", "module Warning; def warn(str); super; end; end; warn 'Foo Bar'")
|
632
|
-
_, err = capture_subprocess_io do
|
633
|
-
system(*ruby_with_rubygems_in_load_path, "-w", "--disable=gems", "-C", dir, "main.rb")
|
634
|
-
end
|
635
|
-
assert_match(/Foo Bar\n$/, err)
|
636
|
-
_, err = capture_subprocess_io do
|
637
|
-
system(*ruby_with_rubygems_in_load_path, "-w", "--enable=gems", "-C", dir, "main.rb")
|
638
|
-
end
|
639
|
-
assert_match(/Foo Bar\n$/, err)
|
640
|
-
end
|
641
|
-
end
|
642
|
-
|
643
|
-
def test_expected_backtrace_location_when_inheriting_from_basic_object_and_including_kernel
|
644
|
-
Dir.mktmpdir("warn_test") do |dir|
|
645
|
-
File.write(dir + "/main.rb", "\nrequire 'sub'\n")
|
646
|
-
File.write(dir + "/sub.rb", <<-'RUBY')
|
647
|
-
require 'rubygems'
|
648
|
-
class C < BasicObject
|
649
|
-
include ::Kernel
|
650
|
-
def deprecated
|
651
|
-
warn "This is a deprecated method", uplevel: 2
|
652
|
-
end
|
653
|
-
end
|
654
|
-
C.new.deprecated
|
655
|
-
RUBY
|
656
|
-
|
657
|
-
_, err = capture_subprocess_io do
|
658
|
-
system(*ruby_with_rubygems_in_load_path, "-w", "--disable=gems", "-C", dir, "-I", dir, "main.rb")
|
659
|
-
end
|
660
|
-
assert_match(/main\.rb:2: warning: This is a deprecated method$/, err)
|
661
|
-
_, err = capture_subprocess_io do
|
662
|
-
system(*ruby_with_rubygems_in_load_path, "-w", "--enable=gems", "-C", dir, "-I", dir, "main.rb")
|
663
|
-
end
|
664
|
-
assert_match(/main\.rb:2: warning: This is a deprecated method$/, err)
|
665
|
-
end
|
666
|
-
end
|
667
|
-
|
668
|
-
def test_require_does_not_crash_when_utilizing_bundler_version_finder
|
669
|
-
a1 = util_spec "a", "1.1", { "bundler" => ">= 0" }
|
670
|
-
a2 = util_spec "a", "1.2", { "bundler" => ">= 0" }
|
671
|
-
b1 = util_spec "bundler", "2.3.7"
|
672
|
-
b2 = util_spec "bundler", "2.3.24"
|
673
|
-
c = util_spec "c", "1", { "a" => [">= 1.1", "< 99.0"] }, "lib/test_gem_require_c.rb"
|
674
|
-
|
675
|
-
install_specs a1, a2, b1, b2, c
|
676
|
-
|
677
|
-
cmd = <<-RUBY
|
678
|
-
require "test_gem_require_c"
|
679
|
-
require "json"
|
680
|
-
RUBY
|
681
|
-
out = Gem::Util.popen({ "GEM_HOME" => @gemhome }, *ruby_with_rubygems_in_load_path, "-e", cmd)
|
682
|
-
assert_predicate $?, :success?, "Require failed due to #{out}"
|
683
|
-
end
|
684
|
-
|
685
|
-
private
|
686
|
-
|
687
|
-
def util_install_extension_file(name)
|
688
|
-
spec = quick_gem name
|
689
|
-
util_build_gem spec
|
690
|
-
|
691
|
-
spec.extensions << "extconf.rb"
|
692
|
-
write_file File.join(@tempdir, "extconf.rb") do |io|
|
693
|
-
io.write <<-RUBY
|
694
|
-
require "mkmf"
|
695
|
-
CONFIG['LDSHARED'] = '$(TOUCH) $@ ||'
|
696
|
-
create_makefile("#{name}")
|
697
|
-
RUBY
|
698
|
-
end
|
699
|
-
|
700
|
-
write_file File.join(@tempdir, "#{name}.c") do |io|
|
701
|
-
io.write <<-C
|
702
|
-
void Init_#{name}() { }
|
703
|
-
C
|
704
|
-
end
|
705
|
-
|
706
|
-
write_file File.join(@tempdir, "depend")
|
707
|
-
|
708
|
-
spec.files += ["extconf.rb", "depend", "#{name}.c"]
|
709
|
-
|
710
|
-
extension_file = File.join(spec.extension_dir, "#{name}.#{RbConfig::CONFIG["DLEXT"]}")
|
711
|
-
assert_path_not_exist extension_file
|
712
|
-
|
713
|
-
path = Gem::Package.build spec
|
714
|
-
installer = Gem::Installer.at path
|
715
|
-
installer.install
|
716
|
-
assert_path_exist extension_file
|
717
|
-
|
718
|
-
spec.gem_dir
|
719
|
-
end
|
720
|
-
|
721
|
-
def util_install_ruby_file(name)
|
722
|
-
dir_lib = Dir.mktmpdir("test_require_lib", @tempdir)
|
723
|
-
dash_i_lib_arg = File.join dir_lib
|
724
|
-
|
725
|
-
a_rb = File.join dash_i_lib_arg, "#{name}.rb"
|
726
|
-
|
727
|
-
FileUtils.mkdir_p File.dirname a_rb
|
728
|
-
File.open(a_rb, "w") {|f| f.write "# #{name}.rb" }
|
729
|
-
|
730
|
-
dash_i_lib_arg
|
731
|
-
end
|
732
|
-
end
|