rubygems-update 3.1.6 → 3.3.22
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/{History.txt → CHANGELOG.md} +1452 -514
- data/CODE_OF_CONDUCT.md +55 -19
- data/CONTRIBUTING.md +74 -27
- data/Manifest.txt +154 -117
- data/POLICIES.md +27 -19
- data/README.md +10 -8
- data/UPGRADING.md +5 -81
- data/bin/gem +3 -8
- data/bin/update_rubygems +5 -5
- data/bundler/CHANGELOG.md +2358 -1430
- data/bundler/README.md +7 -9
- data/bundler/UPGRADING.md +27 -34
- data/bundler/bundler.gemspec +8 -11
- data/bundler/exe/bundle +10 -8
- data/bundler/exe/bundler +1 -1
- data/bundler/lib/bundler/.document +1 -0
- data/bundler/lib/bundler/build_metadata.rb +4 -12
- data/bundler/lib/bundler/cli/add.rb +1 -1
- data/bundler/lib/bundler/cli/binstubs.rb +6 -2
- data/bundler/lib/bundler/cli/cache.rb +3 -8
- data/bundler/lib/bundler/cli/check.rb +4 -2
- data/bundler/lib/bundler/cli/clean.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +31 -3
- data/bundler/lib/bundler/cli/config.rb +10 -1
- data/bundler/lib/bundler/cli/console.rb +1 -1
- data/bundler/lib/bundler/cli/doctor.rb +25 -6
- data/bundler/lib/bundler/cli/exec.rb +5 -10
- data/bundler/lib/bundler/cli/fund.rb +36 -0
- data/bundler/lib/bundler/cli/gem.rb +219 -28
- data/bundler/lib/bundler/cli/info.rb +38 -6
- data/bundler/lib/bundler/cli/init.rb +3 -3
- data/bundler/lib/bundler/cli/inject.rb +1 -1
- data/bundler/lib/bundler/cli/install.rb +25 -54
- data/bundler/lib/bundler/cli/issue.rb +5 -4
- data/bundler/lib/bundler/cli/list.rb +19 -11
- data/bundler/lib/bundler/cli/lock.rb +5 -1
- data/bundler/lib/bundler/cli/open.rb +1 -2
- data/bundler/lib/bundler/cli/outdated.rb +105 -76
- data/bundler/lib/bundler/cli/platform.rb +2 -2
- data/bundler/lib/bundler/cli/plugin.rb +10 -0
- data/bundler/lib/bundler/cli/pristine.rb +5 -0
- data/bundler/lib/bundler/cli/remove.rb +1 -2
- data/bundler/lib/bundler/cli/show.rb +2 -2
- data/bundler/lib/bundler/cli/update.rb +20 -9
- data/bundler/lib/bundler/cli.rb +106 -83
- data/bundler/lib/bundler/compact_index_client/cache.rb +6 -23
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
- data/bundler/lib/bundler/compact_index_client/updater.rb +29 -25
- data/bundler/lib/bundler/compact_index_client.rb +3 -9
- data/bundler/lib/bundler/current_ruby.rb +17 -6
- data/bundler/lib/bundler/definition.rb +297 -396
- data/bundler/lib/bundler/dep_proxy.rb +16 -9
- data/bundler/lib/bundler/dependency.rb +22 -77
- data/bundler/lib/bundler/digest.rb +71 -0
- data/bundler/lib/bundler/dsl.rb +76 -83
- data/bundler/lib/bundler/endpoint_specification.rb +16 -14
- data/bundler/lib/bundler/env.rb +2 -2
- data/bundler/lib/bundler/environment_preserver.rb +29 -2
- data/bundler/lib/bundler/errors.rb +30 -3
- data/bundler/lib/bundler/feature_flag.rb +0 -9
- data/bundler/lib/bundler/fetcher/base.rb +7 -9
- data/bundler/lib/bundler/fetcher/compact_index.rb +11 -16
- data/bundler/lib/bundler/fetcher/downloader.rb +10 -7
- data/bundler/lib/bundler/fetcher/index.rb +2 -30
- data/bundler/lib/bundler/fetcher.rb +24 -25
- data/bundler/lib/bundler/friendly_errors.rb +46 -47
- data/bundler/lib/bundler/gem_helper.rb +53 -31
- data/bundler/lib/bundler/gem_helpers.rb +43 -24
- data/bundler/lib/bundler/gem_version_promoter.rb +10 -20
- data/bundler/lib/bundler/graph.rb +1 -1
- data/bundler/lib/bundler/index.rb +19 -25
- data/bundler/lib/bundler/injector.rb +38 -6
- data/bundler/lib/bundler/inline.rb +4 -13
- data/bundler/lib/bundler/installer/gem_installer.rb +19 -24
- data/bundler/lib/bundler/installer/parallel_installer.rb +46 -25
- data/bundler/lib/bundler/installer/standalone.rb +58 -11
- data/bundler/lib/bundler/installer.rb +51 -81
- data/bundler/lib/bundler/lazy_specification.rb +79 -36
- data/bundler/lib/bundler/lockfile_generator.rb +3 -3
- data/bundler/lib/bundler/lockfile_parser.rb +19 -44
- data/bundler/lib/bundler/man/.document +1 -0
- data/bundler/{man → lib/bundler/man}/bundle-add.1 +21 -5
- data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +16 -4
- data/bundler/{man → lib/bundler/man}/bundle-binstubs.1 +5 -3
- data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +2 -4
- data/bundler/{man → lib/bundler/man}/bundle-cache.1 +7 -1
- data/bundler/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +7 -0
- data/bundler/{man → lib/bundler/man}/bundle-check.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-clean.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-config.1 +65 -47
- data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +74 -65
- data/bundler/lib/bundler/man/bundle-console.1 +53 -0
- data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
- data/bundler/{man → lib/bundler/man}/bundle-doctor.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-exec.1 +2 -2
- data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-gem.1 +38 -3
- data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +46 -7
- data/bundler/lib/bundler/man/bundle-help.1 +13 -0
- data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
- data/bundler/{man → lib/bundler/man}/bundle-info.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-init.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-inject.1 +5 -2
- data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +3 -1
- data/bundler/{man → lib/bundler/man}/bundle-install.1 +35 -4
- data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +33 -5
- data/bundler/{man → lib/bundler/man}/bundle-list.1 +7 -7
- data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
- data/bundler/{man → lib/bundler/man}/bundle-lock.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-open.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-outdated.1 +3 -10
- data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +1 -10
- data/bundler/{man → lib/bundler/man}/bundle-platform.1 +16 -6
- data/bundler/{man/bundle-platform.ronn → 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/{man → lib/bundler/man}/bundle-pristine.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-remove.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-show.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-update.1 +5 -5
- data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +5 -4
- data/bundler/lib/bundler/man/bundle-version.1 +35 -0
- data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
- data/bundler/{man → lib/bundler/man}/bundle-viz.1 +4 -1
- data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +2 -0
- data/bundler/{man → lib/bundler/man}/bundle.1 +15 -10
- data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +12 -7
- data/bundler/{man → lib/bundler/man}/gemfile.5 +106 -80
- data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +94 -83
- data/bundler/{man → lib/bundler/man}/index.txt +4 -0
- data/bundler/lib/bundler/match_metadata.rb +13 -0
- data/bundler/lib/bundler/match_platform.rb +0 -1
- data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
- data/bundler/lib/bundler/mirror.rb +2 -2
- data/bundler/lib/bundler/plugin/api/source.rb +25 -9
- data/bundler/lib/bundler/plugin/dsl.rb +1 -1
- data/bundler/lib/bundler/plugin/index.rb +13 -1
- data/bundler/lib/bundler/plugin/installer/git.rb +0 -4
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -5
- data/bundler/lib/bundler/plugin/installer.rb +11 -11
- data/bundler/lib/bundler/plugin/source_list.rb +5 -1
- data/bundler/lib/bundler/plugin.rb +58 -11
- data/bundler/lib/bundler/process_lock.rb +1 -1
- data/bundler/lib/bundler/remote_specification.rb +11 -6
- data/bundler/lib/bundler/resolver/base.rb +50 -0
- data/bundler/lib/bundler/resolver/spec_group.rb +64 -57
- data/bundler/lib/bundler/resolver.rb +234 -230
- data/bundler/lib/bundler/retry.rb +2 -2
- data/bundler/lib/bundler/ruby_dsl.rb +1 -1
- data/bundler/lib/bundler/ruby_version.rb +6 -19
- data/bundler/lib/bundler/rubygems_ext.rb +194 -33
- data/bundler/lib/bundler/rubygems_gem_installer.rb +87 -16
- data/bundler/lib/bundler/rubygems_integration.rb +71 -153
- data/bundler/lib/bundler/runtime.rb +22 -26
- data/bundler/lib/bundler/self_manager.rb +168 -0
- data/bundler/lib/bundler/settings.rb +145 -66
- data/bundler/lib/bundler/setup.rb +2 -2
- data/bundler/lib/bundler/shared_helpers.rb +17 -32
- data/bundler/lib/bundler/similarity_detector.rb +1 -1
- data/bundler/lib/bundler/source/git/git_proxy.rb +88 -84
- data/bundler/lib/bundler/source/git.rb +50 -32
- data/bundler/lib/bundler/source/metadata.rb +3 -7
- data/bundler/lib/bundler/source/path/installer.rb +10 -10
- data/bundler/lib/bundler/source/path.rb +10 -4
- data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
- data/bundler/lib/bundler/source/rubygems.rb +201 -179
- data/bundler/lib/bundler/source/rubygems_aggregate.rb +68 -0
- data/bundler/lib/bundler/source.rb +25 -5
- data/bundler/lib/bundler/source_list.rb +105 -63
- data/bundler/lib/bundler/source_map.rb +71 -0
- data/bundler/lib/bundler/spec_set.rb +62 -57
- data/bundler/lib/bundler/stub_specification.rb +30 -10
- data/bundler/lib/bundler/templates/Executable +2 -4
- data/bundler/lib/bundler/templates/Executable.bundler +8 -8
- data/bundler/lib/bundler/templates/Executable.standalone +2 -4
- data/bundler/lib/bundler/templates/Gemfile +0 -2
- data/bundler/lib/bundler/templates/gems.rb +0 -3
- data/bundler/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
- data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +12 -1
- data/bundler/lib/bundler/templates/newgem/README.md.tt +9 -14
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +32 -5
- data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +27 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
- data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +27 -17
- data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
- data/bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
- data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
- data/bundler/lib/bundler/templates/newgem/standard.yml.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
- data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/test_newgem.rb.tt} +3 -1
- data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
- data/bundler/lib/bundler/ui/shell.rb +6 -6
- data/bundler/lib/bundler/uri_credentials_filter.rb +3 -1
- data/bundler/lib/bundler/vendor/.document +1 -0
- data/bundler/lib/bundler/vendor/connection_pool/LICENSE +20 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +19 -21
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +57 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +39 -74
- data/bundler/lib/bundler/vendor/fileutils/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/molinillo/LICENSE +9 -0
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +7 -0
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +11 -5
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +37 -5
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +34 -28
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +12 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +49 -47
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +82 -189
- data/bundler/lib/bundler/vendor/thor/LICENSE.md +20 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +9 -7
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +1 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +7 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +6 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +10 -5
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +5 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +28 -9
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +27 -6
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +5 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor.rb +5 -13
- data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
- data/bundler/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +452 -0
- data/bundler/lib/bundler/vendor/uri/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +17 -80
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +0 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +5 -6
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +0 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +0 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +0 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +1 -14
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +1 -12
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +84 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +22 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +0 -1
- data/bundler/lib/bundler/vendored_persistent.rb +0 -7
- data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
- data/bundler/lib/bundler/vendored_tsort.rb +4 -0
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler/worker.rb +20 -5
- data/bundler/lib/bundler/yaml_serializer.rb +1 -1
- data/bundler/lib/bundler.rb +79 -47
- data/hide_lib_for_update/note.txt +0 -4
- data/lib/rubygems/available_set.rb +7 -9
- data/lib/rubygems/basic_specification.rb +23 -21
- data/lib/rubygems/bundler_version_finder.rb +26 -53
- data/lib/rubygems/command.rb +48 -45
- data/lib/rubygems/command_manager.rb +20 -14
- data/lib/rubygems/commands/build_command.rb +47 -27
- data/lib/rubygems/commands/cert_command.rb +78 -75
- data/lib/rubygems/commands/check_command.rb +20 -22
- data/lib/rubygems/commands/cleanup_command.rb +30 -26
- data/lib/rubygems/commands/contents_command.rb +16 -18
- data/lib/rubygems/commands/dependency_command.rb +39 -51
- data/lib/rubygems/commands/environment_command.rb +11 -10
- data/lib/rubygems/commands/fetch_command.rb +33 -16
- data/lib/rubygems/commands/generate_index_command.rb +17 -19
- data/lib/rubygems/commands/help_command.rb +6 -6
- data/lib/rubygems/commands/info_command.rb +10 -7
- data/lib/rubygems/commands/install_command.rb +29 -27
- data/lib/rubygems/commands/list_command.rb +9 -8
- data/lib/rubygems/commands/lock_command.rb +5 -7
- data/lib/rubygems/commands/mirror_command.rb +3 -5
- data/lib/rubygems/commands/open_command.rb +10 -14
- data/lib/rubygems/commands/outdated_command.rb +5 -7
- data/lib/rubygems/commands/owner_command.rb +26 -16
- data/lib/rubygems/commands/pristine_command.rb +61 -49
- data/lib/rubygems/commands/push_command.rb +22 -59
- data/lib/rubygems/commands/query_command.rb +21 -351
- data/lib/rubygems/commands/rdoc_command.rb +23 -25
- data/lib/rubygems/commands/search_command.rb +8 -8
- data/lib/rubygems/commands/server_command.rb +16 -77
- data/lib/rubygems/commands/setup_command.rb +255 -229
- data/lib/rubygems/commands/signin_command.rb +9 -11
- data/lib/rubygems/commands/signout_command.rb +7 -9
- data/lib/rubygems/commands/sources_command.rb +27 -25
- data/lib/rubygems/commands/specification_command.rb +25 -21
- data/lib/rubygems/commands/stale_command.rb +3 -5
- data/lib/rubygems/commands/uninstall_command.rb +41 -43
- data/lib/rubygems/commands/unpack_command.rb +13 -15
- data/lib/rubygems/commands/update_command.rb +132 -74
- data/lib/rubygems/commands/which_command.rb +7 -9
- data/lib/rubygems/commands/yank_command.rb +16 -19
- data/lib/rubygems/compatibility.rb +4 -2
- data/lib/rubygems/config_file.rb +42 -26
- data/lib/rubygems/core_ext/kernel_gem.rb +1 -1
- data/lib/rubygems/core_ext/kernel_require.rb +6 -3
- data/lib/rubygems/core_ext/kernel_warn.rb +12 -13
- data/lib/rubygems/core_ext/tcpsocket_init.rb +52 -0
- data/lib/rubygems/defaults.rb +108 -32
- data/lib/rubygems/dependency.rb +21 -22
- data/lib/rubygems/dependency_installer.rb +19 -91
- data/lib/rubygems/dependency_list.rb +13 -15
- data/lib/rubygems/deprecate.rb +102 -8
- data/lib/rubygems/doctor.rb +22 -22
- data/lib/rubygems/errors.rb +6 -21
- data/lib/rubygems/exceptions.rb +33 -34
- data/lib/rubygems/ext/build_error.rb +2 -0
- data/lib/rubygems/ext/builder.rb +48 -54
- data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +23 -0
- data/lib/rubygems/ext/cargo_builder.rb +321 -0
- data/lib/rubygems/ext/cmake_builder.rb +6 -9
- data/lib/rubygems/ext/configure_builder.rb +5 -8
- data/lib/rubygems/ext/ext_conf_builder.rb +42 -66
- data/lib/rubygems/ext/rake_builder.rb +7 -10
- data/lib/rubygems/ext.rb +7 -6
- data/lib/rubygems/gem_runner.rb +15 -26
- data/lib/rubygems/gemcutter_utilities.rb +153 -32
- data/lib/rubygems/indexer.rb +30 -49
- data/lib/rubygems/install_default_message.rb +2 -2
- data/lib/rubygems/install_message.rb +2 -2
- data/lib/rubygems/install_update_options.rb +73 -64
- data/lib/rubygems/installer.rb +194 -151
- data/lib/rubygems/installer_uninstaller_utils.rb +29 -0
- data/lib/rubygems/local_remote_options.rb +22 -24
- data/lib/rubygems/mock_gem_ui.rb +2 -8
- data/lib/rubygems/name_tuple.rb +9 -14
- data/lib/rubygems/openssl.rb +7 -0
- data/lib/rubygems/optparse/.document +1 -0
- data/lib/rubygems/optparse/COPYING +56 -0
- data/lib/rubygems/optparse/lib/optionparser.rb +2 -0
- data/lib/rubygems/optparse/lib/optparse/ac.rb +54 -0
- data/lib/rubygems/optparse/lib/optparse/date.rb +18 -0
- data/lib/rubygems/optparse/lib/optparse/kwargs.rb +22 -0
- data/lib/rubygems/optparse/lib/optparse/shellwords.rb +7 -0
- data/lib/rubygems/optparse/lib/optparse/time.rb +11 -0
- data/lib/rubygems/optparse/lib/optparse/uri.rb +7 -0
- data/lib/rubygems/optparse/lib/optparse/version.rb +71 -0
- data/lib/rubygems/optparse/lib/optparse.rb +2303 -0
- data/lib/rubygems/optparse.rb +3 -0
- data/lib/rubygems/package/digest_io.rb +0 -2
- data/lib/rubygems/package/file_source.rb +2 -4
- data/lib/rubygems/package/io_source.rb +4 -2
- data/lib/rubygems/package/old.rb +9 -11
- data/lib/rubygems/package/tar_header.rb +54 -56
- data/lib/rubygems/package/tar_reader/entry.rb +2 -5
- data/lib/rubygems/package/tar_reader.rb +1 -4
- data/lib/rubygems/package/tar_writer.rb +8 -18
- data/lib/rubygems/package.rb +101 -117
- data/lib/rubygems/package_task.rb +5 -11
- data/lib/rubygems/path_support.rb +2 -9
- data/lib/rubygems/platform.rb +101 -76
- data/lib/rubygems/psych_tree.rb +1 -3
- data/lib/rubygems/query_utils.rb +351 -0
- data/lib/rubygems/rdoc.rb +2 -14
- data/lib/rubygems/remote_fetcher.rb +48 -74
- data/lib/rubygems/request/connection_pools.rb +6 -10
- data/lib/rubygems/request/http_pool.rb +2 -4
- data/lib/rubygems/request/https_pool.rb +0 -2
- data/lib/rubygems/request.rb +26 -31
- data/lib/rubygems/request_set/gem_dependency_api.rb +23 -25
- data/lib/rubygems/request_set/lockfile/parser.rb +26 -28
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -7
- data/lib/rubygems/request_set/lockfile.rb +17 -21
- data/lib/rubygems/request_set.rb +27 -40
- data/lib/rubygems/requirement.rb +28 -48
- data/lib/rubygems/resolver/activation_request.rb +12 -6
- data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
- data/lib/rubygems/resolver/api_set.rb +32 -25
- data/lib/rubygems/resolver/api_specification.rb +29 -15
- data/lib/rubygems/resolver/best_set.rb +7 -9
- data/lib/rubygems/resolver/composed_set.rb +3 -5
- data/lib/rubygems/resolver/conflict.rb +12 -14
- data/lib/rubygems/resolver/current_set.rb +0 -2
- data/lib/rubygems/resolver/dependency_request.rb +3 -5
- data/lib/rubygems/resolver/git_set.rb +2 -4
- data/lib/rubygems/resolver/git_specification.rb +6 -8
- data/lib/rubygems/resolver/index_set.rb +4 -6
- data/lib/rubygems/resolver/index_specification.rb +38 -7
- data/lib/rubygems/resolver/installed_specification.rb +4 -6
- data/lib/rubygems/resolver/installer_set.rb +66 -24
- data/lib/rubygems/resolver/local_specification.rb +2 -4
- data/lib/rubygems/resolver/lock_set.rb +6 -8
- data/lib/rubygems/resolver/lock_specification.rb +4 -6
- data/lib/rubygems/resolver/molinillo/LICENSE +9 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +8 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +51 -12
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +41 -8
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +76 -8
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +13 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +510 -165
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
- data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
- data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
- data/lib/rubygems/resolver/molinillo.rb +1 -1
- data/lib/rubygems/resolver/requirement_list.rb +0 -2
- data/lib/rubygems/resolver/set.rb +0 -3
- data/lib/rubygems/resolver/source_set.rb +0 -2
- data/lib/rubygems/resolver/spec_specification.rb +14 -2
- data/lib/rubygems/resolver/specification.rb +14 -4
- data/lib/rubygems/resolver/stats.rb +0 -2
- data/lib/rubygems/resolver/vendor_set.rb +1 -3
- data/lib/rubygems/resolver/vendor_specification.rb +3 -5
- data/lib/rubygems/resolver.rb +53 -51
- data/lib/rubygems/s3_uri_signer.rb +7 -15
- data/lib/rubygems/safe_yaml.rb +14 -16
- data/lib/rubygems/security/policies.rb +11 -11
- data/lib/rubygems/security/policy.rb +25 -29
- data/lib/rubygems/security/signer.rb +13 -16
- data/lib/rubygems/security/trust_dir.rb +4 -5
- data/lib/rubygems/security.rb +103 -69
- data/lib/rubygems/security_option.rb +7 -7
- data/lib/rubygems/source/git.rb +30 -30
- data/lib/rubygems/source/installed.rb +1 -3
- data/lib/rubygems/source/local.rb +4 -6
- data/lib/rubygems/source/lock.rb +0 -2
- data/lib/rubygems/source/specific_file.rb +1 -3
- data/lib/rubygems/source/vendor.rb +0 -2
- data/lib/rubygems/source.rb +44 -38
- data/lib/rubygems/source_list.rb +9 -16
- data/lib/rubygems/spec_fetcher.rb +49 -48
- data/lib/rubygems/specification.rb +338 -295
- data/lib/rubygems/specification_policy.rb +112 -61
- data/lib/rubygems/stub_specification.rb +21 -28
- data/lib/rubygems/text.rb +21 -20
- data/lib/rubygems/tsort/.document +1 -0
- data/lib/rubygems/tsort/LICENSE.txt +22 -0
- data/lib/rubygems/tsort/lib/tsort.rb +454 -0
- data/lib/rubygems/tsort.rb +3 -0
- data/lib/rubygems/uninstaller.rb +98 -45
- data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
- data/lib/rubygems/uri.rb +126 -0
- data/lib/rubygems/uri_formatter.rb +2 -3
- data/lib/rubygems/user_interaction.rb +43 -54
- data/lib/rubygems/util/licenses.rb +115 -10
- data/lib/rubygems/util/list.rb +0 -2
- data/lib/rubygems/util.rb +18 -12
- data/lib/rubygems/validator.rb +6 -8
- data/lib/rubygems/version.rb +29 -20
- data/lib/rubygems/version_option.rb +11 -5
- data/lib/rubygems.rb +192 -289
- data/rubygems-update.gemspec +4 -4
- data/setup.rb +11 -22
- data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
- 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 +26 -26
- data/{lib/rubygems/test_case.rb → test/rubygems/helper.rb} +380 -314
- data/{lib → test}/rubygems/installer_test_case.rb +38 -24
- data/{lib → test}/rubygems/package/tar_test_case.rb +4 -6
- 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 +1 -1
- data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -2
- data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
- data/test/rubygems/private_ec_key.pem +9 -0
- data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
- data/test/rubygems/rubygems_plugin.rb +2 -4
- data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +4 -6
- data/test/rubygems/test_bundled_ca.rb +43 -50
- data/test/rubygems/test_config.rb +5 -7
- data/test/rubygems/test_deprecate.rb +87 -10
- data/test/rubygems/test_exit.rb +11 -0
- data/test/rubygems/test_gem.rb +719 -639
- data/test/rubygems/test_gem_available_set.rb +24 -26
- data/test/rubygems/test_gem_bundler_version_finder.rb +37 -44
- data/test/rubygems/test_gem_command.rb +78 -49
- data/test/rubygems/test_gem_command_manager.rb +98 -35
- data/test/rubygems/test_gem_commands_build_command.rb +275 -57
- data/test/rubygems/test_gem_commands_cert_command.rb +180 -125
- data/test/rubygems/test_gem_commands_check_command.rb +9 -11
- data/test/rubygems/test_gem_commands_cleanup_command.rb +78 -69
- data/test/rubygems/test_gem_commands_contents_command.rb +73 -42
- data/test/rubygems/test_gem_commands_dependency_command.rb +38 -40
- data/test/rubygems/test_gem_commands_environment_command.rb +60 -38
- data/test/rubygems/test_gem_commands_fetch_command.rb +163 -32
- data/test/rubygems/test_gem_commands_generate_index_command.rb +8 -14
- data/test/rubygems/test_gem_commands_help_command.rb +34 -16
- data/test/rubygems/test_gem_commands_info_command.rb +33 -9
- data/test/rubygems/test_gem_commands_install_command.rb +401 -198
- data/test/rubygems/test_gem_commands_list_command.rb +5 -7
- data/test/rubygems/test_gem_commands_lock_command.rb +11 -13
- data/test/rubygems/test_gem_commands_mirror.rb +3 -5
- data/test/rubygems/test_gem_commands_open_command.rb +16 -19
- data/test/rubygems/test_gem_commands_outdated_command.rb +23 -7
- data/test/rubygems/test_gem_commands_owner_command.rb +100 -46
- data/test/rubygems/test_gem_commands_pristine_command.rb +131 -99
- data/test/rubygems/test_gem_commands_push_command.rb +134 -66
- data/test/rubygems/test_gem_commands_query_command.rb +91 -91
- data/test/rubygems/test_gem_commands_search_command.rb +2 -4
- data/test/rubygems/test_gem_commands_server_command.rb +6 -50
- data/test/rubygems/test_gem_commands_setup_command.rb +288 -179
- data/test/rubygems/test_gem_commands_signin_command.rb +162 -28
- data/test/rubygems/test_gem_commands_signout_command.rb +3 -10
- data/test/rubygems/test_gem_commands_sources_command.rb +139 -32
- data/test/rubygems/test_gem_commands_specification_command.rb +81 -55
- data/test/rubygems/test_gem_commands_stale_command.rb +4 -6
- data/test/rubygems/test_gem_commands_uninstall_command.rb +80 -82
- data/test/rubygems/test_gem_commands_unpack_command.rb +32 -34
- data/test/rubygems/test_gem_commands_update_command.rb +335 -88
- data/test/rubygems/test_gem_commands_which_command.rb +12 -14
- data/test/rubygems/test_gem_commands_yank_command.rb +80 -44
- data/test/rubygems/test_gem_config_file.rb +114 -97
- data/test/rubygems/test_gem_dependency.rb +87 -87
- data/test/rubygems/test_gem_dependency_installer.rb +277 -391
- data/test/rubygems/test_gem_dependency_list.rb +57 -59
- data/test/rubygems/test_gem_dependency_resolution_error.rb +5 -7
- data/test/rubygems/test_gem_doctor.rb +73 -47
- data/test/rubygems/test_gem_ext_builder.rb +115 -109
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.lock +243 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.toml +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/build.rb +21 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/src/lib.rs +27 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +243 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/build.rb +21 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +8 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +39 -0
- data/test/rubygems/test_gem_ext_cargo_builder.rb +178 -0
- data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +33 -0
- data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +75 -0
- data/test/rubygems/test_gem_ext_cmake_builder.rb +31 -38
- data/test/rubygems/test_gem_ext_configure_builder.rb +23 -39
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +66 -82
- data/test/rubygems/test_gem_ext_rake_builder.rb +49 -32
- data/test/rubygems/test_gem_gem_runner.rb +51 -8
- data/test/rubygems/test_gem_gemcutter_utilities.rb +87 -76
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -6
- data/test/rubygems/test_gem_indexer.rb +62 -64
- data/test/rubygems/test_gem_install_update_options.rb +31 -21
- data/test/rubygems/test_gem_installer.rb +798 -491
- data/test/rubygems/test_gem_local_remote_options.rb +11 -13
- data/test/rubygems/test_gem_name_tuple.rb +4 -6
- data/test/rubygems/test_gem_package.rb +318 -283
- data/test/rubygems/test_gem_package_old.rb +18 -20
- data/test/rubygems/test_gem_package_tar_header.rb +64 -47
- data/test/rubygems/test_gem_package_tar_reader.rb +8 -10
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +18 -20
- data/test/rubygems/test_gem_package_tar_writer.rb +96 -100
- data/test/rubygems/test_gem_package_task.rb +58 -25
- data/test/rubygems/test_gem_path_support.rb +15 -21
- data/test/rubygems/test_gem_platform.rb +354 -201
- data/test/rubygems/test_gem_rdoc.rb +19 -21
- data/test/rubygems/test_gem_remote_fetcher.rb +376 -337
- data/test/rubygems/test_gem_request.rb +114 -86
- data/test/rubygems/test_gem_request_connection_pools.rb +30 -34
- data/test/rubygems/test_gem_request_set.rb +123 -124
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +222 -226
- data/test/rubygems/test_gem_request_set_lockfile.rb +93 -95
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +68 -70
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +136 -138
- data/test/rubygems/test_gem_requirement.rb +133 -54
- data/test/rubygems/test_gem_resolver.rb +149 -117
- data/test/rubygems/test_gem_resolver_activation_request.rb +6 -8
- data/test/rubygems/test_gem_resolver_api_set.rb +79 -78
- data/test/rubygems/test_gem_resolver_api_specification.rb +47 -49
- data/test/rubygems/test_gem_resolver_best_set.rb +43 -22
- data/test/rubygems/test_gem_resolver_composed_set.rb +1 -3
- data/test/rubygems/test_gem_resolver_conflict.rb +12 -14
- data/test/rubygems/test_gem_resolver_dependency_request.rb +15 -17
- data/test/rubygems/test_gem_resolver_git_set.rb +22 -24
- data/test/rubygems/test_gem_resolver_git_specification.rb +22 -23
- data/test/rubygems/test_gem_resolver_index_set.rb +14 -16
- data/test/rubygems/test_gem_resolver_index_specification.rb +16 -18
- data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -7
- data/test/rubygems/test_gem_resolver_installer_set.rb +104 -44
- data/test/rubygems/test_gem_resolver_local_specification.rb +7 -9
- data/test/rubygems/test_gem_resolver_lock_set.rb +15 -17
- data/test/rubygems/test_gem_resolver_lock_specification.rb +17 -19
- data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -3
- data/test/rubygems/test_gem_resolver_specification.rb +8 -12
- data/test/rubygems/test_gem_resolver_vendor_set.rb +9 -11
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +10 -12
- data/test/rubygems/test_gem_security.rb +104 -78
- data/test/rubygems/test_gem_security_policy.rb +92 -97
- data/test/rubygems/test_gem_security_signer.rb +45 -47
- data/test/rubygems/test_gem_security_trust_dir.rb +12 -14
- data/test/rubygems/test_gem_silent_ui.rb +46 -42
- data/test/rubygems/test_gem_source.rb +53 -52
- data/test/rubygems/test_gem_source_fetch_problem.rb +16 -8
- data/test/rubygems/test_gem_source_git.rb +69 -69
- data/test/rubygems/test_gem_source_installed.rb +16 -18
- data/test/rubygems/test_gem_source_list.rb +5 -6
- data/test/rubygems/test_gem_source_local.rb +15 -17
- data/test/rubygems/test_gem_source_lock.rb +31 -33
- data/test/rubygems/test_gem_source_specific_file.rb +18 -20
- data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
- data/test/rubygems/test_gem_source_vendor.rb +13 -15
- data/test/rubygems/test_gem_spec_fetcher.rb +74 -67
- data/test/rubygems/test_gem_specification.rb +888 -1024
- data/test/rubygems/test_gem_stream_ui.rb +23 -23
- data/test/rubygems/test_gem_stub_specification.rb +39 -57
- data/test/rubygems/test_gem_text.rb +8 -4
- data/test/rubygems/test_gem_uninstaller.rb +233 -104
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -5
- data/test/rubygems/test_gem_uri.rb +39 -0
- data/test/rubygems/test_gem_uri_formatter.rb +14 -16
- data/test/rubygems/test_gem_util.rb +37 -35
- data/test/rubygems/test_gem_validator.rb +10 -12
- data/test/rubygems/test_gem_version.rb +31 -31
- data/test/rubygems/test_gem_version_option.rb +16 -18
- data/test/rubygems/test_kernel.rb +46 -60
- data/test/rubygems/test_project_sanity.rb +8 -3
- data/test/rubygems/test_remote_fetch_error.rb +7 -9
- data/test/rubygems/test_require.rb +240 -167
- data/test/rubygems/test_rubygems.rb +74 -0
- data/{lib/rubygems/test_utilities.rb → test/rubygems/utilities.rb} +30 -39
- data/test/test_changelog_generator.rb +17 -0
- metadata +158 -146
- data/.bundle/config +0 -2
- data/.rubocop.yml +0 -91
- data/Gemfile +0 -8
- data/Gemfile.lock +0 -43
- data/Rakefile +0 -428
- data/bundler/CODE_OF_CONDUCT.md +0 -136
- data/bundler/lib/bundler/gemdeps.rb +0 -29
- data/bundler/lib/bundler/psyched_yaml.rb +0 -37
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +0 -66
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
- data/bundler/man/bundle-add.1.txt +0 -58
- data/bundler/man/bundle-binstubs.1.txt +0 -48
- data/bundler/man/bundle-cache.1.txt +0 -78
- data/bundler/man/bundle-check.1.txt +0 -33
- data/bundler/man/bundle-clean.1.txt +0 -26
- data/bundler/man/bundle-config.1.txt +0 -528
- data/bundler/man/bundle-doctor.1.txt +0 -44
- data/bundler/man/bundle-exec.1.txt +0 -178
- data/bundler/man/bundle-gem.1.txt +0 -91
- data/bundler/man/bundle-info.1.txt +0 -21
- data/bundler/man/bundle-init.1.txt +0 -34
- data/bundler/man/bundle-inject.1.txt +0 -32
- data/bundler/man/bundle-install.1.txt +0 -401
- data/bundler/man/bundle-list.1.txt +0 -43
- data/bundler/man/bundle-lock.1.txt +0 -93
- data/bundler/man/bundle-open.1.txt +0 -29
- data/bundler/man/bundle-outdated.1.txt +0 -131
- data/bundler/man/bundle-platform.1.txt +0 -57
- data/bundler/man/bundle-pristine.1.txt +0 -44
- data/bundler/man/bundle-remove.1.txt +0 -34
- data/bundler/man/bundle-show.1.txt +0 -27
- data/bundler/man/bundle-update.1.txt +0 -390
- data/bundler/man/bundle-viz.1.txt +0 -39
- data/bundler/man/bundle.1.txt +0 -116
- data/bundler/man/gemfile.5.txt +0 -649
- data/lib/rubygems/psych_additions.rb +0 -10
- data/lib/rubygems/server.rb +0 -879
- data/lib/rubygems/source_local.rb +0 -7
- data/lib/rubygems/source_specific_file.rb +0 -6
- data/lib/rubygems/syck_hack.rb +0 -79
- data/lib/rubygems/uri_parser.rb +0 -36
- data/lib/rubygems/uri_parsing.rb +0 -23
- data/lib/ubygems.rb +0 -14
- data/test/rubygems/bogussources.rb +0 -9
- data/test/rubygems/data/null-type.gemspec.rz +0 -0
- data/test/rubygems/test_gem_server.rb +0 -612
- data/tmp/.keep +0 -0
- data/util/CL2notes +0 -55
- data/util/bisect +0 -10
- data/util/ci.sh +0 -62
- data/util/cops/deprecations.rb +0 -52
- data/util/create_certs.rb +0 -171
- data/util/create_certs.sh +0 -27
- data/util/create_encrypted_key.rb +0 -16
- data/util/generate_spdx_license_list.rb +0 -63
- data/util/patch_with_prs.rb +0 -77
- data/util/rubocop +0 -8
- data/util/update_bundled_ca_certificates.rb +0 -137
- data/util/update_changelog.rb +0 -64
- /data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
- /data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
- /data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
- /data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
- /data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +0 -0
- /data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
- /data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
- /data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
- /data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
- /data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
@@ -1,11 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require
|
2
|
+
require_relative "helper"
|
3
|
+
require "rubygems"
|
4
4
|
|
5
5
|
class TestGemRequire < Gem::TestCase
|
6
|
-
|
7
6
|
class Latch
|
8
|
-
|
9
7
|
def initialize(count = 1)
|
10
8
|
@count = count
|
11
9
|
@lock = Monitor.new
|
@@ -24,17 +22,6 @@ class TestGemRequire < Gem::TestCase
|
|
24
22
|
@cv.wait_while { @count > 0 }
|
25
23
|
end
|
26
24
|
end
|
27
|
-
|
28
|
-
end
|
29
|
-
|
30
|
-
def setup
|
31
|
-
super
|
32
|
-
|
33
|
-
@old_loaded_features = $LOADED_FEATURES.dup
|
34
|
-
assert_raises LoadError do
|
35
|
-
require 'test_gem_require_a'
|
36
|
-
end
|
37
|
-
$LOADED_FEATURES.replace @old_loaded_features
|
38
25
|
end
|
39
26
|
|
40
27
|
def assert_require(path)
|
@@ -48,26 +35,26 @@ class TestGemRequire < Gem::TestCase
|
|
48
35
|
def test_respect_loaded_features_caching_like_standard_require
|
49
36
|
dir = Dir.mktmpdir("test_require", @tempdir)
|
50
37
|
|
51
|
-
lp1 = File.join dir,
|
52
|
-
foo1 = File.join lp1,
|
38
|
+
lp1 = File.join dir, "foo1"
|
39
|
+
foo1 = File.join lp1, "foo.rb"
|
53
40
|
|
54
41
|
FileUtils.mkdir_p lp1
|
55
|
-
File.open(foo1,
|
42
|
+
File.open(foo1, "w") {|f| f.write "class Object; HELLO = 'foo1' end" }
|
56
43
|
|
57
44
|
lp = $LOAD_PATH.dup
|
58
45
|
|
59
46
|
$LOAD_PATH.unshift lp1
|
60
|
-
assert_require
|
47
|
+
assert_require "foo"
|
61
48
|
assert_equal "foo1", ::Object::HELLO
|
62
49
|
|
63
|
-
lp2 = File.join dir,
|
64
|
-
foo2 = File.join lp2,
|
50
|
+
lp2 = File.join dir, "foo2"
|
51
|
+
foo2 = File.join lp2, "foo.rb"
|
65
52
|
|
66
53
|
FileUtils.mkdir_p lp2
|
67
|
-
File.open(foo2,
|
54
|
+
File.open(foo2, "w") {|f| f.write "class Object; HELLO = 'foo2' end" }
|
68
55
|
|
69
56
|
$LOAD_PATH.unshift lp2
|
70
|
-
refute_require
|
57
|
+
refute_require "foo"
|
71
58
|
assert_equal "foo1", ::Object::HELLO
|
72
59
|
ensure
|
73
60
|
$LOAD_PATH.replace lp
|
@@ -76,32 +63,29 @@ class TestGemRequire < Gem::TestCase
|
|
76
63
|
|
77
64
|
# Providing -I on the commandline should always beat gems
|
78
65
|
def test_dash_i_beats_gems
|
79
|
-
a1 = util_spec "a", "1", {"b" => "= 1"}, "lib/test_gem_require_a.rb"
|
80
|
-
b1 = util_spec "b", "1", {"c" => "> 0"}, "lib/b/c.rb"
|
66
|
+
a1 = util_spec "a", "1", { "b" => "= 1" }, "lib/test_gem_require_a.rb"
|
67
|
+
b1 = util_spec "b", "1", { "c" => "> 0" }, "lib/b/c.rb"
|
81
68
|
c1 = util_spec "c", "1", nil, "lib/c/c.rb"
|
82
69
|
c2 = util_spec "c", "2", nil, "lib/c/c.rb"
|
83
70
|
|
84
71
|
install_specs c1, c2, b1, a1
|
85
72
|
|
86
73
|
dir = Dir.mktmpdir("test_require", @tempdir)
|
87
|
-
dash_i_arg = File.join dir,
|
74
|
+
dash_i_arg = File.join dir, "lib"
|
88
75
|
|
89
|
-
c_rb = File.join dash_i_arg,
|
76
|
+
c_rb = File.join dash_i_arg, "b", "c.rb"
|
90
77
|
|
91
78
|
FileUtils.mkdir_p File.dirname c_rb
|
92
|
-
File.open(c_rb,
|
93
|
-
|
94
|
-
lp = $LOAD_PATH.dup
|
79
|
+
File.open(c_rb, "w") {|f| f.write "class Object; HELLO = 'world' end" }
|
95
80
|
|
96
81
|
# Pretend to provide a commandline argument that overrides a file in gem b
|
97
82
|
$LOAD_PATH.unshift dash_i_arg
|
98
83
|
|
99
|
-
assert_require
|
100
|
-
assert_require
|
84
|
+
assert_require "test_gem_require_a"
|
85
|
+
assert_require "b/c" # this should be required from -I
|
101
86
|
assert_equal "world", ::Object::HELLO
|
102
|
-
assert_equal %w
|
87
|
+
assert_equal %w[a-1 b-1], loaded_spec_names
|
103
88
|
ensure
|
104
|
-
$LOAD_PATH.replace lp
|
105
89
|
Object.send :remove_const, :HELLO if Object.const_defined? :HELLO
|
106
90
|
end
|
107
91
|
|
@@ -118,53 +102,45 @@ class TestGemRequire < Gem::TestCase
|
|
118
102
|
|
119
103
|
# Providing -I on the commandline should always beat gems
|
120
104
|
def test_dash_i_beats_default_gems
|
121
|
-
a1 = new_default_spec "a", "1", {"b" => "= 1"}, "test_gem_require_a.rb"
|
122
|
-
b1 = new_default_spec "b", "1", {"c" => "> 0"}, "b/c.rb"
|
105
|
+
a1 = new_default_spec "a", "1", { "b" => "= 1" }, "test_gem_require_a.rb"
|
106
|
+
b1 = new_default_spec "b", "1", { "c" => "> 0" }, "b/c.rb"
|
123
107
|
c1 = new_default_spec "c", "1", nil, "c/c.rb"
|
124
108
|
c2 = new_default_spec "c", "2", nil, "c/c.rb"
|
125
109
|
|
126
|
-
|
110
|
+
install_default_gems c1, c2, b1, a1
|
127
111
|
|
128
112
|
dir = Dir.mktmpdir("test_require", @tempdir)
|
129
|
-
dash_i_arg = File.join dir,
|
113
|
+
dash_i_arg = File.join dir, "lib"
|
130
114
|
|
131
|
-
c_rb = File.join dash_i_arg,
|
115
|
+
c_rb = File.join dash_i_arg, "c", "c.rb"
|
132
116
|
|
133
117
|
FileUtils.mkdir_p File.dirname c_rb
|
134
|
-
File.open(c_rb,
|
118
|
+
File.open(c_rb, "w") {|f| f.write "class Object; HELLO = 'world' end" }
|
135
119
|
|
136
|
-
assert_require
|
137
|
-
|
138
|
-
lp = $LOAD_PATH.dup
|
120
|
+
assert_require "test_gem_require_a"
|
139
121
|
|
140
122
|
# Pretend to provide a commandline argument that overrides a file in gem b
|
141
123
|
$LOAD_PATH.unshift dash_i_arg
|
142
124
|
|
143
|
-
assert_require
|
144
|
-
assert_require
|
125
|
+
assert_require "b/c"
|
126
|
+
assert_require "c/c" # this should be required from -I
|
145
127
|
assert_equal "world", ::Object::HELLO
|
146
|
-
assert_equal %w
|
128
|
+
assert_equal %w[a-1 b-1], loaded_spec_names
|
147
129
|
ensure
|
148
|
-
$LOAD_PATH.replace lp
|
149
130
|
Object.send :remove_const, :HELLO if Object.const_defined? :HELLO
|
150
131
|
end
|
151
132
|
|
152
133
|
def test_dash_i_respects_default_library_extension_priority
|
153
|
-
|
134
|
+
pend "extensions don't quite work on jruby" if Gem.java_platform?
|
135
|
+
pend "not installed yet" unless RbConfig::TOPDIR
|
154
136
|
|
155
|
-
dash_i_ext_arg = util_install_extension_file(
|
156
|
-
dash_i_lib_arg = util_install_ruby_file(
|
137
|
+
dash_i_ext_arg = util_install_extension_file("a")
|
138
|
+
dash_i_lib_arg = util_install_ruby_file("a")
|
157
139
|
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
$LOAD_PATH.unshift dash_i_ext_arg
|
163
|
-
assert_require 'a'
|
164
|
-
assert_match(/a\.rb$/, $LOADED_FEATURES.last)
|
165
|
-
ensure
|
166
|
-
$LOAD_PATH.replace lp
|
167
|
-
end
|
140
|
+
$LOAD_PATH.unshift dash_i_lib_arg
|
141
|
+
$LOAD_PATH.unshift dash_i_ext_arg
|
142
|
+
assert_require "a"
|
143
|
+
assert_match(/a\.rb$/, $LOADED_FEATURES.last)
|
168
144
|
end
|
169
145
|
|
170
146
|
def test_concurrent_require
|
@@ -176,8 +152,8 @@ class TestGemRequire < Gem::TestCase
|
|
176
152
|
|
177
153
|
install_specs a1, b1
|
178
154
|
|
179
|
-
t1 = create_sync_thread{ assert_require "a#{$$}" }
|
180
|
-
t2 = create_sync_thread{ assert_require "b#{$$}" }
|
155
|
+
t1 = create_sync_thread { assert_require "a#{$$}" }
|
156
|
+
t2 = create_sync_thread { assert_require "b#{$$}" }
|
181
157
|
|
182
158
|
# wait until both files are waiting on the exit latch
|
183
159
|
FILE_ENTERED_LATCH.await
|
@@ -193,47 +169,47 @@ class TestGemRequire < Gem::TestCase
|
|
193
169
|
end
|
194
170
|
|
195
171
|
def test_require_is_not_lazy_with_exact_req
|
196
|
-
a1 = util_spec "a", "1", {"b" => "= 1"}, "lib/test_gem_require_a.rb"
|
172
|
+
a1 = util_spec "a", "1", { "b" => "= 1" }, "lib/test_gem_require_a.rb"
|
197
173
|
b1 = util_spec "b", "1", nil, "lib/b/c.rb"
|
198
174
|
b2 = util_spec "b", "2", nil, "lib/b/c.rb"
|
199
175
|
|
200
176
|
install_specs b1, b2, a1
|
201
177
|
|
202
|
-
assert_require
|
203
|
-
assert_equal %w
|
178
|
+
assert_require "test_gem_require_a"
|
179
|
+
assert_equal %w[a-1 b-1], loaded_spec_names
|
204
180
|
assert_equal unresolved_names, []
|
205
181
|
|
206
182
|
assert_require "b/c"
|
207
|
-
assert_equal %w
|
183
|
+
assert_equal %w[a-1 b-1], loaded_spec_names
|
208
184
|
end
|
209
185
|
|
210
186
|
def test_require_is_lazy_with_inexact_req
|
211
|
-
a1 = util_spec "a", "1", {"b" => ">= 1"}, "lib/test_gem_require_a.rb"
|
187
|
+
a1 = util_spec "a", "1", { "b" => ">= 1" }, "lib/test_gem_require_a.rb"
|
212
188
|
b1 = util_spec "b", "1", nil, "lib/b/c.rb"
|
213
189
|
b2 = util_spec "b", "2", nil, "lib/b/c.rb"
|
214
190
|
|
215
191
|
install_specs b1, b2, a1
|
216
192
|
|
217
|
-
assert_require
|
218
|
-
assert_equal %w
|
193
|
+
assert_require "test_gem_require_a"
|
194
|
+
assert_equal %w[a-1], loaded_spec_names
|
219
195
|
assert_equal unresolved_names, ["b (>= 1)"]
|
220
196
|
|
221
197
|
assert_require "b/c"
|
222
|
-
assert_equal %w
|
198
|
+
assert_equal %w[a-1 b-2], loaded_spec_names
|
223
199
|
end
|
224
200
|
|
225
201
|
def test_require_is_not_lazy_with_one_possible
|
226
|
-
a1 = util_spec "a", "1", {"b" => ">= 1"}, "lib/test_gem_require_a.rb"
|
202
|
+
a1 = util_spec "a", "1", { "b" => ">= 1" }, "lib/test_gem_require_a.rb"
|
227
203
|
b1 = util_spec "b", "1", nil, "lib/b/c.rb"
|
228
204
|
|
229
205
|
install_specs b1, a1
|
230
206
|
|
231
|
-
assert_require
|
232
|
-
assert_equal %w
|
207
|
+
assert_require "test_gem_require_a"
|
208
|
+
assert_equal %w[a-1 b-1], loaded_spec_names
|
233
209
|
assert_equal unresolved_names, []
|
234
210
|
|
235
211
|
assert_require "b/c"
|
236
|
-
assert_equal %w
|
212
|
+
assert_equal %w[a-1 b-1], loaded_spec_names
|
237
213
|
end
|
238
214
|
|
239
215
|
def test_require_can_use_a_pathname_object
|
@@ -241,43 +217,88 @@ class TestGemRequire < Gem::TestCase
|
|
241
217
|
|
242
218
|
install_specs a1
|
243
219
|
|
244
|
-
assert_require Pathname.new
|
245
|
-
assert_equal %w
|
220
|
+
assert_require Pathname.new "test_gem_require_a"
|
221
|
+
assert_equal %w[a-1], loaded_spec_names
|
246
222
|
assert_equal unresolved_names, []
|
247
223
|
end
|
248
224
|
|
249
225
|
def test_activate_via_require_respects_loaded_files
|
250
|
-
|
226
|
+
pend "Not sure what's going on. If another spec creates a 'a' gem before
|
251
227
|
this test, somehow require will load the benchmark in b, and ignore that the
|
252
228
|
stdlib one is already in $LOADED_FEATURES?. Reproducible by running the
|
253
229
|
spaceship_specific_file test before this one" if java_platform?
|
254
230
|
|
255
|
-
|
256
|
-
|
257
|
-
|
231
|
+
pend "not installed yet" unless RbConfig::TOPDIR
|
232
|
+
|
233
|
+
lib_dir = File.expand_path("../lib", __dir__)
|
234
|
+
rubylibdir = File.realdirpath(RbConfig::CONFIG["rubylibdir"])
|
235
|
+
if rubylibdir == lib_dir
|
236
|
+
# testing in the ruby repository where RubyGems' lib/ == stdlib lib/
|
237
|
+
# In that case we want to move the stdlib lib/ to still be after b-2 in $LOAD_PATH
|
238
|
+
lp = $LOAD_PATH.dup
|
258
239
|
$LOAD_PATH.delete lib_dir
|
259
240
|
$LOAD_PATH.push lib_dir
|
241
|
+
load_path_changed = true
|
260
242
|
end
|
261
243
|
|
262
|
-
|
244
|
+
require "benchmark" # the stdlib
|
245
|
+
|
246
|
+
a1 = util_spec "a", "1", { "b" => ">= 1" }, "lib/test_gem_require_a.rb"
|
263
247
|
b1 = util_spec "b", "1", nil, "lib/benchmark.rb"
|
264
248
|
b2 = util_spec "b", "2", nil, "lib/benchmark.rb"
|
265
249
|
|
266
250
|
install_specs b1, b2, a1
|
267
251
|
|
268
|
-
|
252
|
+
# Activates a-1, but not b-1 and b-2
|
253
|
+
assert_require "test_gem_require_a"
|
254
|
+
assert_equal %w[a-1], loaded_spec_names
|
255
|
+
assert $LOAD_PATH.include? a1.load_paths[0]
|
256
|
+
refute $LOAD_PATH.include? b1.load_paths[0]
|
257
|
+
refute $LOAD_PATH.include? b2.load_paths[0]
|
258
|
+
|
269
259
|
assert_equal unresolved_names, ["b (>= 1)"]
|
270
260
|
|
271
|
-
|
261
|
+
# The require('benchmark') below will activate b-2. However, its
|
262
|
+
# lib/benchmark.rb won't ever be loaded. The reason is MRI sees that even
|
263
|
+
# though b-2 is earlier in $LOAD_PATH it already loaded a benchmark.rb file
|
264
|
+
# and that still exists in $LOAD_PATH (further down),
|
265
|
+
# and as a result #gem_original_require returns false.
|
266
|
+
refute require("benchmark"), "the benchmark stdlib should be recognized as already loaded"
|
267
|
+
|
268
|
+
assert_includes $LOAD_PATH, b2.load_paths[0]
|
269
|
+
assert_includes $LOAD_PATH, rubylibdir
|
270
|
+
message = proc {
|
271
|
+
"this test relies on the b-2 gem lib/ to be before stdlib to make sense\n" +
|
272
|
+
$LOAD_PATH.pretty_inspect
|
273
|
+
}
|
274
|
+
assert_operator $LOAD_PATH.index(b2.load_paths[0]), :<, $LOAD_PATH.index(rubylibdir), message
|
272
275
|
|
273
276
|
# We detected that we should activate b-2, so we did so, but
|
274
|
-
# then
|
275
|
-
# This case is fine because our lazy loading
|
277
|
+
# then #gem_original_require decided "I've already got some benchmark.rb" loaded.
|
278
|
+
# This case is fine because our lazy loading provided exactly
|
276
279
|
# the same behavior as eager loading would have.
|
277
280
|
|
278
|
-
assert_equal %w
|
281
|
+
assert_equal %w[a-1 b-2], loaded_spec_names
|
279
282
|
ensure
|
280
|
-
$LOAD_PATH.replace lp
|
283
|
+
$LOAD_PATH.replace lp if load_path_changed
|
284
|
+
end
|
285
|
+
|
286
|
+
def test_activate_via_require_respects_loaded_default_from_default_gems
|
287
|
+
a1 = new_default_spec "a", "1", nil, "a.rb"
|
288
|
+
|
289
|
+
# simulate requiring a default gem before rubygems is loaded
|
290
|
+
Kernel.send(:gem_original_require, "a")
|
291
|
+
|
292
|
+
# simulate registering default specs on loading rubygems
|
293
|
+
install_default_gems a1
|
294
|
+
|
295
|
+
a2 = util_spec "a", "2", nil, "lib/a.rb"
|
296
|
+
|
297
|
+
install_specs a2
|
298
|
+
|
299
|
+
refute_require "a"
|
300
|
+
|
301
|
+
assert_equal %w[a-1], loaded_spec_names
|
281
302
|
end
|
282
303
|
|
283
304
|
def test_already_activated_direct_conflict
|
@@ -291,12 +312,12 @@ class TestGemRequire < Gem::TestCase
|
|
291
312
|
|
292
313
|
a1.activate
|
293
314
|
c1.activate
|
294
|
-
assert_equal %w
|
315
|
+
assert_equal %w[a-1 c-1], loaded_spec_names
|
295
316
|
assert_equal ["b (> 0)"], unresolved_names
|
296
317
|
|
297
318
|
assert require("ib")
|
298
319
|
|
299
|
-
assert_equal %w
|
320
|
+
assert_equal %w[a-1 b-1 c-1], loaded_spec_names
|
300
321
|
assert_equal [], unresolved_names
|
301
322
|
end
|
302
323
|
|
@@ -313,10 +334,10 @@ class TestGemRequire < Gem::TestCase
|
|
313
334
|
|
314
335
|
a1.activate
|
315
336
|
c1.activate
|
316
|
-
assert_equal %w
|
337
|
+
assert_equal %w[a-1 c-1], loaded_spec_names
|
317
338
|
assert_equal ["b (> 0)", "x (> 0)"], unresolved_names
|
318
339
|
|
319
|
-
e =
|
340
|
+
e = assert_raise(Gem::LoadError) do
|
320
341
|
require("ib")
|
321
342
|
end
|
322
343
|
|
@@ -336,10 +357,10 @@ class TestGemRequire < Gem::TestCase
|
|
336
357
|
|
337
358
|
a1.activate
|
338
359
|
c1.activate
|
339
|
-
assert_equal %w
|
360
|
+
assert_equal %w[a-1 c-1], loaded_spec_names
|
340
361
|
assert_equal ["b (> 0)"], unresolved_names
|
341
362
|
|
342
|
-
e =
|
363
|
+
e = assert_raise(Gem::LoadError) do
|
343
364
|
require("ib")
|
344
365
|
end
|
345
366
|
|
@@ -357,31 +378,31 @@ class TestGemRequire < Gem::TestCase
|
|
357
378
|
|
358
379
|
# Load default ruby gems fresh as if we've just started a ruby script.
|
359
380
|
Gem::Specification.reset
|
360
|
-
require
|
381
|
+
require "rubygems"
|
361
382
|
Gem::Specification.stubs
|
362
383
|
|
363
384
|
# Remove an old default gem version directly from disk as if someone ran
|
364
385
|
# gem cleanup.
|
365
|
-
FileUtils.rm_rf(File.join @
|
366
|
-
FileUtils.rm_rf(File.join @
|
386
|
+
FileUtils.rm_rf(File.join @gemhome, "#{b1.full_name}")
|
387
|
+
FileUtils.rm_rf(File.join @gemhome, "specifications", "default", "#{b1.full_name}.gemspec")
|
367
388
|
|
368
389
|
# Require gems that have not been removed.
|
369
|
-
assert_require
|
370
|
-
assert_equal %w
|
371
|
-
assert_require
|
372
|
-
assert_equal %w
|
390
|
+
assert_require "a/b"
|
391
|
+
assert_equal %w[a-1.0], loaded_spec_names
|
392
|
+
assert_require "b/d"
|
393
|
+
assert_equal %w[a-1.0 b-2.0], loaded_spec_names
|
373
394
|
end
|
374
395
|
|
375
396
|
def test_require_doesnt_traverse_development_dependencies
|
376
397
|
a = util_spec("a#{$$}", "1", nil, "lib/a#{$$}.rb")
|
377
398
|
z = util_spec("z", "1", "w" => "> 0")
|
378
|
-
w1 = util_spec("w", "1") {
|
379
|
-
w2 = util_spec("w", "2") {
|
399
|
+
w1 = util_spec("w", "1") {|s| s.add_development_dependency "non-existent" }
|
400
|
+
w2 = util_spec("w", "2") {|s| s.add_development_dependency "non-existent" }
|
380
401
|
|
381
402
|
install_specs a, w1, w2, z
|
382
403
|
|
383
404
|
assert gem("z")
|
384
|
-
assert_equal %w
|
405
|
+
assert_equal %w[z-1], loaded_spec_names
|
385
406
|
assert_equal ["w (> 0)"], unresolved_names
|
386
407
|
|
387
408
|
assert require("a#{$$}")
|
@@ -390,15 +411,15 @@ class TestGemRequire < Gem::TestCase
|
|
390
411
|
def test_default_gem_only
|
391
412
|
default_gem_spec = new_default_spec("default", "2.0.0.0",
|
392
413
|
nil, "default/gem.rb")
|
393
|
-
|
414
|
+
install_default_gems(default_gem_spec)
|
394
415
|
assert_require "default/gem"
|
395
|
-
assert_equal %w
|
416
|
+
assert_equal %w[default-2.0.0.0], loaded_spec_names
|
396
417
|
end
|
397
418
|
|
398
419
|
def test_default_gem_require_activates_just_once
|
399
420
|
default_gem_spec = new_default_spec("default", "2.0.0.0",
|
400
421
|
nil, "default/gem.rb")
|
401
|
-
|
422
|
+
install_default_gems(default_gem_spec)
|
402
423
|
|
403
424
|
assert_require "default/gem"
|
404
425
|
|
@@ -423,40 +444,90 @@ class TestGemRequire < Gem::TestCase
|
|
423
444
|
end
|
424
445
|
|
425
446
|
def test_realworld_default_gem
|
426
|
-
|
427
|
-
skip "this test can't work under ruby-core setup" if testing_ruby_repo || java_platform?
|
447
|
+
omit "this test can't work under ruby-core setup" if ruby_repo?
|
428
448
|
|
429
449
|
cmd = <<-RUBY
|
430
450
|
$stderr = $stdout
|
431
451
|
require "json"
|
432
452
|
puts Gem.loaded_specs["json"]
|
433
453
|
RUBY
|
434
|
-
output = Gem::Util.popen(
|
454
|
+
output = Gem::Util.popen(*ruby_with_rubygems_in_load_path, "-e", cmd).strip
|
455
|
+
assert $?.success?
|
435
456
|
refute_empty output
|
436
457
|
end
|
437
458
|
|
459
|
+
def test_realworld_upgraded_default_gem
|
460
|
+
omit "this test can't work under ruby-core setup" if ruby_repo?
|
461
|
+
|
462
|
+
newer_json = util_spec("json", "999.99.9", nil, ["lib/json.rb"])
|
463
|
+
install_gem newer_json
|
464
|
+
|
465
|
+
path = "#{@tempdir}/test_realworld_upgraded_default_gem.rb"
|
466
|
+
code = <<-RUBY
|
467
|
+
$stderr = $stdout
|
468
|
+
require "json"
|
469
|
+
puts Gem.loaded_specs["json"].version
|
470
|
+
puts $LOADED_FEATURES
|
471
|
+
RUBY
|
472
|
+
File.write(path, code)
|
473
|
+
|
474
|
+
output = Gem::Util.popen({ "GEM_HOME" => @gemhome }, *ruby_with_rubygems_in_load_path, path).strip
|
475
|
+
assert $?.success?
|
476
|
+
refute_empty output
|
477
|
+
assert_equal "999.99.9", output.lines[0].chomp
|
478
|
+
# Make sure only files from the newer json gem are loaded, and no files from the default json gem
|
479
|
+
assert_equal ["#{@gemhome}/gems/json-999.99.9/lib/json.rb"], output.lines.grep(%r{/gems/json-}).map(&:chomp)
|
480
|
+
end
|
481
|
+
|
438
482
|
def test_default_gem_and_normal_gem
|
439
483
|
default_gem_spec = new_default_spec("default", "2.0.0.0",
|
440
484
|
nil, "default/gem.rb")
|
441
|
-
|
485
|
+
install_default_gems(default_gem_spec)
|
442
486
|
normal_gem_spec = util_spec("default", "3.0", nil,
|
443
487
|
"lib/default/gem.rb")
|
444
488
|
install_specs(normal_gem_spec)
|
445
489
|
assert_require "default/gem"
|
446
|
-
assert_equal %w
|
490
|
+
assert_equal %w[default-3.0], loaded_spec_names
|
491
|
+
end
|
492
|
+
|
493
|
+
def test_normal_gems_with_overridden_load_error_message
|
494
|
+
normal_gem_spec = util_spec("normal", "3.0", nil, "lib/normal/gem.rb")
|
495
|
+
|
496
|
+
install_specs(normal_gem_spec)
|
497
|
+
|
498
|
+
File.write("require_with_overridden_load_error_message.rb", <<-RUBY)
|
499
|
+
LoadError.class_eval do
|
500
|
+
def message
|
501
|
+
"Overridden message"
|
502
|
+
end
|
503
|
+
end
|
504
|
+
|
505
|
+
require 'normal/gem'
|
506
|
+
RUBY
|
507
|
+
|
508
|
+
require "open3"
|
509
|
+
|
510
|
+
output, exit_status = Open3.capture2e(
|
511
|
+
{ "GEM_HOME" => Gem.paths.home },
|
512
|
+
*ruby_with_rubygems_in_load_path,
|
513
|
+
"-r",
|
514
|
+
"./require_with_overridden_load_error_message.rb"
|
515
|
+
)
|
516
|
+
|
517
|
+
assert exit_status.success?, "Require failed due to #{output}"
|
447
518
|
end
|
448
519
|
|
449
520
|
def test_default_gem_prerelease
|
450
521
|
default_gem_spec = new_default_spec("default", "2.0.0",
|
451
522
|
nil, "default/gem.rb")
|
452
|
-
|
523
|
+
install_default_gems(default_gem_spec)
|
453
524
|
|
454
525
|
normal_gem_higher_prerelease_spec = util_spec("default", "3.0.0.rc2", nil,
|
455
526
|
"lib/default/gem.rb")
|
456
|
-
|
527
|
+
install_default_gems(normal_gem_higher_prerelease_spec)
|
457
528
|
|
458
529
|
assert_require "default/gem"
|
459
|
-
assert_equal %w
|
530
|
+
assert_equal %w[default-3.0.0.rc2], loaded_spec_names
|
460
531
|
end
|
461
532
|
|
462
533
|
def loaded_spec_names
|
@@ -470,23 +541,19 @@ class TestGemRequire < Gem::TestCase
|
|
470
541
|
def test_try_activate_error_unlocks_require_monitor
|
471
542
|
silence_warnings do
|
472
543
|
class << ::Gem
|
473
|
-
|
474
544
|
alias old_try_activate try_activate
|
475
|
-
def try_activate(*); raise
|
476
|
-
|
545
|
+
def try_activate(*); raise "raised from try_activate"; end
|
477
546
|
end
|
478
547
|
end
|
479
548
|
|
480
|
-
require
|
549
|
+
require "does_not_exist_for_try_activate_test"
|
481
550
|
rescue RuntimeError => e
|
482
551
|
assert_match(/raised from try_activate/, e.message)
|
483
552
|
assert Kernel::RUBYGEMS_ACTIVATION_MONITOR.try_enter, "require monitor was not unlocked when try_activate raised"
|
484
553
|
ensure
|
485
554
|
silence_warnings do
|
486
555
|
class << ::Gem
|
487
|
-
|
488
556
|
alias try_activate old_try_activate
|
489
|
-
|
490
557
|
end
|
491
558
|
end
|
492
559
|
Kernel::RUBYGEMS_ACTIVATION_MONITOR.exit
|
@@ -495,14 +562,14 @@ class TestGemRequire < Gem::TestCase
|
|
495
562
|
def test_require_when_gem_defined
|
496
563
|
default_gem_spec = new_default_spec("default", "2.0.0.0",
|
497
564
|
nil, "default/gem.rb")
|
498
|
-
|
565
|
+
install_default_gems(default_gem_spec)
|
499
566
|
c = Class.new do
|
500
567
|
def self.gem(*args)
|
501
568
|
raise "received #gem with #{args.inspect}"
|
502
569
|
end
|
503
570
|
end
|
504
571
|
assert c.send(:require, "default/gem")
|
505
|
-
assert_equal %w
|
572
|
+
assert_equal %w[default-2.0.0.0], loaded_spec_names
|
506
573
|
end
|
507
574
|
|
508
575
|
def test_require_default_when_gem_defined
|
@@ -514,89 +581,96 @@ class TestGemRequire < Gem::TestCase
|
|
514
581
|
end
|
515
582
|
end
|
516
583
|
assert c.send(:require, "a#{$$}")
|
517
|
-
assert_equal %W
|
584
|
+
assert_equal %W[a#{$$}-1], loaded_spec_names
|
518
585
|
end
|
519
586
|
|
520
587
|
def test_require_bundler
|
521
|
-
b1 = util_spec(
|
522
|
-
b2a = util_spec(
|
588
|
+
b1 = util_spec("bundler", "1", nil, "lib/bundler/setup.rb")
|
589
|
+
b2a = util_spec("bundler", "2.a", nil, "lib/bundler/setup.rb")
|
523
590
|
install_specs b1, b2a
|
524
591
|
|
525
592
|
require "rubygems/bundler_version_finder"
|
526
593
|
$:.clear
|
527
|
-
assert_require
|
594
|
+
assert_require "bundler/setup"
|
528
595
|
assert_equal %w[bundler-2.a], loaded_spec_names
|
529
596
|
assert_empty unresolved_names
|
530
597
|
end
|
531
598
|
|
532
|
-
def test_require_bundler_missing_bundler_version
|
533
|
-
Gem::BundlerVersionFinder.stub(:bundler_version_with_reason, ["55", "reason"]) do
|
534
|
-
b1 = util_spec('bundler', '1.999999999', nil, "lib/bundler/setup.rb")
|
535
|
-
b2a = util_spec('bundler', '2.a', nil, "lib/bundler/setup.rb")
|
536
|
-
install_specs b1, b2a
|
537
|
-
|
538
|
-
e = assert_raises Gem::MissingSpecVersionError do
|
539
|
-
gem('bundler')
|
540
|
-
end
|
541
|
-
assert_match "Could not find 'bundler' (55) required by reason.", e.message
|
542
|
-
end
|
543
|
-
end
|
544
|
-
|
545
|
-
def test_require_bundler_with_bundler_version
|
546
|
-
Gem::BundlerVersionFinder.stub(:bundler_version_with_reason, ["1", "reason"]) do
|
547
|
-
b1 = util_spec('bundler', '1.999999999', nil, "lib/bundler/setup.rb")
|
548
|
-
b2 = util_spec('bundler', '2', nil, "lib/bundler/setup.rb")
|
549
|
-
install_specs b1, b2
|
550
|
-
|
551
|
-
$:.clear
|
552
|
-
assert_require 'bundler/setup'
|
553
|
-
assert_equal %w[bundler-1.999999999], loaded_spec_names
|
554
|
-
end
|
555
|
-
end
|
556
|
-
|
557
599
|
# uplevel is 2.5+ only
|
558
600
|
if RUBY_VERSION >= "2.5"
|
559
601
|
["", "Kernel."].each do |prefix|
|
560
602
|
define_method "test_no_kernel_require_in_#{prefix.tr(".", "_")}warn_with_uplevel" do
|
561
|
-
lib = File.realpath("../../../lib", __FILE__)
|
562
603
|
Dir.mktmpdir("warn_test") do |dir|
|
563
604
|
File.write(dir + "/sub.rb", "#{prefix}warn 'uplevel', 'test', uplevel: 1\n")
|
564
605
|
File.write(dir + "/main.rb", "require 'sub'\n")
|
565
606
|
_, err = capture_subprocess_io do
|
566
|
-
system(
|
607
|
+
system(*ruby_with_rubygems_in_load_path, "-w", "--disable=gems", "-C", dir, "-I", dir, "main.rb")
|
567
608
|
end
|
568
609
|
assert_match(/main\.rb:1: warning: uplevel\ntest\n$/, err)
|
569
610
|
_, err = capture_subprocess_io do
|
570
|
-
system(
|
611
|
+
system(*ruby_with_rubygems_in_load_path, "-w", "--enable=gems", "-C", dir, "-I", dir, "main.rb")
|
571
612
|
end
|
572
613
|
assert_match(/main\.rb:1: warning: uplevel\ntest\n$/, err)
|
573
614
|
end
|
574
615
|
end
|
575
616
|
|
576
617
|
define_method "test_no_other_behavioral_changes_with_#{prefix.tr(".", "_")}warn" do
|
577
|
-
lib = File.realpath("../../../lib", __FILE__)
|
578
618
|
Dir.mktmpdir("warn_test") do |dir|
|
579
619
|
File.write(dir + "/main.rb", "#{prefix}warn({x:1}, {y:2}, [])\n")
|
580
620
|
_, err = capture_subprocess_io do
|
581
|
-
system(
|
621
|
+
system(*ruby_with_rubygems_in_load_path, "-w", "--disable=gems", "-C", dir, "main.rb")
|
582
622
|
end
|
583
623
|
assert_match(/{:x=>1}\n{:y=>2}\n$/, err)
|
584
624
|
_, err = capture_subprocess_io do
|
585
|
-
system(
|
625
|
+
system(*ruby_with_rubygems_in_load_path, "-w", "--enable=gems", "-C", dir, "main.rb")
|
586
626
|
end
|
587
627
|
assert_match(/{:x=>1}\n{:y=>2}\n$/, err)
|
588
628
|
end
|
589
629
|
end
|
590
630
|
end
|
591
|
-
end
|
592
631
|
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
632
|
+
def test_no_crash_when_overriding_warn_with_warning_module
|
633
|
+
Dir.mktmpdir("warn_test") do |dir|
|
634
|
+
File.write(dir + "/main.rb", "module Warning; def warn(str); super; end; end; warn 'Foo Bar'")
|
635
|
+
_, err = capture_subprocess_io do
|
636
|
+
system(*ruby_with_rubygems_in_load_path, "-w", "--disable=gems", "-C", dir, "main.rb")
|
637
|
+
end
|
638
|
+
assert_match(/Foo Bar\n$/, err)
|
639
|
+
_, err = capture_subprocess_io do
|
640
|
+
system(*ruby_with_rubygems_in_load_path, "-w", "--enable=gems", "-C", dir, "main.rb")
|
641
|
+
end
|
642
|
+
assert_match(/Foo Bar\n$/, err)
|
643
|
+
end
|
644
|
+
end
|
645
|
+
|
646
|
+
def test_expected_backtrace_location_when_inheriting_from_basic_object_and_including_kernel
|
647
|
+
Dir.mktmpdir("warn_test") do |dir|
|
648
|
+
File.write(dir + "/main.rb", "\nrequire 'sub'\n")
|
649
|
+
File.write(dir + "/sub.rb", <<-'RUBY')
|
650
|
+
require 'rubygems'
|
651
|
+
class C < BasicObject
|
652
|
+
include ::Kernel
|
653
|
+
def deprecated
|
654
|
+
warn "This is a deprecated method", uplevel: 2
|
655
|
+
end
|
656
|
+
end
|
657
|
+
C.new.deprecated
|
658
|
+
RUBY
|
659
|
+
|
660
|
+
_, err = capture_subprocess_io do
|
661
|
+
system(*ruby_with_rubygems_in_load_path, "-w", "--disable=gems", "-C", dir, "-I", dir, "main.rb")
|
662
|
+
end
|
663
|
+
assert_match(/main\.rb:2: warning: This is a deprecated method$/, err)
|
664
|
+
_, err = capture_subprocess_io do
|
665
|
+
system(*ruby_with_rubygems_in_load_path, "-w", "--enable=gems", "-C", dir, "-I", dir, "main.rb")
|
666
|
+
end
|
667
|
+
assert_match(/main\.rb:2: warning: This is a deprecated method$/, err)
|
668
|
+
end
|
669
|
+
end
|
598
670
|
end
|
599
671
|
|
672
|
+
private
|
673
|
+
|
600
674
|
def util_install_extension_file(name)
|
601
675
|
spec = quick_gem name
|
602
676
|
util_build_gem spec
|
@@ -621,12 +695,12 @@ class TestGemRequire < Gem::TestCase
|
|
621
695
|
spec.files += ["extconf.rb", "depend", "#{name}.c"]
|
622
696
|
|
623
697
|
so = File.join(spec.gem_dir, "#{name}.#{RbConfig::CONFIG["DLEXT"]}")
|
624
|
-
|
698
|
+
assert_path_not_exist so
|
625
699
|
|
626
700
|
path = Gem::Package.build spec
|
627
701
|
installer = Gem::Installer.at path
|
628
702
|
installer.install
|
629
|
-
|
703
|
+
assert_path_exist so
|
630
704
|
|
631
705
|
spec.gem_dir
|
632
706
|
end
|
@@ -638,9 +712,8 @@ class TestGemRequire < Gem::TestCase
|
|
638
712
|
a_rb = File.join dash_i_lib_arg, "#{name}.rb"
|
639
713
|
|
640
714
|
FileUtils.mkdir_p File.dirname a_rb
|
641
|
-
File.open(a_rb,
|
715
|
+
File.open(a_rb, "w") {|f| f.write "# #{name}.rb" }
|
642
716
|
|
643
717
|
dash_i_lib_arg
|
644
718
|
end
|
645
|
-
|
646
719
|
end
|