rubygems-update 3.1.2 → 3.2.3
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/CODE_OF_CONDUCT.md +55 -19
- data/CONTRIBUTING.md +25 -11
- data/History.txt +460 -232
- data/Manifest.txt +47 -77
- data/POLICIES.md +6 -12
- data/README.md +5 -5
- data/Rakefile +59 -83
- data/bin/update_rubygems +1 -1
- data/bundler/CHANGELOG.md +1598 -1421
- data/bundler/README.md +6 -8
- data/bundler/UPGRADING.md +18 -32
- data/bundler/bundler.gemspec +3 -3
- data/bundler/exe/bundle +3 -0
- data/bundler/lib/bundler.rb +32 -7
- data/bundler/lib/bundler/build_metadata.rb +4 -12
- data/bundler/lib/bundler/cli.rb +58 -21
- 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 +1 -7
- data/bundler/lib/bundler/cli/clean.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +14 -0
- data/bundler/lib/bundler/cli/console.rb +1 -1
- data/bundler/lib/bundler/cli/doctor.rb +1 -1
- data/bundler/lib/bundler/cli/exec.rb +4 -4
- data/bundler/lib/bundler/cli/fund.rb +36 -0
- data/bundler/lib/bundler/cli/gem.rb +84 -11
- data/bundler/lib/bundler/cli/info.rb +15 -4
- data/bundler/lib/bundler/cli/init.rb +2 -2
- data/bundler/lib/bundler/cli/inject.rb +1 -1
- data/bundler/lib/bundler/cli/install.rb +16 -13
- data/bundler/lib/bundler/cli/issue.rb +2 -2
- data/bundler/lib/bundler/cli/list.rb +12 -10
- data/bundler/lib/bundler/cli/outdated.rb +87 -66
- data/bundler/lib/bundler/cli/plugin.rb +10 -0
- data/bundler/lib/bundler/cli/pristine.rb +5 -0
- data/bundler/lib/bundler/cli/show.rb +1 -1
- data/bundler/lib/bundler/cli/update.rb +3 -1
- data/bundler/lib/bundler/compact_index_client.rb +1 -1
- data/bundler/lib/bundler/compact_index_client/cache.rb +6 -14
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
- data/bundler/lib/bundler/compact_index_client/updater.rb +5 -5
- data/bundler/lib/bundler/definition.rb +65 -76
- data/bundler/lib/bundler/dep_proxy.rb +1 -1
- data/bundler/lib/bundler/dependency.rb +3 -10
- data/bundler/lib/bundler/dsl.rb +5 -9
- data/bundler/lib/bundler/endpoint_specification.rb +1 -1
- data/bundler/lib/bundler/env.rb +1 -1
- data/bundler/lib/bundler/environment_preserver.rb +26 -2
- data/bundler/lib/bundler/errors.rb +1 -0
- data/bundler/lib/bundler/feature_flag.rb +0 -3
- data/bundler/lib/bundler/fetcher.rb +4 -3
- data/bundler/lib/bundler/fetcher/base.rb +1 -1
- data/bundler/lib/bundler/fetcher/compact_index.rb +1 -1
- data/bundler/lib/bundler/fetcher/downloader.rb +1 -1
- data/bundler/lib/bundler/fetcher/index.rb +3 -4
- data/bundler/lib/bundler/friendly_errors.rb +22 -13
- data/bundler/lib/bundler/gem_helper.rb +33 -19
- data/bundler/lib/bundler/gem_helpers.rb +36 -25
- data/bundler/lib/bundler/gem_version_promoter.rb +2 -2
- data/bundler/lib/bundler/graph.rb +1 -1
- data/bundler/lib/bundler/index.rb +6 -2
- data/bundler/lib/bundler/injector.rb +22 -4
- data/bundler/lib/bundler/inline.rb +2 -2
- data/bundler/lib/bundler/installer.rb +35 -32
- data/bundler/lib/bundler/installer/gem_installer.rb +3 -3
- data/bundler/lib/bundler/installer/parallel_installer.rb +10 -10
- data/bundler/lib/bundler/installer/standalone.rb +2 -2
- data/bundler/lib/bundler/lazy_specification.rb +35 -11
- data/bundler/lib/bundler/lockfile_generator.rb +1 -1
- data/bundler/lib/bundler/lockfile_parser.rb +1 -1
- data/bundler/lib/bundler/man/.document +1 -0
- data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +0 -0
- data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +2 -4
- data/bundler/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +0 -0
- 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-config.ronn → lib/bundler/man/bundle-config.1.ronn} +19 -30
- data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
- data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +0 -0
- data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
- 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-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
- data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +25 -3
- data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
- 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-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
- data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.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
- data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +0 -0
- data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
- data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +4 -4
- data/bundler/lib/bundler/mirror.rb +2 -2
- data/bundler/lib/bundler/plugin.rb +30 -5
- data/bundler/lib/bundler/plugin/api/source.rb +1 -1
- data/bundler/lib/bundler/plugin/dsl.rb +1 -1
- data/bundler/lib/bundler/plugin/index.rb +10 -1
- data/bundler/lib/bundler/plugin/installer.rb +1 -1
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -1
- data/bundler/lib/bundler/plugin/source_list.rb +1 -1
- data/bundler/lib/bundler/psyched_yaml.rb +0 -15
- data/bundler/lib/bundler/remote_specification.rb +5 -2
- data/bundler/lib/bundler/resolver.rb +37 -18
- data/bundler/lib/bundler/resolver/spec_group.rb +36 -21
- data/bundler/lib/bundler/retry.rb +1 -1
- data/bundler/lib/bundler/ruby_version.rb +1 -1
- data/bundler/lib/bundler/rubygems_ext.rb +53 -9
- data/bundler/lib/bundler/rubygems_gem_installer.rb +3 -9
- data/bundler/lib/bundler/rubygems_integration.rb +26 -61
- data/bundler/lib/bundler/runtime.rb +4 -14
- data/bundler/lib/bundler/settings.rb +49 -46
- data/bundler/lib/bundler/shared_helpers.rb +2 -2
- data/bundler/lib/bundler/similarity_detector.rb +1 -1
- data/bundler/lib/bundler/source.rb +1 -1
- data/bundler/lib/bundler/source/git.rb +5 -5
- data/bundler/lib/bundler/source/git/git_proxy.rb +57 -60
- data/bundler/lib/bundler/source/path.rb +7 -3
- data/bundler/lib/bundler/source/path/installer.rb +8 -10
- data/bundler/lib/bundler/source/rubygems.rb +13 -16
- data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
- data/bundler/lib/bundler/source_list.rb +2 -2
- data/bundler/lib/bundler/spec_set.rb +7 -9
- data/bundler/lib/bundler/stub_specification.rb +17 -7
- data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +9 -1
- data/bundler/lib/bundler/templates/newgem/README.md.tt +1 -2
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +19 -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 +18 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
- data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
- data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +14 -6
- data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +10 -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/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -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/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 +5 -5
- data/bundler/lib/bundler/uri_credentials_filter.rb +3 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +34 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +38 -40
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +79 -208
- data/bundler/lib/bundler/vendor/thor/lib/thor.rb +0 -7
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
- data/bundler/lib/bundler/vendored_persistent.rb +0 -7
- data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler/worker.rb +1 -1
- data/bundler/lib/bundler/yaml_serializer.rb +1 -1
- data/bundler/man/bundle-add.1 +1 -1
- data/bundler/man/bundle-binstubs.1 +5 -3
- data/bundler/man/bundle-cache.1 +1 -1
- data/bundler/man/bundle-check.1 +1 -1
- data/bundler/man/bundle-clean.1 +1 -1
- data/bundler/man/bundle-config.1 +16 -25
- data/bundler/man/bundle-doctor.1 +1 -1
- data/bundler/man/bundle-exec.1 +1 -1
- data/bundler/man/bundle-gem.1 +25 -3
- data/bundler/man/bundle-info.1 +1 -1
- data/bundler/man/bundle-init.1 +1 -1
- data/bundler/man/bundle-inject.1 +1 -1
- data/bundler/man/bundle-install.1 +30 -3
- data/bundler/man/bundle-list.1 +7 -7
- data/bundler/man/bundle-lock.1 +1 -1
- data/bundler/man/bundle-open.1 +1 -1
- data/bundler/man/bundle-outdated.1 +1 -1
- data/bundler/man/bundle-platform.1 +1 -1
- data/bundler/man/bundle-pristine.1 +1 -1
- data/bundler/man/bundle-remove.1 +1 -1
- data/bundler/man/bundle-show.1 +1 -1
- data/bundler/man/bundle-update.1 +1 -1
- data/bundler/man/bundle-viz.1 +1 -1
- data/bundler/man/bundle.1 +1 -1
- data/bundler/man/gemfile.5 +4 -4
- data/lib/rubygems.rb +138 -187
- data/lib/rubygems/available_set.rb +4 -6
- data/lib/rubygems/basic_specification.rb +12 -10
- data/lib/rubygems/bundler_version_finder.rb +14 -9
- data/lib/rubygems/command.rb +17 -17
- data/lib/rubygems/command_manager.rb +5 -6
- data/lib/rubygems/commands/build_command.rb +40 -20
- data/lib/rubygems/commands/cert_command.rb +2 -10
- data/lib/rubygems/commands/check_command.rb +0 -2
- data/lib/rubygems/commands/cleanup_command.rb +11 -7
- data/lib/rubygems/commands/contents_command.rb +4 -6
- data/lib/rubygems/commands/dependency_command.rb +6 -8
- data/lib/rubygems/commands/environment_command.rb +1 -3
- data/lib/rubygems/commands/fetch_command.rb +2 -4
- data/lib/rubygems/commands/generate_index_command.rb +0 -2
- data/lib/rubygems/commands/help_command.rb +4 -4
- data/lib/rubygems/commands/info_command.rb +8 -5
- data/lib/rubygems/commands/install_command.rb +3 -5
- data/lib/rubygems/commands/list_command.rb +8 -7
- data/lib/rubygems/commands/lock_command.rb +1 -3
- data/lib/rubygems/commands/mirror_command.rb +0 -2
- data/lib/rubygems/commands/open_command.rb +0 -4
- data/lib/rubygems/commands/outdated_command.rb +0 -2
- data/lib/rubygems/commands/owner_command.rb +9 -4
- data/lib/rubygems/commands/pristine_command.rb +11 -5
- data/lib/rubygems/commands/push_command.rb +10 -47
- data/lib/rubygems/commands/query_command.rb +14 -344
- data/lib/rubygems/commands/rdoc_command.rb +0 -2
- data/lib/rubygems/commands/search_command.rb +7 -7
- data/lib/rubygems/commands/server_command.rb +3 -1
- data/lib/rubygems/commands/setup_command.rb +131 -58
- data/lib/rubygems/commands/signin_command.rb +0 -2
- data/lib/rubygems/commands/signout_command.rb +0 -2
- data/lib/rubygems/commands/sources_command.rb +9 -7
- data/lib/rubygems/commands/specification_command.rb +8 -4
- data/lib/rubygems/commands/stale_command.rb +1 -3
- data/lib/rubygems/commands/uninstall_command.rb +2 -4
- data/lib/rubygems/commands/unpack_command.rb +1 -3
- data/lib/rubygems/commands/update_command.rb +59 -14
- data/lib/rubygems/commands/which_command.rb +0 -2
- data/lib/rubygems/commands/yank_command.rb +4 -7
- data/lib/rubygems/config_file.rb +11 -4
- data/lib/rubygems/core_ext/kernel_require.rb +29 -36
- data/lib/rubygems/core_ext/kernel_warn.rb +12 -13
- data/lib/rubygems/defaults.rb +101 -7
- data/lib/rubygems/dependency.rb +3 -8
- data/lib/rubygems/dependency_installer.rb +6 -78
- data/lib/rubygems/dependency_list.rb +7 -9
- data/lib/rubygems/deprecate.rb +46 -1
- data/lib/rubygems/doctor.rb +4 -4
- data/lib/rubygems/errors.rb +3 -14
- data/lib/rubygems/exceptions.rb +2 -33
- data/lib/rubygems/ext.rb +6 -6
- data/lib/rubygems/ext/build_error.rb +2 -0
- data/lib/rubygems/ext/builder.rb +16 -35
- data/lib/rubygems/ext/cmake_builder.rb +5 -7
- data/lib/rubygems/ext/configure_builder.rb +4 -6
- data/lib/rubygems/ext/ext_conf_builder.rb +21 -19
- data/lib/rubygems/ext/rake_builder.rb +4 -6
- data/lib/rubygems/gem_runner.rb +3 -10
- data/lib/rubygems/gemcutter_utilities.rb +102 -21
- data/lib/rubygems/indexer.rb +1 -22
- data/lib/rubygems/install_update_options.rb +7 -7
- data/lib/rubygems/installer.rb +59 -80
- data/lib/rubygems/installer_test_case.rb +25 -11
- data/lib/rubygems/installer_uninstaller_utils.rb +24 -0
- data/lib/rubygems/local_remote_options.rb +1 -1
- data/lib/rubygems/mock_gem_ui.rb +0 -6
- data/lib/rubygems/name_tuple.rb +3 -7
- data/lib/rubygems/openssl.rb +7 -0
- data/lib/rubygems/package.rb +14 -25
- data/lib/rubygems/package/digest_io.rb +0 -2
- data/lib/rubygems/package/file_source.rb +0 -2
- data/lib/rubygems/package/io_source.rb +0 -2
- data/lib/rubygems/package/old.rb +1 -3
- data/lib/rubygems/package/tar_header.rb +4 -6
- data/lib/rubygems/package/tar_reader.rb +0 -3
- data/lib/rubygems/package/tar_reader/entry.rb +0 -3
- data/lib/rubygems/package/tar_test_case.rb +2 -4
- data/lib/rubygems/package/tar_writer.rb +2 -12
- data/lib/rubygems/package_task.rb +1 -7
- data/lib/rubygems/path_support.rb +1 -3
- data/lib/rubygems/platform.rb +21 -12
- data/lib/rubygems/psych_tree.rb +0 -2
- data/lib/rubygems/query_utils.rb +353 -0
- data/lib/rubygems/rdoc.rb +0 -12
- data/lib/rubygems/remote_fetcher.rb +11 -28
- data/lib/rubygems/request.rb +4 -11
- data/lib/rubygems/request/connection_pools.rb +1 -5
- data/lib/rubygems/request/http_pool.rb +0 -2
- data/lib/rubygems/request/https_pool.rb +0 -2
- data/lib/rubygems/request_set.rb +7 -20
- data/lib/rubygems/request_set/gem_dependency_api.rb +6 -8
- data/lib/rubygems/request_set/lockfile.rb +8 -12
- data/lib/rubygems/request_set/lockfile/parser.rb +0 -2
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -3
- data/lib/rubygems/requirement.rb +20 -21
- data/lib/rubygems/resolver.rb +14 -12
- data/lib/rubygems/resolver/activation_request.rb +9 -3
- data/lib/rubygems/resolver/api_set.rb +31 -24
- data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
- data/lib/rubygems/resolver/api_specification.rb +24 -10
- data/lib/rubygems/resolver/best_set.rb +1 -3
- data/lib/rubygems/resolver/composed_set.rb +3 -5
- data/lib/rubygems/resolver/conflict.rb +2 -4
- data/lib/rubygems/resolver/current_set.rb +0 -2
- data/lib/rubygems/resolver/dependency_request.rb +1 -3
- data/lib/rubygems/resolver/git_set.rb +0 -2
- data/lib/rubygems/resolver/git_specification.rb +0 -2
- data/lib/rubygems/resolver/index_set.rb +1 -3
- data/lib/rubygems/resolver/index_specification.rb +26 -2
- data/lib/rubygems/resolver/installed_specification.rb +0 -2
- data/lib/rubygems/resolver/installer_set.rb +60 -13
- data/lib/rubygems/resolver/local_specification.rb +0 -2
- data/lib/rubygems/resolver/lock_set.rb +2 -4
- data/lib/rubygems/resolver/lock_specification.rb +0 -2
- data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +1 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +39 -5
- 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 +43 -10
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +75 -7
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +1 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +506 -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/requirement_list.rb +0 -2
- data/lib/rubygems/resolver/set.rb +0 -2
- data/lib/rubygems/resolver/source_set.rb +0 -2
- data/lib/rubygems/resolver/spec_specification.rb +14 -2
- data/lib/rubygems/resolver/specification.rb +13 -3
- data/lib/rubygems/resolver/stats.rb +0 -2
- data/lib/rubygems/resolver/vendor_set.rb +0 -2
- data/lib/rubygems/resolver/vendor_specification.rb +0 -2
- data/lib/rubygems/s3_uri_signer.rb +2 -8
- data/lib/rubygems/safe_yaml.rb +4 -4
- data/lib/rubygems/security.rb +27 -34
- data/lib/rubygems/security/policy.rb +4 -8
- data/lib/rubygems/security/signer.rb +5 -7
- data/lib/rubygems/security/trust_dir.rb +1 -3
- data/lib/rubygems/server.rb +16 -13
- data/lib/rubygems/source.rb +23 -12
- data/lib/rubygems/source/git.rb +7 -8
- data/lib/rubygems/source/installed.rb +0 -2
- data/lib/rubygems/source/local.rb +2 -4
- data/lib/rubygems/source/lock.rb +0 -2
- data/lib/rubygems/source/specific_file.rb +0 -2
- data/lib/rubygems/source/vendor.rb +0 -2
- data/lib/rubygems/source_list.rb +4 -7
- data/lib/rubygems/spec_fetcher.rb +19 -18
- data/lib/rubygems/specification.rb +113 -126
- data/lib/rubygems/specification_policy.rb +88 -30
- data/lib/rubygems/ssl_certs/{index.rubygems.org → rubygems.org}/GlobalSignRootCA.pem +0 -0
- data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
- data/lib/rubygems/stub_specification.rb +1 -5
- data/lib/rubygems/syck_hack.rb +0 -2
- data/lib/rubygems/test_case.rb +105 -132
- data/lib/rubygems/test_utilities.rb +12 -19
- data/lib/rubygems/uninstaller.rb +35 -16
- data/lib/rubygems/uri_formatter.rb +2 -3
- data/lib/rubygems/uri_parser.rb +0 -2
- data/lib/rubygems/user_interaction.rb +1 -26
- data/lib/rubygems/util.rb +15 -3
- data/lib/rubygems/util/licenses.rb +4 -6
- data/lib/rubygems/util/list.rb +0 -2
- data/lib/rubygems/validator.rb +1 -3
- data/lib/rubygems/version.rb +5 -7
- data/lib/rubygems/version_option.rb +6 -0
- data/rubygems-update.gemspec +2 -2
- data/setup.rb +2 -7
- data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -2
- data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
- data/test/rubygems/rubygems_plugin.rb +0 -2
- data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
- data/test/rubygems/test_bundled_ca.rb +42 -45
- data/test/rubygems/test_config.rb +0 -2
- data/test/rubygems/test_deprecate.rb +40 -7
- data/test/rubygems/test_gem.rb +151 -99
- data/test/rubygems/test_gem_available_set.rb +3 -5
- data/test/rubygems/test_gem_bundler_version_finder.rb +19 -3
- data/test/rubygems/test_gem_command.rb +24 -7
- data/test/rubygems/test_gem_command_manager.rb +36 -5
- data/test/rubygems/test_gem_commands_build_command.rb +250 -15
- data/test/rubygems/test_gem_commands_cert_command.rb +4 -6
- data/test/rubygems/test_gem_commands_check_command.rb +0 -2
- data/test/rubygems/test_gem_commands_cleanup_command.rb +14 -5
- data/test/rubygems/test_gem_commands_contents_command.rb +50 -19
- data/test/rubygems/test_gem_commands_dependency_command.rb +0 -2
- data/test/rubygems/test_gem_commands_environment_command.rb +21 -23
- data/test/rubygems/test_gem_commands_fetch_command.rb +0 -2
- data/test/rubygems/test_gem_commands_generate_index_command.rb +1 -7
- data/test/rubygems/test_gem_commands_help_command.rb +15 -4
- data/test/rubygems/test_gem_commands_info_command.rb +6 -8
- data/test/rubygems/test_gem_commands_install_command.rb +163 -34
- data/test/rubygems/test_gem_commands_list_command.rb +0 -2
- data/test/rubygems/test_gem_commands_lock_command.rb +0 -2
- data/test/rubygems/test_gem_commands_mirror.rb +1 -3
- data/test/rubygems/test_gem_commands_open_command.rb +4 -6
- data/test/rubygems/test_gem_commands_outdated_command.rb +0 -2
- data/test/rubygems/test_gem_commands_owner_command.rb +59 -5
- data/test/rubygems/test_gem_commands_pristine_command.rb +43 -12
- data/test/rubygems/test_gem_commands_push_command.rb +77 -9
- data/test/rubygems/test_gem_commands_query_command.rb +12 -12
- data/test/rubygems/test_gem_commands_search_command.rb +0 -2
- data/test/rubygems/test_gem_commands_server_command.rb +0 -2
- data/test/rubygems/test_gem_commands_setup_command.rb +165 -124
- data/test/rubygems/test_gem_commands_signin_command.rb +33 -9
- data/test/rubygems/test_gem_commands_signout_command.rb +0 -7
- data/test/rubygems/test_gem_commands_sources_command.rb +99 -3
- data/test/rubygems/test_gem_commands_specification_command.rb +46 -20
- data/test/rubygems/test_gem_commands_stale_command.rb +0 -2
- data/test/rubygems/test_gem_commands_uninstall_command.rb +2 -3
- data/test/rubygems/test_gem_commands_unpack_command.rb +0 -2
- data/test/rubygems/test_gem_commands_update_command.rb +116 -7
- data/test/rubygems/test_gem_commands_which_command.rb +3 -5
- data/test/rubygems/test_gem_commands_yank_command.rb +44 -8
- data/test/rubygems/test_gem_config_file.rb +7 -12
- data/test/rubygems/test_gem_dependency.rb +0 -2
- data/test/rubygems/test_gem_dependency_installer.rb +90 -193
- data/test/rubygems/test_gem_dependency_list.rb +10 -12
- data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -3
- data/test/rubygems/test_gem_doctor.rb +28 -2
- data/test/rubygems/test_gem_ext_builder.rb +26 -47
- data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -23
- data/test/rubygems/test_gem_ext_configure_builder.rb +4 -20
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +9 -29
- data/test/rubygems/test_gem_ext_rake_builder.rb +39 -24
- data/test/rubygems/test_gem_gem_runner.rb +44 -1
- data/test/rubygems/test_gem_gemcutter_utilities.rb +8 -5
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -2
- data/test/rubygems/test_gem_indexer.rb +9 -15
- data/test/rubygems/test_gem_install_update_options.rb +14 -4
- data/test/rubygems/test_gem_installer.rb +258 -115
- data/test/rubygems/test_gem_local_remote_options.rb +0 -2
- data/test/rubygems/test_gem_name_tuple.rb +0 -2
- data/test/rubygems/test_gem_package.rb +41 -39
- data/test/rubygems/test_gem_package_old.rb +4 -6
- data/test/rubygems/test_gem_package_tar_header.rb +18 -1
- data/test/rubygems/test_gem_package_tar_reader.rb +0 -2
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -2
- data/test/rubygems/test_gem_package_tar_writer.rb +9 -6
- data/test/rubygems/test_gem_package_task.rb +46 -13
- data/test/rubygems/test_gem_path_support.rb +0 -2
- data/test/rubygems/test_gem_platform.rb +63 -6
- data/test/rubygems/test_gem_rdoc.rb +0 -2
- data/test/rubygems/test_gem_remote_fetcher.rb +168 -211
- data/test/rubygems/test_gem_request.rb +13 -17
- data/test/rubygems/test_gem_request_connection_pools.rb +0 -4
- data/test/rubygems/test_gem_request_set.rb +72 -22
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +3 -5
- data/test/rubygems/test_gem_request_set_lockfile.rb +4 -6
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -11
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -120
- data/test/rubygems/test_gem_requirement.rb +10 -4
- data/test/rubygems/test_gem_resolver.rb +6 -8
- data/test/rubygems/test_gem_resolver_activation_request.rb +0 -2
- data/test/rubygems/test_gem_resolver_api_set.rb +60 -59
- data/test/rubygems/test_gem_resolver_api_specification.rb +3 -5
- data/test/rubygems/test_gem_resolver_best_set.rb +5 -7
- data/test/rubygems/test_gem_resolver_composed_set.rb +0 -2
- data/test/rubygems/test_gem_resolver_conflict.rb +1 -3
- data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -2
- data/test/rubygems/test_gem_resolver_git_set.rb +0 -2
- data/test/rubygems/test_gem_resolver_git_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_index_set.rb +2 -4
- data/test/rubygems/test_gem_resolver_index_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_installer_set.rb +7 -9
- data/test/rubygems/test_gem_resolver_local_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_lock_set.rb +3 -5
- data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -2
- data/test/rubygems/test_gem_resolver_specification.rb +0 -4
- data/test/rubygems/test_gem_resolver_vendor_set.rb +1 -3
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -2
- data/test/rubygems/test_gem_security.rb +22 -24
- data/test/rubygems/test_gem_security_policy.rb +7 -12
- data/test/rubygems/test_gem_security_signer.rb +10 -12
- data/test/rubygems/test_gem_security_trust_dir.rb +4 -6
- data/test/rubygems/test_gem_server.rb +10 -14
- data/test/rubygems/test_gem_silent_ui.rb +0 -2
- data/test/rubygems/test_gem_source.rb +19 -18
- data/test/rubygems/test_gem_source_fetch_problem.rb +0 -2
- data/test/rubygems/test_gem_source_git.rb +12 -13
- data/test/rubygems/test_gem_source_installed.rb +7 -9
- data/test/rubygems/test_gem_source_list.rb +1 -2
- data/test/rubygems/test_gem_source_local.rb +8 -10
- data/test/rubygems/test_gem_source_lock.rb +10 -12
- data/test/rubygems/test_gem_source_specific_file.rb +7 -9
- data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
- data/test/rubygems/test_gem_source_vendor.rb +7 -9
- data/test/rubygems/test_gem_spec_fetcher.rb +11 -4
- data/test/rubygems/test_gem_specification.rb +182 -131
- data/test/rubygems/test_gem_stream_ui.rb +3 -3
- data/test/rubygems/test_gem_stub_specification.rb +4 -7
- data/test/rubygems/test_gem_text.rb +1 -3
- data/test/rubygems/test_gem_uninstaller.rb +134 -12
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -2
- data/test/rubygems/test_gem_uri_formatter.rb +0 -2
- data/test/rubygems/test_gem_util.rb +7 -7
- data/test/rubygems/test_gem_validator.rb +1 -3
- data/test/rubygems/test_gem_version.rb +1 -3
- data/test/rubygems/test_gem_version_option.rb +1 -3
- data/test/rubygems/test_kernel.rb +25 -10
- data/test/rubygems/test_project_sanity.rb +7 -2
- data/test/rubygems/test_remote_fetch_error.rb +0 -2
- data/test/rubygems/test_require.rb +291 -56
- data/test/test_changelog_generator.rb +17 -0
- metadata +65 -96
- data/.bundle/config +0 -2
- data/.rubocop.yml +0 -91
- data/Gemfile +0 -8
- data/Gemfile.lock +0 -43
- data/bundler/CODE_OF_CONDUCT.md +0 -136
- 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/source_local.rb +0 -7
- data/lib/rubygems/source_specific_file.rb +0 -6
- data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
- data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
- data/lib/ubygems.rb +0 -14
- 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 -139
- data/util/update_changelog.rb +0 -67
@@ -2,14 +2,13 @@
|
|
2
2
|
require 'rubygems/text'
|
3
3
|
|
4
4
|
class Gem::Licenses
|
5
|
-
|
6
5
|
extend Gem::Text
|
7
6
|
|
8
7
|
NONSTANDARD = 'Nonstandard'.freeze
|
9
8
|
|
10
9
|
# Software Package Data Exchange (SPDX) standard open-source software
|
11
10
|
# license identifiers
|
12
|
-
LICENSE_IDENTIFIERS = %w
|
11
|
+
LICENSE_IDENTIFIERS = %w[
|
13
12
|
0BSD
|
14
13
|
AAL
|
15
14
|
ADSL
|
@@ -379,10 +378,10 @@ class Gem::Licenses
|
|
379
378
|
xinetd
|
380
379
|
xpp
|
381
380
|
zlib-acknowledgement
|
382
|
-
|
381
|
+
].freeze
|
383
382
|
|
384
383
|
# exception identifiers
|
385
|
-
EXCEPTION_IDENTIFIERS = %w
|
384
|
+
EXCEPTION_IDENTIFIERS = %w[
|
386
385
|
389-exception
|
387
386
|
Autoconf-exception-2.0
|
388
387
|
Autoconf-exception-3.0
|
@@ -410,7 +409,7 @@ class Gem::Licenses
|
|
410
409
|
mif-exception
|
411
410
|
openvpn-openssl-exception
|
412
411
|
u-boot-exception-2.0
|
413
|
-
|
412
|
+
].freeze
|
414
413
|
|
415
414
|
REGEXP = %r{
|
416
415
|
\A
|
@@ -435,5 +434,4 @@ class Gem::Licenses
|
|
435
434
|
return unless lowest < license.size
|
436
435
|
by_distance[lowest]
|
437
436
|
end
|
438
|
-
|
439
437
|
end
|
data/lib/rubygems/util/list.rb
CHANGED
data/lib/rubygems/validator.rb
CHANGED
@@ -12,7 +12,6 @@ require 'rubygems/installer'
|
|
12
12
|
# Validator performs various gem file and gem database validation
|
13
13
|
|
14
14
|
class Gem::Validator
|
15
|
-
|
16
15
|
include Gem::UserInteraction
|
17
16
|
|
18
17
|
def initialize # :nodoc:
|
@@ -60,7 +59,7 @@ class Gem::Validator
|
|
60
59
|
# TODO needs further cleanup
|
61
60
|
|
62
61
|
def alien(gems=[])
|
63
|
-
errors = Hash.new {
|
62
|
+
errors = Hash.new {|h,k| h[k] = {} }
|
64
63
|
|
65
64
|
Gem::Specification.each do |spec|
|
66
65
|
next unless gems.include? spec.name unless gems.empty?
|
@@ -141,5 +140,4 @@ class Gem::Validator
|
|
141
140
|
|
142
141
|
errors
|
143
142
|
end
|
144
|
-
|
145
143
|
end
|
data/lib/rubygems/version.rb
CHANGED
@@ -150,8 +150,7 @@
|
|
150
150
|
# a zero to give a sensible result.
|
151
151
|
|
152
152
|
class Gem::Version
|
153
|
-
|
154
|
-
autoload :Requirement, 'rubygems/requirement'
|
153
|
+
autoload :Requirement, File.expand_path('requirement', __dir__)
|
155
154
|
|
156
155
|
include Comparable
|
157
156
|
|
@@ -187,7 +186,7 @@ class Gem::Version
|
|
187
186
|
# ver3 = Version.create(nil) # -> nil
|
188
187
|
|
189
188
|
def self.create(input)
|
190
|
-
if self === input
|
189
|
+
if self === input # check yourself before you wreck yourself
|
191
190
|
input
|
192
191
|
elsif input.nil?
|
193
192
|
nil
|
@@ -231,7 +230,7 @@ class Gem::Version
|
|
231
230
|
def bump
|
232
231
|
@@bump[self] ||= begin
|
233
232
|
segments = self.segments
|
234
|
-
segments.pop while segments.any? {
|
233
|
+
segments.pop while segments.any? {|s| String === s }
|
235
234
|
segments.pop if segments.size > 1
|
236
235
|
|
237
236
|
segments[-1] = segments[-1].succ
|
@@ -310,7 +309,7 @@ class Gem::Version
|
|
310
309
|
def release
|
311
310
|
@@release[self] ||= if prerelease?
|
312
311
|
segments = self.segments
|
313
|
-
segments.pop while segments.any? {
|
312
|
+
segments.pop while segments.any? {|s| String === s }
|
314
313
|
self.class.new segments.join('.')
|
315
314
|
else
|
316
315
|
self
|
@@ -327,7 +326,7 @@ class Gem::Version
|
|
327
326
|
def approximate_recommendation
|
328
327
|
segments = self.segments
|
329
328
|
|
330
|
-
segments.pop while segments.any? {
|
329
|
+
segments.pop while segments.any? {|s| String === s }
|
331
330
|
segments.pop while segments.size > 2
|
332
331
|
segments.push 0 while segments.size < 2
|
333
332
|
|
@@ -404,5 +403,4 @@ class Gem::Version
|
|
404
403
|
numeric_segments = string_segments.slice!(0, string_start || string_segments.size)
|
405
404
|
return numeric_segments, string_segments
|
406
405
|
end
|
407
|
-
|
408
406
|
end
|
data/rubygems-update.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "rubygems-update"
|
5
|
-
s.version = "3.
|
5
|
+
s.version = "3.2.3"
|
6
6
|
s.authors = ["Jim Weirich", "Chad Fowler", "Eric Hodel", "Luis Lavena", "Aaron Patterson", "Samuel Giddins", "André Arko", "Evan Phoenix", "Hiroshi SHIBATA"]
|
7
7
|
s.email = ["", "", "drbrain@segment7.net", "luislavena@gmail.com", "aaron@tenderlovemaking.com", "segiddins@segiddins.me", "andre@arko.net", "evan@phx.io", "hsbt@ruby-lang.org"]
|
8
8
|
|
@@ -24,7 +24,7 @@ Gem::Specification.new do |s|
|
|
24
24
|
"History.txt", "LICENSE.txt", "MAINTAINERS.txt",
|
25
25
|
"MIT.txt", "Manifest.txt", "README.md",
|
26
26
|
"UPGRADING.md", "POLICIES.md", "CODE_OF_CONDUCT.md",
|
27
|
-
"CONTRIBUTING.md", "bundler/CHANGELOG.md",
|
27
|
+
"CONTRIBUTING.md", "bundler/CHANGELOG.md",
|
28
28
|
"bundler/LICENSE.md", "bundler/README.md",
|
29
29
|
"hide_lib_for_update/note.txt", *Dir["bundler/man/*.1"]
|
30
30
|
]
|
data/setup.rb
CHANGED
@@ -11,12 +11,7 @@ if ENV['RUBYOPT'] or defined? Gem
|
|
11
11
|
ENV.delete 'RUBYOPT'
|
12
12
|
|
13
13
|
require 'rbconfig'
|
14
|
-
|
15
|
-
|
16
|
-
ruby = File.join config::CONFIG['bindir'], config::CONFIG['ruby_install_name']
|
17
|
-
ruby << config::CONFIG['EXEEXT']
|
18
|
-
|
19
|
-
cmd = [ruby, 'setup.rb', *ARGV].compact
|
14
|
+
cmd = [RbConfig.ruby, 'setup.rb', *ARGV].compact
|
20
15
|
cmd[1,0] = "--disable-gems"
|
21
16
|
|
22
17
|
exec(*cmd)
|
@@ -24,7 +19,7 @@ end
|
|
24
19
|
|
25
20
|
Dir.chdir File.dirname(__FILE__)
|
26
21
|
|
27
|
-
$:.unshift 'lib'
|
22
|
+
$:.unshift File.expand_path('lib')
|
28
23
|
require 'rubygems'
|
29
24
|
require 'rubygems/gem_runner'
|
30
25
|
require 'rubygems/exceptions'
|
@@ -11,7 +11,6 @@ module Gem::Commands
|
|
11
11
|
end
|
12
12
|
|
13
13
|
class Gem::Commands::InterruptCommand < Gem::Command
|
14
|
-
|
15
14
|
def initialize
|
16
15
|
super('interrupt', 'Raises an Interrupt Exception', {})
|
17
16
|
end
|
@@ -19,7 +18,6 @@ class Gem::Commands::InterruptCommand < Gem::Command
|
|
19
18
|
def execute
|
20
19
|
raise Interrupt, "Interrupt exception"
|
21
20
|
end
|
22
|
-
|
23
21
|
end
|
24
22
|
|
25
23
|
Gem::CommandManager.instance.register_command :interrupt
|
@@ -0,0 +1,12 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = "rubyforge"
|
3
|
+
s.version = "0.0.1"
|
4
|
+
s.platform = "ruby"
|
5
|
+
s.require_paths = ["lib"]
|
6
|
+
s.summary = "A very bar gem"
|
7
|
+
s.authors = ["unknown"]
|
8
|
+
s.license = 'MIT'
|
9
|
+
s.homepage = 'http://example.com'
|
10
|
+
s.files = ['README.md']
|
11
|
+
s.rubyforge_project = 'abc'
|
12
|
+
end
|
@@ -1,6 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
require 'rubygems/test_case'
|
3
|
-
require 'net/
|
3
|
+
require 'net/http'
|
4
|
+
require 'rubygems/openssl'
|
5
|
+
|
6
|
+
unless Gem::HAVE_OPENSSL
|
7
|
+
warn 'Skipping bundled certificates tests. openssl not found.'
|
8
|
+
end
|
9
|
+
|
4
10
|
require 'rubygems/request'
|
5
11
|
|
6
12
|
# = Testing Bundled CA
|
@@ -8,56 +14,47 @@ require 'rubygems/request'
|
|
8
14
|
# The tested hosts are explained in detail here: https://github.com/rubygems/rubygems/commit/5e16a5428f973667cabfa07e94ff939e7a83ebd9
|
9
15
|
#
|
10
16
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
THIS_FILE = File.expand_path __FILE__
|
15
|
-
|
16
|
-
def bundled_certificate_store
|
17
|
-
store = OpenSSL::X509::Store.new
|
17
|
+
class TestBundledCA < Gem::TestCase
|
18
|
+
def bundled_certificate_store
|
19
|
+
store = OpenSSL::X509::Store.new
|
18
20
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
Dir[ssl_cert_glob].each do |ssl_cert|
|
23
|
-
store.add_file ssl_cert
|
24
|
-
end
|
25
|
-
|
26
|
-
store
|
21
|
+
Gem::Request.get_cert_files.each do |ssl_cert|
|
22
|
+
store.add_file ssl_cert
|
27
23
|
end
|
28
24
|
|
29
|
-
|
30
|
-
|
31
|
-
self._assertions += 1
|
32
|
-
else # minitest >= 5
|
33
|
-
self.assertions += 1
|
34
|
-
end
|
35
|
-
http = Net::HTTP.new(host, 443)
|
36
|
-
http.use_ssl = true
|
37
|
-
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
38
|
-
http.cert_store = bundled_certificate_store
|
39
|
-
http.get('/')
|
40
|
-
rescue Errno::ENOENT, Errno::ETIMEDOUT, SocketError
|
41
|
-
skip "#{host} seems offline, I can't tell whether ssl would work."
|
42
|
-
rescue OpenSSL::SSL::SSLError => e
|
43
|
-
# Only fail for certificate verification errors
|
44
|
-
if e.message =~ /certificate verify failed/
|
45
|
-
flunk "#{host} is not verifiable using the included certificates. Error was: #{e.message}"
|
46
|
-
end
|
47
|
-
raise
|
48
|
-
end
|
25
|
+
store
|
26
|
+
end
|
49
27
|
|
50
|
-
|
51
|
-
|
28
|
+
def assert_https(host)
|
29
|
+
self.assertions += 1
|
30
|
+
http = Net::HTTP.new(host, 443)
|
31
|
+
http.use_ssl = true
|
32
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
33
|
+
http.cert_store = bundled_certificate_store
|
34
|
+
http.get('/')
|
35
|
+
rescue Errno::ENOENT, Errno::ETIMEDOUT, SocketError
|
36
|
+
skip "#{host} seems offline, I can't tell whether ssl would work."
|
37
|
+
rescue OpenSSL::SSL::SSLError => e
|
38
|
+
# Only fail for certificate verification errors
|
39
|
+
if e.message =~ /certificate verify failed/
|
40
|
+
flunk "#{host} is not verifiable using the included certificates. Error was: #{e.message}"
|
52
41
|
end
|
42
|
+
raise
|
43
|
+
end
|
53
44
|
|
54
|
-
|
55
|
-
|
56
|
-
|
45
|
+
def test_accessing_rubygems
|
46
|
+
assert_https('rubygems.org')
|
47
|
+
end
|
57
48
|
|
58
|
-
|
59
|
-
|
60
|
-
|
49
|
+
def test_accessing_www_rubygems
|
50
|
+
assert_https('www.rubygems.org')
|
51
|
+
end
|
61
52
|
|
53
|
+
def test_accessing_staging
|
54
|
+
assert_https('staging.rubygems.org')
|
62
55
|
end
|
63
|
-
|
56
|
+
|
57
|
+
def test_accessing_new_index
|
58
|
+
assert_https('index.rubygems.org')
|
59
|
+
end
|
60
|
+
end if Gem::HAVE_OPENSSL
|
@@ -4,7 +4,6 @@ require 'rubygems'
|
|
4
4
|
require 'shellwords'
|
5
5
|
|
6
6
|
class TestConfig < Gem::TestCase
|
7
|
-
|
8
7
|
def test_datadir
|
9
8
|
util_make_gems
|
10
9
|
spec = Gem::Specification.find_by_name("a")
|
@@ -25,5 +24,4 @@ class TestConfig < Gem::TestCase
|
|
25
24
|
assert_equal(Gem.ruby, ruby)
|
26
25
|
assert_match(/\/bad_rake.rb\z/, rake)
|
27
26
|
end
|
28
|
-
|
29
27
|
end
|
@@ -1,15 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
require 'rubygems/test_case'
|
3
|
-
# require 'rubygems/builder'
|
4
|
-
# require 'rubygems/package'
|
5
3
|
require 'rubygems/deprecate'
|
6
4
|
|
7
5
|
class TestDeprecate < Gem::TestCase
|
8
|
-
|
9
6
|
def setup
|
10
7
|
super
|
11
8
|
|
12
|
-
# Gem::Deprecate.saved_warnings.clear
|
13
9
|
@original_skip = Gem::Deprecate.skip
|
14
10
|
Gem::Deprecate.skip = false
|
15
11
|
end
|
@@ -17,7 +13,6 @@ class TestDeprecate < Gem::TestCase
|
|
17
13
|
def teardown
|
18
14
|
super
|
19
15
|
|
20
|
-
# Gem::Deprecate.saved_warnings.clear
|
21
16
|
Gem::Deprecate.skip = @original_skip
|
22
17
|
end
|
23
18
|
|
@@ -45,7 +40,18 @@ class TestDeprecate < Gem::TestCase
|
|
45
40
|
end
|
46
41
|
|
47
42
|
class Thing
|
43
|
+
extend Gem::Deprecate
|
44
|
+
attr_accessor :message
|
45
|
+
def foo
|
46
|
+
@message = "foo"
|
47
|
+
end
|
48
|
+
def bar
|
49
|
+
@message = "bar"
|
50
|
+
end
|
51
|
+
rubygems_deprecate :foo, :bar
|
52
|
+
end
|
48
53
|
|
54
|
+
class OtherThing
|
49
55
|
extend Gem::Deprecate
|
50
56
|
attr_accessor :message
|
51
57
|
def foo
|
@@ -55,7 +61,6 @@ class TestDeprecate < Gem::TestCase
|
|
55
61
|
@message = "bar"
|
56
62
|
end
|
57
63
|
deprecate :foo, :bar, 2099, 3
|
58
|
-
|
59
64
|
end
|
60
65
|
|
61
66
|
def test_deprecated_method_calls_the_old_method
|
@@ -74,7 +79,35 @@ class TestDeprecate < Gem::TestCase
|
|
74
79
|
|
75
80
|
assert_equal "", out
|
76
81
|
assert_match(/Thing#foo is deprecated; use bar instead\./, err)
|
77
|
-
assert_match(/
|
82
|
+
assert_match(/in Rubygems [0-9]+/, err)
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_rubygems_deprecate_command
|
86
|
+
require 'rubygems/command'
|
87
|
+
foo_command = Class.new(Gem::Command) do
|
88
|
+
extend Gem::Deprecate
|
89
|
+
|
90
|
+
rubygems_deprecate_command
|
91
|
+
|
92
|
+
def execute
|
93
|
+
puts "pew pew!"
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
Gem::Commands.send(:const_set, :FooCommand, foo_command)
|
98
|
+
assert Gem::Commands::FooCommand.new("foo").deprecated?
|
99
|
+
ensure
|
100
|
+
Gem::Commands.send(:remove_const, :FooCommand)
|
78
101
|
end
|
79
102
|
|
103
|
+
def test_deprecated_method_outputs_a_warning_old_way
|
104
|
+
out, err = capture_io do
|
105
|
+
thing = OtherThing.new
|
106
|
+
thing.foo
|
107
|
+
end
|
108
|
+
|
109
|
+
assert_equal "", out
|
110
|
+
assert_match(/Thing#foo is deprecated; use bar instead\./, err)
|
111
|
+
assert_match(/on or after 2099-03-01/, err)
|
112
|
+
end
|
80
113
|
end
|
data/test/rubygems/test_gem.rb
CHANGED
@@ -7,18 +7,7 @@ require 'pathname'
|
|
7
7
|
require 'tmpdir'
|
8
8
|
require 'rbconfig'
|
9
9
|
|
10
|
-
if File.exist?(File.join(Dir.tmpdir, "Gemfile"))
|
11
|
-
raise "rubygems/bundler tests do not work correctly if there is #{ File.join(Dir.tmpdir, "Gemfile") }"
|
12
|
-
end
|
13
|
-
|
14
|
-
# TODO: push this up to test_case.rb once battle tested
|
15
|
-
|
16
|
-
$LOAD_PATH.map! do |path|
|
17
|
-
path.dup.tap(&Gem::UNTAINT)
|
18
|
-
end
|
19
|
-
|
20
10
|
class TestGem < Gem::TestCase
|
21
|
-
|
22
11
|
PLUGINS_LOADED = [] # rubocop:disable Style/MutableConstant
|
23
12
|
|
24
13
|
PROJECT_DIR = File.expand_path('../../..', __FILE__).tap(&Gem::UNTAINT)
|
@@ -31,7 +20,7 @@ class TestGem < Gem::TestCase
|
|
31
20
|
common_installer_setup
|
32
21
|
|
33
22
|
ENV.delete 'RUBYGEMS_GEMDEPS'
|
34
|
-
@additional = %w[a b].map {
|
23
|
+
@additional = %w[a b].map {|d| File.join @tempdir, d }
|
35
24
|
|
36
25
|
util_remove_interrupt_command
|
37
26
|
end
|
@@ -48,12 +37,12 @@ class TestGem < Gem::TestCase
|
|
48
37
|
|
49
38
|
a1.activate
|
50
39
|
|
51
|
-
assert_equal %w
|
40
|
+
assert_equal %w[a-1], loaded_spec_names
|
52
41
|
assert_equal ["b (> 0)"], unresolved_names
|
53
42
|
|
54
43
|
Gem.finish_resolve
|
55
44
|
|
56
|
-
assert_equal %w
|
45
|
+
assert_equal %w[a-1 b-2 c-2], loaded_spec_names
|
57
46
|
assert_equal [], unresolved_names
|
58
47
|
end
|
59
48
|
end
|
@@ -72,12 +61,12 @@ class TestGem < Gem::TestCase
|
|
72
61
|
|
73
62
|
a1.activate
|
74
63
|
|
75
|
-
assert_equal %w
|
64
|
+
assert_equal %w[a-1], loaded_spec_names
|
76
65
|
assert_equal ["b (> 0)", "d (> 0)"], unresolved_names
|
77
66
|
|
78
67
|
Gem.finish_resolve
|
79
68
|
|
80
|
-
assert_equal %w
|
69
|
+
assert_equal %w[a-1 b-1 c-1 d-2], loaded_spec_names
|
81
70
|
assert_equal [], unresolved_names
|
82
71
|
end
|
83
72
|
end
|
@@ -95,12 +84,12 @@ class TestGem < Gem::TestCase
|
|
95
84
|
a1.activate
|
96
85
|
c1.activate
|
97
86
|
|
98
|
-
assert_equal %w
|
87
|
+
assert_equal %w[a-1 c-1], loaded_spec_names
|
99
88
|
assert_equal ["b (> 0)"], unresolved_names
|
100
89
|
|
101
90
|
Gem.finish_resolve
|
102
91
|
|
103
|
-
assert_equal %w
|
92
|
+
assert_equal %w[a-1 b-1 c-1], loaded_spec_names
|
104
93
|
assert_equal [], unresolved_names
|
105
94
|
end
|
106
95
|
end
|
@@ -115,7 +104,7 @@ class TestGem < Gem::TestCase
|
|
115
104
|
|
116
105
|
installed = Gem.install 'a', '= 1', :install_dir => gemhome2
|
117
106
|
|
118
|
-
assert_equal %w[a-1], installed.map {
|
107
|
+
assert_equal %w[a-1], installed.map {|spec| spec.full_name }
|
119
108
|
|
120
109
|
assert_path_exists File.join(gemhome2, 'gems', 'a-1')
|
121
110
|
end
|
@@ -134,7 +123,7 @@ class TestGem < Gem::TestCase
|
|
134
123
|
rescue StandardError
|
135
124
|
Gem.install 'a', '= 1', :install_dir => gemhome2
|
136
125
|
end
|
137
|
-
assert_equal %w[a-1], installed.map {
|
126
|
+
assert_equal %w[a-1], installed.map {|spec| spec.full_name }
|
138
127
|
end
|
139
128
|
|
140
129
|
def test_self_install_permissions
|
@@ -161,10 +150,8 @@ class TestGem < Gem::TestCase
|
|
161
150
|
|
162
151
|
def test_self_install_permissions_with_format_executable_and_non_standard_ruby_install_name
|
163
152
|
Gem::Installer.exec_format = nil
|
164
|
-
|
165
|
-
|
166
|
-
assert_self_install_permissions(format_executable: true)
|
167
|
-
end
|
153
|
+
ruby_install_name 'ruby27' do
|
154
|
+
assert_self_install_permissions(format_executable: true)
|
168
155
|
end
|
169
156
|
ensure
|
170
157
|
Gem::Installer.exec_format = nil
|
@@ -177,7 +164,7 @@ class TestGem < Gem::TestCase
|
|
177
164
|
:prog_mode => win_platform? ? 0410 : 0510,
|
178
165
|
:data_mode => 0640,
|
179
166
|
:wrappers => true,
|
180
|
-
:format_executable => format_executable
|
167
|
+
:format_executable => format_executable,
|
181
168
|
}
|
182
169
|
Dir.chdir @tempdir do
|
183
170
|
Dir.mkdir 'bin'
|
@@ -220,7 +207,7 @@ class TestGem < Gem::TestCase
|
|
220
207
|
end
|
221
208
|
assert_equal(expected, result)
|
222
209
|
ensure
|
223
|
-
File.chmod(0755, *Dir.glob(@gemhome + '/gems/**/').map {|path| path.tap(&Gem::UNTAINT)})
|
210
|
+
File.chmod(0755, *Dir.glob(@gemhome + '/gems/**/').map {|path| path.tap(&Gem::UNTAINT) })
|
224
211
|
end
|
225
212
|
|
226
213
|
def test_require_missing
|
@@ -307,7 +294,23 @@ class TestGem < Gem::TestCase
|
|
307
294
|
gem 'c'
|
308
295
|
Gem.finish_resolve
|
309
296
|
|
310
|
-
assert_equal %w
|
297
|
+
assert_equal %w[a-1 b-2 c-1], loaded_spec_names
|
298
|
+
end
|
299
|
+
|
300
|
+
def test_activate_bin_path_in_debug_mode
|
301
|
+
a1 = util_spec 'a', '1' do |s|
|
302
|
+
s.executables = ['exec']
|
303
|
+
end
|
304
|
+
|
305
|
+
install_specs a1
|
306
|
+
|
307
|
+
require "open3"
|
308
|
+
output, status = Open3.capture2e(
|
309
|
+
{ "GEM_HOME" => Gem.paths.home, "DEBUG_RESOLVER" => "1" },
|
310
|
+
*ruby_with_rubygems_in_load_path, "-e", "\"Gem.activate_bin_path('a', 'exec', '>= 0')\""
|
311
|
+
)
|
312
|
+
|
313
|
+
assert status.success?, output
|
311
314
|
end
|
312
315
|
|
313
316
|
def test_activate_bin_path_gives_proper_error_for_bundler
|
@@ -333,7 +336,7 @@ class TestGem < Gem::TestCase
|
|
333
336
|
L
|
334
337
|
end
|
335
338
|
|
336
|
-
File.open("Gemfile", "w") {
|
339
|
+
File.open("Gemfile", "w") {|f| f.puts('source "https://rubygems.org"') }
|
337
340
|
|
338
341
|
e = assert_raises Gem::GemNotFoundException do
|
339
342
|
load Gem.activate_bin_path("bundler", "bundle", ">= 0.a")
|
@@ -372,11 +375,11 @@ class TestGem < Gem::TestCase
|
|
372
375
|
L
|
373
376
|
end
|
374
377
|
|
375
|
-
File.open("Gemfile", "w") {
|
378
|
+
File.open("Gemfile", "w") {|f| f.puts('source "https://rubygems.org"') }
|
376
379
|
|
377
380
|
load Gem.activate_bin_path("bundler", "bundle", ">= 0.a")
|
378
381
|
|
379
|
-
assert_equal %w
|
382
|
+
assert_equal %w[bundler-2.0.0], loaded_spec_names
|
380
383
|
end
|
381
384
|
|
382
385
|
def test_activate_bin_path_respects_underscore_selection_if_given
|
@@ -406,11 +409,11 @@ class TestGem < Gem::TestCase
|
|
406
409
|
L
|
407
410
|
end
|
408
411
|
|
409
|
-
File.open("Gemfile", "w") {
|
412
|
+
File.open("Gemfile", "w") {|f| f.puts('source "https://rubygems.org"') }
|
410
413
|
|
411
414
|
load Gem.activate_bin_path("bundler", "bundle", "= 1.17.3")
|
412
415
|
|
413
|
-
assert_equal %w
|
416
|
+
assert_equal %w[bundler-1.17.3], loaded_spec_names
|
414
417
|
end
|
415
418
|
|
416
419
|
def test_self_bin_path_no_exec_name
|
@@ -657,7 +660,7 @@ class TestGem < Gem::TestCase
|
|
657
660
|
assert_directory_exists util_cache_dir
|
658
661
|
end
|
659
662
|
|
660
|
-
unless win_platform? || Process.uid.zero?
|
663
|
+
unless win_platform? || Process.uid.zero? # only for FS that support write protection
|
661
664
|
def test_self_ensure_gem_directories_write_protected
|
662
665
|
gemdir = File.join @tempdir, "egd"
|
663
666
|
FileUtils.rm_r gemdir rescue nil
|
@@ -709,7 +712,7 @@ class TestGem < Gem::TestCase
|
|
709
712
|
|
710
713
|
discover_path = File.join 'lib', 'sff', 'discover.rb'
|
711
714
|
|
712
|
-
foo1, foo2 = %w
|
715
|
+
foo1, foo2 = %w[1 2].map do |version|
|
713
716
|
spec = quick_gem 'sff', version do |s|
|
714
717
|
s.files << discover_path
|
715
718
|
end
|
@@ -741,7 +744,7 @@ class TestGem < Gem::TestCase
|
|
741
744
|
|
742
745
|
discover_path = File.join 'lib', 'sff', 'discover.rb'
|
743
746
|
|
744
|
-
foo1, _ = %w
|
747
|
+
foo1, _ = %w[1 2].map do |version|
|
745
748
|
spec = quick_gem 'sff', version do |s|
|
746
749
|
s.files << discover_path
|
747
750
|
end
|
@@ -762,7 +765,7 @@ class TestGem < Gem::TestCase
|
|
762
765
|
|
763
766
|
expected = [
|
764
767
|
File.expand_path('test/rubygems/sff/discover.rb', PROJECT_DIR),
|
765
|
-
File.join(foo1.full_gem_path, discover_path)
|
768
|
+
File.join(foo1.full_gem_path, discover_path),
|
766
769
|
].sort
|
767
770
|
|
768
771
|
assert_equal expected, Gem.find_files('sff/discover').sort
|
@@ -777,7 +780,7 @@ class TestGem < Gem::TestCase
|
|
777
780
|
|
778
781
|
discover_path = File.join 'lib', 'sff', 'discover.rb'
|
779
782
|
|
780
|
-
_, foo2 = %w
|
783
|
+
_, foo2 = %w[1 2].map do |version|
|
781
784
|
spec = quick_gem 'sff', version do |s|
|
782
785
|
s.files << discover_path
|
783
786
|
end
|
@@ -1017,7 +1020,7 @@ class TestGem < Gem::TestCase
|
|
1017
1020
|
|
1018
1021
|
Gem.refresh
|
1019
1022
|
|
1020
|
-
Gem::Specification.each{|spec| assert spec.activated? if spec == s}
|
1023
|
+
Gem::Specification.each{|spec| assert spec.activated? if spec == s }
|
1021
1024
|
|
1022
1025
|
Gem.loaded_specs.delete(s)
|
1023
1026
|
Gem.refresh
|
@@ -1025,20 +1028,16 @@ class TestGem < Gem::TestCase
|
|
1025
1028
|
|
1026
1029
|
def test_self_ruby_escaping_spaces_in_path
|
1027
1030
|
with_clean_path_to_ruby do
|
1028
|
-
|
1029
|
-
|
1030
|
-
assert_equal "\"C:/Ruby 1.8/bin/ruby.exe\"", Gem.ruby
|
1031
|
-
end
|
1031
|
+
with_rb_config_ruby("C:/Ruby 1.8/bin/ruby.exe") do
|
1032
|
+
assert_equal "\"C:/Ruby 1.8/bin/ruby.exe\"", Gem.ruby
|
1032
1033
|
end
|
1033
1034
|
end
|
1034
1035
|
end
|
1035
1036
|
|
1036
1037
|
def test_self_ruby_path_without_spaces
|
1037
1038
|
with_clean_path_to_ruby do
|
1038
|
-
|
1039
|
-
|
1040
|
-
assert_equal "C:/Ruby18/bin/ruby.exe", Gem.ruby
|
1041
|
-
end
|
1039
|
+
with_rb_config_ruby("C:/Ruby18/bin/ruby.exe") do
|
1040
|
+
assert_equal "C:/Ruby18/bin/ruby.exe", Gem.ruby
|
1042
1041
|
end
|
1043
1042
|
end
|
1044
1043
|
end
|
@@ -1090,7 +1089,7 @@ class TestGem < Gem::TestCase
|
|
1090
1089
|
util_restore_RUBY_VERSION
|
1091
1090
|
end
|
1092
1091
|
|
1093
|
-
def
|
1092
|
+
def test_self_ruby_version_with_svn_prerelease
|
1094
1093
|
util_set_RUBY_VERSION '2.6.0', -1, 63539, 'ruby 2.6.0preview2 (2018-05-31 trunk 63539) [x86_64-linux]'
|
1095
1094
|
|
1096
1095
|
assert_equal Gem::Version.new('2.6.0.preview2'), Gem.ruby_version
|
@@ -1098,6 +1097,14 @@ class TestGem < Gem::TestCase
|
|
1098
1097
|
util_restore_RUBY_VERSION
|
1099
1098
|
end
|
1100
1099
|
|
1100
|
+
def test_self_ruby_version_with_git_prerelease
|
1101
|
+
util_set_RUBY_VERSION '2.7.0', -1, 'b563439274a402e33541f5695b1bfd4ac1085638', 'ruby 2.7.0preview3 (2019-11-23 master b563439274) [x86_64-linux]'
|
1102
|
+
|
1103
|
+
assert_equal Gem::Version.new('2.7.0.preview3'), Gem.ruby_version
|
1104
|
+
ensure
|
1105
|
+
util_restore_RUBY_VERSION
|
1106
|
+
end
|
1107
|
+
|
1101
1108
|
def test_self_ruby_version_with_non_mri_implementations_with_mri_prerelase_compatibility
|
1102
1109
|
util_set_RUBY_VERSION '2.6.0', -1, 63539, 'weirdjruby 9.2.0.0 (2.6.0preview2) 2018-05-24 81156a8 OpenJDK 64-Bit Server VM 25.171-b11 on 1.8.0_171-8u171-b11-0ubuntu0.16.04.1-b11 [linux-x86_64]', 'weirdjruby', '9.2.0.0'
|
1103
1110
|
|
@@ -1106,7 +1113,7 @@ class TestGem < Gem::TestCase
|
|
1106
1113
|
util_restore_RUBY_VERSION
|
1107
1114
|
end
|
1108
1115
|
|
1109
|
-
def
|
1116
|
+
def test_self_ruby_version_with_svn_trunk
|
1110
1117
|
util_set_RUBY_VERSION '1.9.2', -1, 23493, 'ruby 1.9.2dev (2009-05-20 trunk 23493) [x86_64-linux]'
|
1111
1118
|
|
1112
1119
|
assert_equal Gem::Version.new('1.9.2.dev'), Gem.ruby_version
|
@@ -1114,6 +1121,14 @@ class TestGem < Gem::TestCase
|
|
1114
1121
|
util_restore_RUBY_VERSION
|
1115
1122
|
end
|
1116
1123
|
|
1124
|
+
def test_self_ruby_version_with_git_master
|
1125
|
+
util_set_RUBY_VERSION '2.7.0', -1, '5de284ec78220e75643f89b454ce999da0c1c195', 'ruby 2.7.0dev (2019-12-23T01:37:30Z master 5de284ec78) [x86_64-linux]'
|
1126
|
+
|
1127
|
+
assert_equal Gem::Version.new('2.7.0.dev'), Gem.ruby_version
|
1128
|
+
ensure
|
1129
|
+
util_restore_RUBY_VERSION
|
1130
|
+
end
|
1131
|
+
|
1117
1132
|
def test_self_rubygems_version
|
1118
1133
|
assert_equal Gem::Version.new(Gem::VERSION), Gem.rubygems_version
|
1119
1134
|
end
|
@@ -1147,7 +1162,7 @@ class TestGem < Gem::TestCase
|
|
1147
1162
|
def test_self_post_build
|
1148
1163
|
assert_equal 1, Gem.post_build_hooks.length
|
1149
1164
|
|
1150
|
-
Gem.post_build {
|
1165
|
+
Gem.post_build {|installer| }
|
1151
1166
|
|
1152
1167
|
assert_equal 2, Gem.post_build_hooks.length
|
1153
1168
|
end
|
@@ -1155,7 +1170,7 @@ class TestGem < Gem::TestCase
|
|
1155
1170
|
def test_self_post_install
|
1156
1171
|
assert_equal 1, Gem.post_install_hooks.length
|
1157
1172
|
|
1158
|
-
Gem.post_install {
|
1173
|
+
Gem.post_install {|installer| }
|
1159
1174
|
|
1160
1175
|
assert_equal 2, Gem.post_install_hooks.length
|
1161
1176
|
end
|
@@ -1163,7 +1178,7 @@ class TestGem < Gem::TestCase
|
|
1163
1178
|
def test_self_done_installing
|
1164
1179
|
assert_empty Gem.done_installing_hooks
|
1165
1180
|
|
1166
|
-
Gem.done_installing {
|
1181
|
+
Gem.done_installing {|gems| }
|
1167
1182
|
|
1168
1183
|
assert_equal 1, Gem.done_installing_hooks.length
|
1169
1184
|
end
|
@@ -1171,7 +1186,7 @@ class TestGem < Gem::TestCase
|
|
1171
1186
|
def test_self_post_reset
|
1172
1187
|
assert_empty Gem.post_reset_hooks
|
1173
1188
|
|
1174
|
-
Gem.post_reset {
|
1189
|
+
Gem.post_reset {}
|
1175
1190
|
|
1176
1191
|
assert_equal 1, Gem.post_reset_hooks.length
|
1177
1192
|
end
|
@@ -1179,7 +1194,7 @@ class TestGem < Gem::TestCase
|
|
1179
1194
|
def test_self_post_uninstall
|
1180
1195
|
assert_equal 1, Gem.post_uninstall_hooks.length
|
1181
1196
|
|
1182
|
-
Gem.post_uninstall {
|
1197
|
+
Gem.post_uninstall {|installer| }
|
1183
1198
|
|
1184
1199
|
assert_equal 2, Gem.post_uninstall_hooks.length
|
1185
1200
|
end
|
@@ -1187,7 +1202,7 @@ class TestGem < Gem::TestCase
|
|
1187
1202
|
def test_self_pre_install
|
1188
1203
|
assert_equal 1, Gem.pre_install_hooks.length
|
1189
1204
|
|
1190
|
-
Gem.pre_install {
|
1205
|
+
Gem.pre_install {|installer| }
|
1191
1206
|
|
1192
1207
|
assert_equal 2, Gem.pre_install_hooks.length
|
1193
1208
|
end
|
@@ -1195,7 +1210,7 @@ class TestGem < Gem::TestCase
|
|
1195
1210
|
def test_self_pre_reset
|
1196
1211
|
assert_empty Gem.pre_reset_hooks
|
1197
1212
|
|
1198
|
-
Gem.pre_reset {
|
1213
|
+
Gem.pre_reset {}
|
1199
1214
|
|
1200
1215
|
assert_equal 1, Gem.pre_reset_hooks.length
|
1201
1216
|
end
|
@@ -1203,7 +1218,7 @@ class TestGem < Gem::TestCase
|
|
1203
1218
|
def test_self_pre_uninstall
|
1204
1219
|
assert_equal 1, Gem.pre_uninstall_hooks.length
|
1205
1220
|
|
1206
|
-
Gem.pre_uninstall {
|
1221
|
+
Gem.pre_uninstall {|installer| }
|
1207
1222
|
|
1208
1223
|
assert_equal 2, Gem.pre_uninstall_hooks.length
|
1209
1224
|
end
|
@@ -1232,7 +1247,7 @@ class TestGem < Gem::TestCase
|
|
1232
1247
|
|
1233
1248
|
install_specs b1, b2, b3
|
1234
1249
|
|
1235
|
-
specs1 = Gem::Specification.stubs.find_all {
|
1250
|
+
specs1 = Gem::Specification.stubs.find_all {|s| s.name == 'b' }
|
1236
1251
|
Gem::Specification.reset
|
1237
1252
|
specs2 = Gem::Specification.stubs_for('b')
|
1238
1253
|
assert_equal specs1.map(&:version), specs2.map(&:version)
|
@@ -1255,7 +1270,8 @@ class TestGem < Gem::TestCase
|
|
1255
1270
|
Gem.try_activate 'a_file'
|
1256
1271
|
end
|
1257
1272
|
|
1258
|
-
assert_match %r
|
1273
|
+
assert_match %r{Could not find 'b' }, e.message
|
1274
|
+
assert_match %r{at: #{a.spec_file}}, e.message
|
1259
1275
|
end
|
1260
1276
|
|
1261
1277
|
def test_self_try_activate_missing_prerelease
|
@@ -1275,7 +1291,7 @@ class TestGem < Gem::TestCase
|
|
1275
1291
|
Gem.try_activate 'a_file'
|
1276
1292
|
end
|
1277
1293
|
|
1278
|
-
assert_match %r
|
1294
|
+
assert_match %r{Could not find 'b' \(= 1.0rc1\)}, e.message
|
1279
1295
|
end
|
1280
1296
|
|
1281
1297
|
def test_self_try_activate_missing_extensions
|
@@ -1355,6 +1371,8 @@ class TestGem < Gem::TestCase
|
|
1355
1371
|
parts = [@userhome, '.gem', Gem.ruby_engine]
|
1356
1372
|
parts << RbConfig::CONFIG['ruby_version'] unless RbConfig::CONFIG['ruby_version'].empty?
|
1357
1373
|
|
1374
|
+
FileUtils.mkdir_p File.join(parts)
|
1375
|
+
|
1358
1376
|
assert_equal File.join(parts), Gem.user_dir
|
1359
1377
|
end
|
1360
1378
|
|
@@ -1378,9 +1396,9 @@ class TestGem < Gem::TestCase
|
|
1378
1396
|
r.gem "b", "= 1"
|
1379
1397
|
end
|
1380
1398
|
|
1381
|
-
activated = Gem::Specification.map {
|
1399
|
+
activated = Gem::Specification.map {|x| x.full_name }
|
1382
1400
|
|
1383
|
-
assert_equal %w
|
1401
|
+
assert_equal %w[a-1 b-1 c-2], activated.sort
|
1384
1402
|
end
|
1385
1403
|
|
1386
1404
|
def test_self_needs_picks_up_unresolved_deps
|
@@ -1400,7 +1418,7 @@ class TestGem < Gem::TestCase
|
|
1400
1418
|
require "d#{$$}"
|
1401
1419
|
end
|
1402
1420
|
|
1403
|
-
assert_equal %w
|
1421
|
+
assert_equal %w[a-1 b-1 c-2 d-1 e-1], loaded_spec_names
|
1404
1422
|
end
|
1405
1423
|
end
|
1406
1424
|
|
@@ -1470,7 +1488,6 @@ class TestGem < Gem::TestCase
|
|
1470
1488
|
install_gem foo2
|
1471
1489
|
end
|
1472
1490
|
|
1473
|
-
Gem.searcher = nil
|
1474
1491
|
Gem::Specification.reset
|
1475
1492
|
|
1476
1493
|
gem 'foo'
|
@@ -1500,8 +1517,8 @@ class TestGem < Gem::TestCase
|
|
1500
1517
|
def test_gem_path_ordering
|
1501
1518
|
refute_equal Gem.dir, Gem.user_dir
|
1502
1519
|
|
1503
|
-
write_file File.join(@tempdir, 'lib', "g.rb") {
|
1504
|
-
write_file File.join(@tempdir, 'lib', 'm.rb') {
|
1520
|
+
write_file File.join(@tempdir, 'lib', "g.rb") {|fp| fp.puts "" }
|
1521
|
+
write_file File.join(@tempdir, 'lib', 'm.rb') {|fp| fp.puts "" }
|
1505
1522
|
|
1506
1523
|
g = util_spec 'g', '1', nil, "lib/g.rb"
|
1507
1524
|
m = util_spec 'm', '1', nil, "lib/m.rb"
|
@@ -1515,7 +1532,7 @@ class TestGem < Gem::TestCase
|
|
1515
1532
|
|
1516
1533
|
tests = [
|
1517
1534
|
[:dir0, [ Gem.dir, Gem.user_dir], m0],
|
1518
|
-
[:dir1, [ Gem.user_dir, Gem.dir], m1]
|
1535
|
+
[:dir1, [ Gem.user_dir, Gem.dir], m1],
|
1519
1536
|
]
|
1520
1537
|
|
1521
1538
|
tests.each do |_name, _paths, expected|
|
@@ -1556,8 +1573,8 @@ class TestGem < Gem::TestCase
|
|
1556
1573
|
end
|
1557
1574
|
|
1558
1575
|
def test_gem_path_ordering_short
|
1559
|
-
write_file File.join(@tempdir, 'lib', "g.rb") {
|
1560
|
-
write_file File.join(@tempdir, 'lib', 'm.rb') {
|
1576
|
+
write_file File.join(@tempdir, 'lib', "g.rb") {|fp| fp.puts "" }
|
1577
|
+
write_file File.join(@tempdir, 'lib', 'm.rb') {|fp| fp.puts "" }
|
1561
1578
|
|
1562
1579
|
g = util_spec 'g', '1', nil, "lib/g.rb"
|
1563
1580
|
m = util_spec 'm', '1', nil, "lib/m.rb"
|
@@ -1593,7 +1610,7 @@ class TestGem < Gem::TestCase
|
|
1593
1610
|
|
1594
1611
|
Gem.use_gemdeps
|
1595
1612
|
|
1596
|
-
assert_equal add_bundler_full_name(%W
|
1613
|
+
assert_equal add_bundler_full_name(%W[a-1 b-1 c-1]), loaded_spec_names
|
1597
1614
|
end
|
1598
1615
|
|
1599
1616
|
def test_auto_activation_of_used_gemdeps_file
|
@@ -1614,11 +1631,10 @@ class TestGem < Gem::TestCase
|
|
1614
1631
|
ENV['RUBYGEMS_GEMDEPS'] = "-"
|
1615
1632
|
|
1616
1633
|
expected_specs = [a, b, util_spec("bundler", Bundler::VERSION), c].compact
|
1617
|
-
assert_equal expected_specs, Gem.use_gemdeps.sort_by {
|
1634
|
+
assert_equal expected_specs, Gem.use_gemdeps.sort_by {|s| s.name }
|
1618
1635
|
end
|
1619
1636
|
|
1620
|
-
|
1621
|
-
BUNDLER_LIB_PATH = File.expand_path $LOAD_PATH.find {|lp| File.file?(File.join(lp, "bundler.rb")) }.dup.tap(&Gem::UNTAINT)
|
1637
|
+
BUNDLER_LIB_PATH = File.expand_path $LOAD_PATH.find {|lp| File.file?(File.join(lp, "bundler.rb")) }
|
1622
1638
|
BUNDLER_FULL_NAME = "bundler-#{Bundler::VERSION}".freeze
|
1623
1639
|
|
1624
1640
|
def add_bundler_full_name(names)
|
@@ -1645,8 +1661,8 @@ class TestGem < Gem::TestCase
|
|
1645
1661
|
ENV['RUBYGEMS_GEMDEPS'] = "-"
|
1646
1662
|
|
1647
1663
|
path = File.join @tempdir, "gem.deps.rb"
|
1648
|
-
cmd = [
|
1649
|
-
"-I#{BUNDLER_LIB_PATH
|
1664
|
+
cmd = [*ruby_with_rubygems_in_load_path,
|
1665
|
+
"-I#{BUNDLER_LIB_PATH}"]
|
1650
1666
|
cmd << "-eputs Gem.loaded_specs.values.map(&:full_name).sort"
|
1651
1667
|
|
1652
1668
|
File.open path, "w" do |f|
|
@@ -1683,8 +1699,8 @@ class TestGem < Gem::TestCase
|
|
1683
1699
|
Dir.mkdir "sub1"
|
1684
1700
|
|
1685
1701
|
path = File.join @tempdir, "gem.deps.rb"
|
1686
|
-
cmd = [
|
1687
|
-
"-I#{BUNDLER_LIB_PATH
|
1702
|
+
cmd = [*ruby_with_rubygems_in_load_path, "-Csub1",
|
1703
|
+
"-I#{BUNDLER_LIB_PATH}"]
|
1688
1704
|
cmd << "-eputs Gem.loaded_specs.values.map(&:full_name).sort"
|
1689
1705
|
|
1690
1706
|
File.open path, "w" do |f|
|
@@ -1731,12 +1747,24 @@ class TestGem < Gem::TestCase
|
|
1731
1747
|
assert_nil Gem.find_unresolved_default_spec("README")
|
1732
1748
|
end
|
1733
1749
|
|
1750
|
+
def test_register_default_spec_old_style_with_folder_starting_with_lib
|
1751
|
+
Gem.clear_default_specs
|
1752
|
+
|
1753
|
+
old_style = Gem::Specification.new do |spec|
|
1754
|
+
spec.files = ["libexec/bundle", "foo.rb", "bar.rb"]
|
1755
|
+
end
|
1756
|
+
|
1757
|
+
Gem.register_default_spec old_style
|
1758
|
+
|
1759
|
+
assert_equal old_style, Gem.find_unresolved_default_spec("foo.rb")
|
1760
|
+
end
|
1761
|
+
|
1734
1762
|
def test_use_gemdeps
|
1735
1763
|
gem_deps_file = 'gem.deps.rb'.tap(&Gem::UNTAINT)
|
1736
1764
|
spec = util_spec 'a', 1
|
1737
1765
|
install_specs spec
|
1738
1766
|
|
1739
|
-
spec = Gem::Specification.find {
|
1767
|
+
spec = Gem::Specification.find {|s| s == spec }
|
1740
1768
|
refute spec.activated?
|
1741
1769
|
|
1742
1770
|
File.open gem_deps_file, 'w' do |io|
|
@@ -1747,7 +1775,7 @@ class TestGem < Gem::TestCase
|
|
1747
1775
|
|
1748
1776
|
Gem.use_gemdeps gem_deps_file
|
1749
1777
|
|
1750
|
-
assert_equal add_bundler_full_name(%W
|
1778
|
+
assert_equal add_bundler_full_name(%W[a-1]), loaded_spec_names
|
1751
1779
|
refute_nil Gem.gemdeps
|
1752
1780
|
end
|
1753
1781
|
|
@@ -1797,7 +1825,7 @@ class TestGem < Gem::TestCase
|
|
1797
1825
|
|
1798
1826
|
spec = util_spec 'a', 1
|
1799
1827
|
install_specs spec
|
1800
|
-
spec = Gem::Specification.find {
|
1828
|
+
spec = Gem::Specification.find {|s| s == spec }
|
1801
1829
|
|
1802
1830
|
refute spec.activated?
|
1803
1831
|
|
@@ -1807,7 +1835,7 @@ class TestGem < Gem::TestCase
|
|
1807
1835
|
|
1808
1836
|
Gem.use_gemdeps
|
1809
1837
|
|
1810
|
-
assert_equal add_bundler_full_name(%W
|
1838
|
+
assert_equal add_bundler_full_name(%W[a-1]), loaded_spec_names
|
1811
1839
|
ensure
|
1812
1840
|
ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
|
1813
1841
|
end
|
@@ -1875,7 +1903,7 @@ You may need to `gem install -g` to install missing gems
|
|
1875
1903
|
spec = util_spec 'a', 1
|
1876
1904
|
install_specs spec
|
1877
1905
|
|
1878
|
-
spec = Gem::Specification.find {
|
1906
|
+
spec = Gem::Specification.find {|s| s == spec }
|
1879
1907
|
refute spec.activated?
|
1880
1908
|
|
1881
1909
|
File.open 'x', 'w' do |io|
|
@@ -1884,7 +1912,7 @@ You may need to `gem install -g` to install missing gems
|
|
1884
1912
|
|
1885
1913
|
Gem.use_gemdeps
|
1886
1914
|
|
1887
|
-
assert_equal add_bundler_full_name(%W
|
1915
|
+
assert_equal add_bundler_full_name(%W[a-1]), loaded_spec_names
|
1888
1916
|
ensure
|
1889
1917
|
ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
|
1890
1918
|
end
|
@@ -1903,35 +1931,60 @@ You may need to `gem install -g` to install missing gems
|
|
1903
1931
|
assert platform_defaults.is_a? Hash
|
1904
1932
|
end
|
1905
1933
|
|
1906
|
-
|
1907
|
-
|
1908
|
-
|
1934
|
+
# Ensure that `Gem.source_date_epoch` is consistent even if
|
1935
|
+
# $SOURCE_DATE_EPOCH has not been set.
|
1936
|
+
def test_default_source_date_epoch_doesnt_change
|
1937
|
+
old_epoch = ENV['SOURCE_DATE_EPOCH']
|
1938
|
+
ENV['SOURCE_DATE_EPOCH'] = nil
|
1909
1939
|
|
1910
|
-
|
1940
|
+
# Unfortunately, there is no real way to test this aside from waiting
|
1941
|
+
# enough for `Time.now.to_i` to change -- which is a whole second.
|
1942
|
+
#
|
1943
|
+
# Fortunately, we only need to do this once.
|
1944
|
+
a = Gem.source_date_epoch
|
1945
|
+
sleep 1
|
1946
|
+
b = Gem.source_date_epoch
|
1947
|
+
assert_equal a, b
|
1911
1948
|
ensure
|
1912
|
-
|
1913
|
-
RbConfig::CONFIG['ruby_install_name'] = orig_RUBY_INSTALL_NAME
|
1914
|
-
else
|
1915
|
-
RbConfig::CONFIG.delete 'ruby_install_name'
|
1916
|
-
end
|
1949
|
+
ENV['SOURCE_DATE_EPOCH'] = old_epoch
|
1917
1950
|
end
|
1918
1951
|
|
1919
|
-
def
|
1920
|
-
|
1921
|
-
|
1952
|
+
def ruby_install_name(name)
|
1953
|
+
with_clean_path_to_ruby do
|
1954
|
+
orig_RUBY_INSTALL_NAME = RbConfig::CONFIG['ruby_install_name']
|
1955
|
+
RbConfig::CONFIG['ruby_install_name'] = name
|
1956
|
+
|
1957
|
+
begin
|
1922
1958
|
yield
|
1959
|
+
ensure
|
1960
|
+
if orig_RUBY_INSTALL_NAME
|
1961
|
+
RbConfig::CONFIG['ruby_install_name'] = orig_RUBY_INSTALL_NAME
|
1962
|
+
else
|
1963
|
+
RbConfig::CONFIG.delete 'ruby_install_name'
|
1964
|
+
end
|
1923
1965
|
end
|
1924
1966
|
end
|
1925
1967
|
end
|
1926
1968
|
|
1927
|
-
def
|
1928
|
-
|
1969
|
+
def with_rb_config_ruby(path)
|
1970
|
+
rb_config_singleton_class = class << RbConfig; self; end
|
1971
|
+
orig_path = RbConfig.ruby
|
1929
1972
|
|
1930
|
-
|
1973
|
+
redefine_method(rb_config_singleton_class, :ruby, path)
|
1931
1974
|
|
1932
1975
|
yield
|
1933
1976
|
ensure
|
1934
|
-
|
1977
|
+
redefine_method(rb_config_singleton_class, :ruby, orig_path)
|
1978
|
+
end
|
1979
|
+
|
1980
|
+
def redefine_method(base, method, new_result)
|
1981
|
+
if RUBY_VERSION >= "2.5"
|
1982
|
+
base.alias_method(method, method)
|
1983
|
+
base.define_method(method) { new_result }
|
1984
|
+
else
|
1985
|
+
base.send(:alias_method, method, method)
|
1986
|
+
base.send(:define_method, method) { new_result }
|
1987
|
+
end
|
1935
1988
|
end
|
1936
1989
|
|
1937
1990
|
def with_plugin(path)
|
@@ -1979,5 +2032,4 @@ You may need to `gem install -g` to install missing gems
|
|
1979
2032
|
def util_cache_dir
|
1980
2033
|
File.join Gem.dir, "cache"
|
1981
2034
|
end
|
1982
|
-
|
1983
2035
|
end
|