rubygems-update 3.1.2 → 3.2.6
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} +756 -489
- data/CODE_OF_CONDUCT.md +55 -19
- data/CONTRIBUTING.md +25 -11
- data/Manifest.txt +75 -104
- data/POLICIES.md +6 -12
- data/README.md +5 -5
- data/Rakefile +64 -92
- data/bin/update_rubygems +1 -1
- data/bundler/CHANGELOG.md +1636 -1422
- data/bundler/README.md +6 -8
- data/bundler/UPGRADING.md +18 -32
- data/bundler/bundler.gemspec +4 -4
- data/bundler/exe/bundle +3 -0
- data/bundler/lib/bundler.rb +32 -8
- data/bundler/lib/bundler/build_metadata.rb +4 -12
- data/bundler/lib/bundler/cli.rb +55 -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 +86 -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 -13
- data/bundler/lib/bundler/definition.rb +66 -82
- data/bundler/lib/bundler/dep_proxy.rb +16 -9
- 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 +4 -4
- 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 → lib/bundler/man}/bundle-add.1 +1 -1
- data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +0 -0
- 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 +1 -1
- data/bundler/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-check.1 +1 -1
- data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-clean.1 +1 -1
- data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-config.1 +16 -25
- data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +19 -30
- data/bundler/{man → lib/bundler/man}/bundle-doctor.1 +1 -1
- data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-exec.1 +1 -1
- data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-gem.1 +25 -3
- data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
- data/bundler/{man → lib/bundler/man}/bundle-info.1 +1 -1
- data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-init.1 +1 -1
- data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-inject.1 +1 -1
- data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-install.1 +30 -3
- data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +25 -3
- 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/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-open.1 +1 -1
- data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-outdated.1 +1 -1
- data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-platform.1 +1 -1
- data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-pristine.1 +1 -1
- data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-remove.1 +1 -1
- data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-show.1 +1 -1
- data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-update.1 +1 -1
- data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-viz.1 +1 -1
- data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle.1 +1 -1
- data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/gemfile.5 +4 -4
- data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +4 -4
- data/bundler/{man → lib/bundler/man}/index.txt +0 -0
- 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 +43 -19
- data/bundler/lib/bundler/resolver/spec_group.rb +39 -24
- data/bundler/lib/bundler/retry.rb +1 -1
- data/bundler/lib/bundler/ruby_version.rb +1 -1
- data/bundler/lib/bundler/rubygems_ext.rb +69 -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 +23 -21
- data/bundler/lib/bundler/source/git/git_proxy.rb +82 -80
- data/bundler/lib/bundler/source/path.rb +7 -3
- data/bundler/lib/bundler/source/path/installer.rb +10 -10
- data/bundler/lib/bundler/source/rubygems.rb +23 -17
- 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 +8 -10
- 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 +15 -7
- data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -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 +48 -46
- 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/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 +101 -74
- 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 +21 -39
- 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 +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 -16
- 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 +14 -29
- 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 +21 -22
- 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 +2 -4
- 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 +29 -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 +122 -131
- 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 +120 -134
- 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 +3 -3
- data/setup.rb +2 -7
- data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
- 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 +156 -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 +160 -135
- 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 +116 -239
- 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 +50 -47
- data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -25
- data/test/rubygems/test_gem_ext_configure_builder.rb +6 -22
- 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 +71 -6
- data/test/rubygems/test_gem_rdoc.rb +0 -2
- data/test/rubygems/test_gem_remote_fetcher.rb +169 -212
- 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 +43 -3
- 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 +27 -6
- 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 +188 -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 +79 -133
- 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
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
|
@@ -689,6 +692,11 @@ class TestGem < Gem::TestCase
|
|
689
692
|
ensure
|
690
693
|
FileUtils.chmod 0600, parent
|
691
694
|
end
|
695
|
+
|
696
|
+
def test_self_ensure_gem_directories_non_existent_paths
|
697
|
+
Gem.ensure_gem_subdirectories '/proc/0123456789/bogus' # should not raise
|
698
|
+
Gem.ensure_gem_subdirectories 'classpath:/bogus/x' # JRuby embed scenario
|
699
|
+
end
|
692
700
|
end
|
693
701
|
|
694
702
|
def test_self_extension_dir_shared
|
@@ -709,7 +717,7 @@ class TestGem < Gem::TestCase
|
|
709
717
|
|
710
718
|
discover_path = File.join 'lib', 'sff', 'discover.rb'
|
711
719
|
|
712
|
-
foo1, foo2 = %w
|
720
|
+
foo1, foo2 = %w[1 2].map do |version|
|
713
721
|
spec = quick_gem 'sff', version do |s|
|
714
722
|
s.files << discover_path
|
715
723
|
end
|
@@ -741,7 +749,7 @@ class TestGem < Gem::TestCase
|
|
741
749
|
|
742
750
|
discover_path = File.join 'lib', 'sff', 'discover.rb'
|
743
751
|
|
744
|
-
foo1, _ = %w
|
752
|
+
foo1, _ = %w[1 2].map do |version|
|
745
753
|
spec = quick_gem 'sff', version do |s|
|
746
754
|
s.files << discover_path
|
747
755
|
end
|
@@ -762,7 +770,7 @@ class TestGem < Gem::TestCase
|
|
762
770
|
|
763
771
|
expected = [
|
764
772
|
File.expand_path('test/rubygems/sff/discover.rb', PROJECT_DIR),
|
765
|
-
File.join(foo1.full_gem_path, discover_path)
|
773
|
+
File.join(foo1.full_gem_path, discover_path),
|
766
774
|
].sort
|
767
775
|
|
768
776
|
assert_equal expected, Gem.find_files('sff/discover').sort
|
@@ -777,7 +785,7 @@ class TestGem < Gem::TestCase
|
|
777
785
|
|
778
786
|
discover_path = File.join 'lib', 'sff', 'discover.rb'
|
779
787
|
|
780
|
-
_, foo2 = %w
|
788
|
+
_, foo2 = %w[1 2].map do |version|
|
781
789
|
spec = quick_gem 'sff', version do |s|
|
782
790
|
s.files << discover_path
|
783
791
|
end
|
@@ -1017,7 +1025,7 @@ class TestGem < Gem::TestCase
|
|
1017
1025
|
|
1018
1026
|
Gem.refresh
|
1019
1027
|
|
1020
|
-
Gem::Specification.each{|spec| assert spec.activated? if spec == s}
|
1028
|
+
Gem::Specification.each{|spec| assert spec.activated? if spec == s }
|
1021
1029
|
|
1022
1030
|
Gem.loaded_specs.delete(s)
|
1023
1031
|
Gem.refresh
|
@@ -1025,20 +1033,16 @@ class TestGem < Gem::TestCase
|
|
1025
1033
|
|
1026
1034
|
def test_self_ruby_escaping_spaces_in_path
|
1027
1035
|
with_clean_path_to_ruby do
|
1028
|
-
|
1029
|
-
|
1030
|
-
assert_equal "\"C:/Ruby 1.8/bin/ruby.exe\"", Gem.ruby
|
1031
|
-
end
|
1036
|
+
with_rb_config_ruby("C:/Ruby 1.8/bin/ruby.exe") do
|
1037
|
+
assert_equal "\"C:/Ruby 1.8/bin/ruby.exe\"", Gem.ruby
|
1032
1038
|
end
|
1033
1039
|
end
|
1034
1040
|
end
|
1035
1041
|
|
1036
1042
|
def test_self_ruby_path_without_spaces
|
1037
1043
|
with_clean_path_to_ruby do
|
1038
|
-
|
1039
|
-
|
1040
|
-
assert_equal "C:/Ruby18/bin/ruby.exe", Gem.ruby
|
1041
|
-
end
|
1044
|
+
with_rb_config_ruby("C:/Ruby18/bin/ruby.exe") do
|
1045
|
+
assert_equal "C:/Ruby18/bin/ruby.exe", Gem.ruby
|
1042
1046
|
end
|
1043
1047
|
end
|
1044
1048
|
end
|
@@ -1090,7 +1094,7 @@ class TestGem < Gem::TestCase
|
|
1090
1094
|
util_restore_RUBY_VERSION
|
1091
1095
|
end
|
1092
1096
|
|
1093
|
-
def
|
1097
|
+
def test_self_ruby_version_with_svn_prerelease
|
1094
1098
|
util_set_RUBY_VERSION '2.6.0', -1, 63539, 'ruby 2.6.0preview2 (2018-05-31 trunk 63539) [x86_64-linux]'
|
1095
1099
|
|
1096
1100
|
assert_equal Gem::Version.new('2.6.0.preview2'), Gem.ruby_version
|
@@ -1098,6 +1102,14 @@ class TestGem < Gem::TestCase
|
|
1098
1102
|
util_restore_RUBY_VERSION
|
1099
1103
|
end
|
1100
1104
|
|
1105
|
+
def test_self_ruby_version_with_git_prerelease
|
1106
|
+
util_set_RUBY_VERSION '2.7.0', -1, 'b563439274a402e33541f5695b1bfd4ac1085638', 'ruby 2.7.0preview3 (2019-11-23 master b563439274) [x86_64-linux]'
|
1107
|
+
|
1108
|
+
assert_equal Gem::Version.new('2.7.0.preview3'), Gem.ruby_version
|
1109
|
+
ensure
|
1110
|
+
util_restore_RUBY_VERSION
|
1111
|
+
end
|
1112
|
+
|
1101
1113
|
def test_self_ruby_version_with_non_mri_implementations_with_mri_prerelase_compatibility
|
1102
1114
|
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
1115
|
|
@@ -1106,7 +1118,7 @@ class TestGem < Gem::TestCase
|
|
1106
1118
|
util_restore_RUBY_VERSION
|
1107
1119
|
end
|
1108
1120
|
|
1109
|
-
def
|
1121
|
+
def test_self_ruby_version_with_svn_trunk
|
1110
1122
|
util_set_RUBY_VERSION '1.9.2', -1, 23493, 'ruby 1.9.2dev (2009-05-20 trunk 23493) [x86_64-linux]'
|
1111
1123
|
|
1112
1124
|
assert_equal Gem::Version.new('1.9.2.dev'), Gem.ruby_version
|
@@ -1114,6 +1126,14 @@ class TestGem < Gem::TestCase
|
|
1114
1126
|
util_restore_RUBY_VERSION
|
1115
1127
|
end
|
1116
1128
|
|
1129
|
+
def test_self_ruby_version_with_git_master
|
1130
|
+
util_set_RUBY_VERSION '2.7.0', -1, '5de284ec78220e75643f89b454ce999da0c1c195', 'ruby 2.7.0dev (2019-12-23T01:37:30Z master 5de284ec78) [x86_64-linux]'
|
1131
|
+
|
1132
|
+
assert_equal Gem::Version.new('2.7.0.dev'), Gem.ruby_version
|
1133
|
+
ensure
|
1134
|
+
util_restore_RUBY_VERSION
|
1135
|
+
end
|
1136
|
+
|
1117
1137
|
def test_self_rubygems_version
|
1118
1138
|
assert_equal Gem::Version.new(Gem::VERSION), Gem.rubygems_version
|
1119
1139
|
end
|
@@ -1147,7 +1167,7 @@ class TestGem < Gem::TestCase
|
|
1147
1167
|
def test_self_post_build
|
1148
1168
|
assert_equal 1, Gem.post_build_hooks.length
|
1149
1169
|
|
1150
|
-
Gem.post_build {
|
1170
|
+
Gem.post_build {|installer| }
|
1151
1171
|
|
1152
1172
|
assert_equal 2, Gem.post_build_hooks.length
|
1153
1173
|
end
|
@@ -1155,7 +1175,7 @@ class TestGem < Gem::TestCase
|
|
1155
1175
|
def test_self_post_install
|
1156
1176
|
assert_equal 1, Gem.post_install_hooks.length
|
1157
1177
|
|
1158
|
-
Gem.post_install {
|
1178
|
+
Gem.post_install {|installer| }
|
1159
1179
|
|
1160
1180
|
assert_equal 2, Gem.post_install_hooks.length
|
1161
1181
|
end
|
@@ -1163,7 +1183,7 @@ class TestGem < Gem::TestCase
|
|
1163
1183
|
def test_self_done_installing
|
1164
1184
|
assert_empty Gem.done_installing_hooks
|
1165
1185
|
|
1166
|
-
Gem.done_installing {
|
1186
|
+
Gem.done_installing {|gems| }
|
1167
1187
|
|
1168
1188
|
assert_equal 1, Gem.done_installing_hooks.length
|
1169
1189
|
end
|
@@ -1171,7 +1191,7 @@ class TestGem < Gem::TestCase
|
|
1171
1191
|
def test_self_post_reset
|
1172
1192
|
assert_empty Gem.post_reset_hooks
|
1173
1193
|
|
1174
|
-
Gem.post_reset {
|
1194
|
+
Gem.post_reset {}
|
1175
1195
|
|
1176
1196
|
assert_equal 1, Gem.post_reset_hooks.length
|
1177
1197
|
end
|
@@ -1179,7 +1199,7 @@ class TestGem < Gem::TestCase
|
|
1179
1199
|
def test_self_post_uninstall
|
1180
1200
|
assert_equal 1, Gem.post_uninstall_hooks.length
|
1181
1201
|
|
1182
|
-
Gem.post_uninstall {
|
1202
|
+
Gem.post_uninstall {|installer| }
|
1183
1203
|
|
1184
1204
|
assert_equal 2, Gem.post_uninstall_hooks.length
|
1185
1205
|
end
|
@@ -1187,7 +1207,7 @@ class TestGem < Gem::TestCase
|
|
1187
1207
|
def test_self_pre_install
|
1188
1208
|
assert_equal 1, Gem.pre_install_hooks.length
|
1189
1209
|
|
1190
|
-
Gem.pre_install {
|
1210
|
+
Gem.pre_install {|installer| }
|
1191
1211
|
|
1192
1212
|
assert_equal 2, Gem.pre_install_hooks.length
|
1193
1213
|
end
|
@@ -1195,7 +1215,7 @@ class TestGem < Gem::TestCase
|
|
1195
1215
|
def test_self_pre_reset
|
1196
1216
|
assert_empty Gem.pre_reset_hooks
|
1197
1217
|
|
1198
|
-
Gem.pre_reset {
|
1218
|
+
Gem.pre_reset {}
|
1199
1219
|
|
1200
1220
|
assert_equal 1, Gem.pre_reset_hooks.length
|
1201
1221
|
end
|
@@ -1203,7 +1223,7 @@ class TestGem < Gem::TestCase
|
|
1203
1223
|
def test_self_pre_uninstall
|
1204
1224
|
assert_equal 1, Gem.pre_uninstall_hooks.length
|
1205
1225
|
|
1206
|
-
Gem.pre_uninstall {
|
1226
|
+
Gem.pre_uninstall {|installer| }
|
1207
1227
|
|
1208
1228
|
assert_equal 2, Gem.pre_uninstall_hooks.length
|
1209
1229
|
end
|
@@ -1232,7 +1252,7 @@ class TestGem < Gem::TestCase
|
|
1232
1252
|
|
1233
1253
|
install_specs b1, b2, b3
|
1234
1254
|
|
1235
|
-
specs1 = Gem::Specification.stubs.find_all {
|
1255
|
+
specs1 = Gem::Specification.stubs.find_all {|s| s.name == 'b' }
|
1236
1256
|
Gem::Specification.reset
|
1237
1257
|
specs2 = Gem::Specification.stubs_for('b')
|
1238
1258
|
assert_equal specs1.map(&:version), specs2.map(&:version)
|
@@ -1255,7 +1275,8 @@ class TestGem < Gem::TestCase
|
|
1255
1275
|
Gem.try_activate 'a_file'
|
1256
1276
|
end
|
1257
1277
|
|
1258
|
-
assert_match %r
|
1278
|
+
assert_match %r{Could not find 'b' }, e.message
|
1279
|
+
assert_match %r{at: #{a.spec_file}}, e.message
|
1259
1280
|
end
|
1260
1281
|
|
1261
1282
|
def test_self_try_activate_missing_prerelease
|
@@ -1275,7 +1296,7 @@ class TestGem < Gem::TestCase
|
|
1275
1296
|
Gem.try_activate 'a_file'
|
1276
1297
|
end
|
1277
1298
|
|
1278
|
-
assert_match %r
|
1299
|
+
assert_match %r{Could not find 'b' \(= 1.0rc1\)}, e.message
|
1279
1300
|
end
|
1280
1301
|
|
1281
1302
|
def test_self_try_activate_missing_extensions
|
@@ -1355,6 +1376,8 @@ class TestGem < Gem::TestCase
|
|
1355
1376
|
parts = [@userhome, '.gem', Gem.ruby_engine]
|
1356
1377
|
parts << RbConfig::CONFIG['ruby_version'] unless RbConfig::CONFIG['ruby_version'].empty?
|
1357
1378
|
|
1379
|
+
FileUtils.mkdir_p File.join(parts)
|
1380
|
+
|
1358
1381
|
assert_equal File.join(parts), Gem.user_dir
|
1359
1382
|
end
|
1360
1383
|
|
@@ -1378,9 +1401,9 @@ class TestGem < Gem::TestCase
|
|
1378
1401
|
r.gem "b", "= 1"
|
1379
1402
|
end
|
1380
1403
|
|
1381
|
-
activated = Gem::Specification.map {
|
1404
|
+
activated = Gem::Specification.map {|x| x.full_name }
|
1382
1405
|
|
1383
|
-
assert_equal %w
|
1406
|
+
assert_equal %w[a-1 b-1 c-2], activated.sort
|
1384
1407
|
end
|
1385
1408
|
|
1386
1409
|
def test_self_needs_picks_up_unresolved_deps
|
@@ -1400,7 +1423,7 @@ class TestGem < Gem::TestCase
|
|
1400
1423
|
require "d#{$$}"
|
1401
1424
|
end
|
1402
1425
|
|
1403
|
-
assert_equal %w
|
1426
|
+
assert_equal %w[a-1 b-1 c-2 d-1 e-1], loaded_spec_names
|
1404
1427
|
end
|
1405
1428
|
end
|
1406
1429
|
|
@@ -1470,7 +1493,6 @@ class TestGem < Gem::TestCase
|
|
1470
1493
|
install_gem foo2
|
1471
1494
|
end
|
1472
1495
|
|
1473
|
-
Gem.searcher = nil
|
1474
1496
|
Gem::Specification.reset
|
1475
1497
|
|
1476
1498
|
gem 'foo'
|
@@ -1500,8 +1522,8 @@ class TestGem < Gem::TestCase
|
|
1500
1522
|
def test_gem_path_ordering
|
1501
1523
|
refute_equal Gem.dir, Gem.user_dir
|
1502
1524
|
|
1503
|
-
write_file File.join(@tempdir, 'lib', "g.rb") {
|
1504
|
-
write_file File.join(@tempdir, 'lib', 'm.rb') {
|
1525
|
+
write_file File.join(@tempdir, 'lib', "g.rb") {|fp| fp.puts "" }
|
1526
|
+
write_file File.join(@tempdir, 'lib', 'm.rb') {|fp| fp.puts "" }
|
1505
1527
|
|
1506
1528
|
g = util_spec 'g', '1', nil, "lib/g.rb"
|
1507
1529
|
m = util_spec 'm', '1', nil, "lib/m.rb"
|
@@ -1515,7 +1537,7 @@ class TestGem < Gem::TestCase
|
|
1515
1537
|
|
1516
1538
|
tests = [
|
1517
1539
|
[:dir0, [ Gem.dir, Gem.user_dir], m0],
|
1518
|
-
[:dir1, [ Gem.user_dir, Gem.dir], m1]
|
1540
|
+
[:dir1, [ Gem.user_dir, Gem.dir], m1],
|
1519
1541
|
]
|
1520
1542
|
|
1521
1543
|
tests.each do |_name, _paths, expected|
|
@@ -1556,8 +1578,8 @@ class TestGem < Gem::TestCase
|
|
1556
1578
|
end
|
1557
1579
|
|
1558
1580
|
def test_gem_path_ordering_short
|
1559
|
-
write_file File.join(@tempdir, 'lib', "g.rb") {
|
1560
|
-
write_file File.join(@tempdir, 'lib', 'm.rb') {
|
1581
|
+
write_file File.join(@tempdir, 'lib', "g.rb") {|fp| fp.puts "" }
|
1582
|
+
write_file File.join(@tempdir, 'lib', 'm.rb') {|fp| fp.puts "" }
|
1561
1583
|
|
1562
1584
|
g = util_spec 'g', '1', nil, "lib/g.rb"
|
1563
1585
|
m = util_spec 'm', '1', nil, "lib/m.rb"
|
@@ -1593,7 +1615,7 @@ class TestGem < Gem::TestCase
|
|
1593
1615
|
|
1594
1616
|
Gem.use_gemdeps
|
1595
1617
|
|
1596
|
-
assert_equal add_bundler_full_name(%W
|
1618
|
+
assert_equal add_bundler_full_name(%W[a-1 b-1 c-1]), loaded_spec_names
|
1597
1619
|
end
|
1598
1620
|
|
1599
1621
|
def test_auto_activation_of_used_gemdeps_file
|
@@ -1614,11 +1636,10 @@ class TestGem < Gem::TestCase
|
|
1614
1636
|
ENV['RUBYGEMS_GEMDEPS'] = "-"
|
1615
1637
|
|
1616
1638
|
expected_specs = [a, b, util_spec("bundler", Bundler::VERSION), c].compact
|
1617
|
-
assert_equal expected_specs, Gem.use_gemdeps.sort_by {
|
1639
|
+
assert_equal expected_specs, Gem.use_gemdeps.sort_by {|s| s.name }
|
1618
1640
|
end
|
1619
1641
|
|
1620
|
-
|
1621
|
-
BUNDLER_LIB_PATH = File.expand_path $LOAD_PATH.find {|lp| File.file?(File.join(lp, "bundler.rb")) }.dup.tap(&Gem::UNTAINT)
|
1642
|
+
BUNDLER_LIB_PATH = File.expand_path $LOAD_PATH.find {|lp| File.file?(File.join(lp, "bundler.rb")) }
|
1622
1643
|
BUNDLER_FULL_NAME = "bundler-#{Bundler::VERSION}".freeze
|
1623
1644
|
|
1624
1645
|
def add_bundler_full_name(names)
|
@@ -1645,8 +1666,8 @@ class TestGem < Gem::TestCase
|
|
1645
1666
|
ENV['RUBYGEMS_GEMDEPS'] = "-"
|
1646
1667
|
|
1647
1668
|
path = File.join @tempdir, "gem.deps.rb"
|
1648
|
-
cmd = [
|
1649
|
-
"-I#{BUNDLER_LIB_PATH
|
1669
|
+
cmd = [*ruby_with_rubygems_in_load_path,
|
1670
|
+
"-I#{BUNDLER_LIB_PATH}"]
|
1650
1671
|
cmd << "-eputs Gem.loaded_specs.values.map(&:full_name).sort"
|
1651
1672
|
|
1652
1673
|
File.open path, "w" do |f|
|
@@ -1683,8 +1704,8 @@ class TestGem < Gem::TestCase
|
|
1683
1704
|
Dir.mkdir "sub1"
|
1684
1705
|
|
1685
1706
|
path = File.join @tempdir, "gem.deps.rb"
|
1686
|
-
cmd = [
|
1687
|
-
"-I#{BUNDLER_LIB_PATH
|
1707
|
+
cmd = [*ruby_with_rubygems_in_load_path, "-Csub1",
|
1708
|
+
"-I#{BUNDLER_LIB_PATH}"]
|
1688
1709
|
cmd << "-eputs Gem.loaded_specs.values.map(&:full_name).sort"
|
1689
1710
|
|
1690
1711
|
File.open path, "w" do |f|
|
@@ -1731,12 +1752,24 @@ class TestGem < Gem::TestCase
|
|
1731
1752
|
assert_nil Gem.find_unresolved_default_spec("README")
|
1732
1753
|
end
|
1733
1754
|
|
1755
|
+
def test_register_default_spec_old_style_with_folder_starting_with_lib
|
1756
|
+
Gem.clear_default_specs
|
1757
|
+
|
1758
|
+
old_style = Gem::Specification.new do |spec|
|
1759
|
+
spec.files = ["libexec/bundle", "foo.rb", "bar.rb"]
|
1760
|
+
end
|
1761
|
+
|
1762
|
+
Gem.register_default_spec old_style
|
1763
|
+
|
1764
|
+
assert_equal old_style, Gem.find_unresolved_default_spec("foo.rb")
|
1765
|
+
end
|
1766
|
+
|
1734
1767
|
def test_use_gemdeps
|
1735
1768
|
gem_deps_file = 'gem.deps.rb'.tap(&Gem::UNTAINT)
|
1736
1769
|
spec = util_spec 'a', 1
|
1737
1770
|
install_specs spec
|
1738
1771
|
|
1739
|
-
spec = Gem::Specification.find {
|
1772
|
+
spec = Gem::Specification.find {|s| s == spec }
|
1740
1773
|
refute spec.activated?
|
1741
1774
|
|
1742
1775
|
File.open gem_deps_file, 'w' do |io|
|
@@ -1747,7 +1780,7 @@ class TestGem < Gem::TestCase
|
|
1747
1780
|
|
1748
1781
|
Gem.use_gemdeps gem_deps_file
|
1749
1782
|
|
1750
|
-
assert_equal add_bundler_full_name(%W
|
1783
|
+
assert_equal add_bundler_full_name(%W[a-1]), loaded_spec_names
|
1751
1784
|
refute_nil Gem.gemdeps
|
1752
1785
|
end
|
1753
1786
|
|
@@ -1797,7 +1830,7 @@ class TestGem < Gem::TestCase
|
|
1797
1830
|
|
1798
1831
|
spec = util_spec 'a', 1
|
1799
1832
|
install_specs spec
|
1800
|
-
spec = Gem::Specification.find {
|
1833
|
+
spec = Gem::Specification.find {|s| s == spec }
|
1801
1834
|
|
1802
1835
|
refute spec.activated?
|
1803
1836
|
|
@@ -1807,7 +1840,7 @@ class TestGem < Gem::TestCase
|
|
1807
1840
|
|
1808
1841
|
Gem.use_gemdeps
|
1809
1842
|
|
1810
|
-
assert_equal add_bundler_full_name(%W
|
1843
|
+
assert_equal add_bundler_full_name(%W[a-1]), loaded_spec_names
|
1811
1844
|
ensure
|
1812
1845
|
ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
|
1813
1846
|
end
|
@@ -1875,7 +1908,7 @@ You may need to `gem install -g` to install missing gems
|
|
1875
1908
|
spec = util_spec 'a', 1
|
1876
1909
|
install_specs spec
|
1877
1910
|
|
1878
|
-
spec = Gem::Specification.find {
|
1911
|
+
spec = Gem::Specification.find {|s| s == spec }
|
1879
1912
|
refute spec.activated?
|
1880
1913
|
|
1881
1914
|
File.open 'x', 'w' do |io|
|
@@ -1884,7 +1917,7 @@ You may need to `gem install -g` to install missing gems
|
|
1884
1917
|
|
1885
1918
|
Gem.use_gemdeps
|
1886
1919
|
|
1887
|
-
assert_equal add_bundler_full_name(%W
|
1920
|
+
assert_equal add_bundler_full_name(%W[a-1]), loaded_spec_names
|
1888
1921
|
ensure
|
1889
1922
|
ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
|
1890
1923
|
end
|
@@ -1903,35 +1936,60 @@ You may need to `gem install -g` to install missing gems
|
|
1903
1936
|
assert platform_defaults.is_a? Hash
|
1904
1937
|
end
|
1905
1938
|
|
1906
|
-
|
1907
|
-
|
1908
|
-
|
1939
|
+
# Ensure that `Gem.source_date_epoch` is consistent even if
|
1940
|
+
# $SOURCE_DATE_EPOCH has not been set.
|
1941
|
+
def test_default_source_date_epoch_doesnt_change
|
1942
|
+
old_epoch = ENV['SOURCE_DATE_EPOCH']
|
1943
|
+
ENV['SOURCE_DATE_EPOCH'] = nil
|
1909
1944
|
|
1910
|
-
|
1945
|
+
# Unfortunately, there is no real way to test this aside from waiting
|
1946
|
+
# enough for `Time.now.to_i` to change -- which is a whole second.
|
1947
|
+
#
|
1948
|
+
# Fortunately, we only need to do this once.
|
1949
|
+
a = Gem.source_date_epoch
|
1950
|
+
sleep 1
|
1951
|
+
b = Gem.source_date_epoch
|
1952
|
+
assert_equal a, b
|
1911
1953
|
ensure
|
1912
|
-
|
1913
|
-
RbConfig::CONFIG['ruby_install_name'] = orig_RUBY_INSTALL_NAME
|
1914
|
-
else
|
1915
|
-
RbConfig::CONFIG.delete 'ruby_install_name'
|
1916
|
-
end
|
1954
|
+
ENV['SOURCE_DATE_EPOCH'] = old_epoch
|
1917
1955
|
end
|
1918
1956
|
|
1919
|
-
def
|
1920
|
-
|
1921
|
-
|
1957
|
+
def ruby_install_name(name)
|
1958
|
+
with_clean_path_to_ruby do
|
1959
|
+
orig_RUBY_INSTALL_NAME = RbConfig::CONFIG['ruby_install_name']
|
1960
|
+
RbConfig::CONFIG['ruby_install_name'] = name
|
1961
|
+
|
1962
|
+
begin
|
1922
1963
|
yield
|
1964
|
+
ensure
|
1965
|
+
if orig_RUBY_INSTALL_NAME
|
1966
|
+
RbConfig::CONFIG['ruby_install_name'] = orig_RUBY_INSTALL_NAME
|
1967
|
+
else
|
1968
|
+
RbConfig::CONFIG.delete 'ruby_install_name'
|
1969
|
+
end
|
1923
1970
|
end
|
1924
1971
|
end
|
1925
1972
|
end
|
1926
1973
|
|
1927
|
-
def
|
1928
|
-
|
1974
|
+
def with_rb_config_ruby(path)
|
1975
|
+
rb_config_singleton_class = class << RbConfig; self; end
|
1976
|
+
orig_path = RbConfig.ruby
|
1929
1977
|
|
1930
|
-
|
1978
|
+
redefine_method(rb_config_singleton_class, :ruby, path)
|
1931
1979
|
|
1932
1980
|
yield
|
1933
1981
|
ensure
|
1934
|
-
|
1982
|
+
redefine_method(rb_config_singleton_class, :ruby, orig_path)
|
1983
|
+
end
|
1984
|
+
|
1985
|
+
def redefine_method(base, method, new_result)
|
1986
|
+
if RUBY_VERSION >= "2.5"
|
1987
|
+
base.alias_method(method, method)
|
1988
|
+
base.define_method(method) { new_result }
|
1989
|
+
else
|
1990
|
+
base.send(:alias_method, method, method)
|
1991
|
+
base.send(:define_method, method) { new_result }
|
1992
|
+
end
|
1935
1993
|
end
|
1936
1994
|
|
1937
1995
|
def with_plugin(path)
|
@@ -1979,5 +2037,4 @@ You may need to `gem install -g` to install missing gems
|
|
1979
2037
|
def util_cache_dir
|
1980
2038
|
File.join Gem.dir, "cache"
|
1981
2039
|
end
|
1982
|
-
|
1983
2040
|
end
|