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
@@ -4,10 +4,11 @@ require 'rubygems/commands/signin_command'
|
|
4
4
|
require 'rubygems/installer'
|
5
5
|
|
6
6
|
class TestGemCommandsSigninCommand < Gem::TestCase
|
7
|
-
|
8
7
|
def setup
|
9
8
|
super
|
10
9
|
|
10
|
+
credential_setup
|
11
|
+
|
11
12
|
Gem.configuration.rubygems_api_key = nil
|
12
13
|
Gem.configuration.api_keys.clear
|
13
14
|
|
@@ -15,13 +16,13 @@ class TestGemCommandsSigninCommand < Gem::TestCase
|
|
15
16
|
end
|
16
17
|
|
17
18
|
def teardown
|
18
|
-
|
19
|
-
|
19
|
+
credential_teardown
|
20
|
+
|
20
21
|
super
|
21
22
|
end
|
22
23
|
|
23
24
|
def test_execute_when_not_already_signed_in
|
24
|
-
sign_in_ui = util_capture
|
25
|
+
sign_in_ui = util_capture { @cmd.execute }
|
25
26
|
assert_match %r{Signed in.}, sign_in_ui.output
|
26
27
|
end
|
27
28
|
|
@@ -64,7 +65,7 @@ class TestGemCommandsSigninCommand < Gem::TestCase
|
|
64
65
|
end
|
65
66
|
|
66
67
|
def test_execute_with_valid_creds_set_for_default_host
|
67
|
-
util_capture {@cmd.execute}
|
68
|
+
util_capture { @cmd.execute }
|
68
69
|
|
69
70
|
api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
|
70
71
|
credentials = YAML.load_file Gem.configuration.credentials_path
|
@@ -72,14 +73,38 @@ class TestGemCommandsSigninCommand < Gem::TestCase
|
|
72
73
|
assert_equal api_key, credentials[:rubygems_api_key]
|
73
74
|
end
|
74
75
|
|
76
|
+
def test_excute_with_key_name_and_scope
|
77
|
+
email = 'you@example.com'
|
78
|
+
password = 'secret'
|
79
|
+
api_key = '1234'
|
80
|
+
fetcher = Gem::RemoteFetcher.fetcher
|
81
|
+
|
82
|
+
key_name_ui = Gem::MockGemUi.new "#{email}\n#{password}\ntest-key\n\ny\n\n\n\n\n\n"
|
83
|
+
util_capture(key_name_ui, nil, api_key, fetcher) { @cmd.execute }
|
84
|
+
|
85
|
+
user = ENV["USER"] || ENV["USERNAME"]
|
86
|
+
|
87
|
+
assert_match "API Key name [#{Socket.gethostname}-#{user}", key_name_ui.output
|
88
|
+
assert_match "index_rubygems [y/N]", key_name_ui.output
|
89
|
+
assert_match "push_rubygem [y/N]", key_name_ui.output
|
90
|
+
assert_match "yank_rubygem [y/N]", key_name_ui.output
|
91
|
+
assert_match "add_owner [y/N]", key_name_ui.output
|
92
|
+
assert_match "remove_owner [y/N]", key_name_ui.output
|
93
|
+
assert_match "access_webhooks [y/N]", key_name_ui.output
|
94
|
+
assert_match "show_dashboard [y/N]", key_name_ui.output
|
95
|
+
assert_equal "name=test-key&push_rubygem=true", fetcher.last_request.body
|
96
|
+
|
97
|
+
credentials = YAML.load_file Gem.configuration.credentials_path
|
98
|
+
assert_equal api_key, credentials[:rubygems_api_key]
|
99
|
+
end
|
100
|
+
|
75
101
|
# Utility method to capture IO/UI within the block passed
|
76
102
|
|
77
|
-
def util_capture(ui_stub = nil, host = nil, api_key = nil)
|
103
|
+
def util_capture(ui_stub = nil, host = nil, api_key = nil, fetcher = Gem::FakeFetcher.new)
|
78
104
|
api_key ||= 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
|
79
105
|
response = [api_key, 200, 'OK']
|
80
106
|
email = 'you@example.com'
|
81
107
|
password = 'secret'
|
82
|
-
fetcher = Gem::FakeFetcher.new
|
83
108
|
|
84
109
|
# Set the expected response for the Web-API supplied
|
85
110
|
ENV['RUBYGEMS_HOST'] = host || Gem::DEFAULT_HOST
|
@@ -87,7 +112,7 @@ class TestGemCommandsSigninCommand < Gem::TestCase
|
|
87
112
|
fetcher.data[data_key] = response
|
88
113
|
Gem::RemoteFetcher.fetcher = fetcher
|
89
114
|
|
90
|
-
sign_in_ui = ui_stub || Gem::MockGemUi.new("#{email}\n#{password}\n")
|
115
|
+
sign_in_ui = ui_stub || Gem::MockGemUi.new("#{email}\n#{password}\n\n\n\n\n\n\n\n\n")
|
91
116
|
|
92
117
|
use_ui sign_in_ui do
|
93
118
|
yield
|
@@ -95,5 +120,4 @@ class TestGemCommandsSigninCommand < Gem::TestCase
|
|
95
120
|
|
96
121
|
sign_in_ui
|
97
122
|
end
|
98
|
-
|
99
123
|
end
|
@@ -5,17 +5,11 @@ require 'rubygems/commands/signout_command'
|
|
5
5
|
require 'rubygems/installer'
|
6
6
|
|
7
7
|
class TestGemCommandsSignoutCommand < Gem::TestCase
|
8
|
-
|
9
8
|
def setup
|
10
9
|
super
|
11
10
|
@cmd = Gem::Commands::SignoutCommand.new
|
12
11
|
end
|
13
12
|
|
14
|
-
def teardown
|
15
|
-
super
|
16
|
-
File.delete Gem.configuration.credentials_path if File.exist?(Gem.configuration.credentials_path)
|
17
|
-
end
|
18
|
-
|
19
13
|
def test_execute_when_user_is_signed_in
|
20
14
|
FileUtils.mkdir_p File.dirname(Gem.configuration.credentials_path)
|
21
15
|
FileUtils::touch Gem.configuration.credentials_path
|
@@ -33,5 +27,4 @@ class TestGemCommandsSignoutCommand < Gem::TestCase
|
|
33
27
|
|
34
28
|
assert_match %r{You are not currently signed in}, @sign_out_ui.error
|
35
29
|
end
|
36
|
-
|
37
30
|
end
|
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
|
|
3
3
|
require 'rubygems/commands/sources_command'
|
4
4
|
|
5
5
|
class TestGemCommandsSourcesCommand < Gem::TestCase
|
6
|
-
|
7
6
|
def setup
|
8
7
|
super
|
9
8
|
|
@@ -108,6 +107,36 @@ class TestGemCommandsSourcesCommand < Gem::TestCase
|
|
108
107
|
assert_empty ui.error
|
109
108
|
end
|
110
109
|
|
110
|
+
def test_execute_add_allow_typo_squatting_source_forced
|
111
|
+
rubygems_org = "https://rubyems.org"
|
112
|
+
|
113
|
+
spec_fetcher do |fetcher|
|
114
|
+
fetcher.spec("a", 1)
|
115
|
+
end
|
116
|
+
|
117
|
+
specs = Gem::Specification.map do |spec|
|
118
|
+
[spec.name, spec.version, spec.original_platform]
|
119
|
+
end
|
120
|
+
|
121
|
+
specs_dump_gz = StringIO.new
|
122
|
+
Zlib::GzipWriter.wrap(specs_dump_gz) do |io|
|
123
|
+
Marshal.dump(specs, io)
|
124
|
+
end
|
125
|
+
|
126
|
+
@fetcher.data["#{rubygems_org}/specs.#{@marshal_version}.gz"] = specs_dump_gz.string
|
127
|
+
@cmd.handle_options %W[--force --add #{rubygems_org}]
|
128
|
+
|
129
|
+
@cmd.execute
|
130
|
+
|
131
|
+
expected = "https://rubyems.org added to sources\n"
|
132
|
+
assert_equal expected, ui.output
|
133
|
+
|
134
|
+
source = Gem::Source.new(rubygems_org)
|
135
|
+
assert Gem.sources.include?(source)
|
136
|
+
|
137
|
+
assert_empty ui.error
|
138
|
+
end
|
139
|
+
|
111
140
|
def test_execute_add_deny_typo_squatting_source
|
112
141
|
rubygems_org = "https://rubyems.org"
|
113
142
|
|
@@ -247,7 +276,7 @@ source http://gems.example.com/ already present in the cache
|
|
247
276
|
end
|
248
277
|
|
249
278
|
def test_execute_add_http_rubygems_org
|
250
|
-
http_rubygems_org = 'http://rubygems.org'
|
279
|
+
http_rubygems_org = 'http://rubygems.org/'
|
251
280
|
|
252
281
|
spec_fetcher do |fetcher|
|
253
282
|
fetcher.spec 'a', 1
|
@@ -284,6 +313,74 @@ source http://gems.example.com/ already present in the cache
|
|
284
313
|
assert_empty @ui.error
|
285
314
|
end
|
286
315
|
|
316
|
+
def test_execute_add_http_rubygems_org_forced
|
317
|
+
rubygems_org = "http://rubygems.org"
|
318
|
+
|
319
|
+
spec_fetcher do |fetcher|
|
320
|
+
fetcher.spec("a", 1)
|
321
|
+
end
|
322
|
+
|
323
|
+
specs = Gem::Specification.map do |spec|
|
324
|
+
[spec.name, spec.version, spec.original_platform]
|
325
|
+
end
|
326
|
+
|
327
|
+
specs_dump_gz = StringIO.new
|
328
|
+
Zlib::GzipWriter.wrap(specs_dump_gz) do |io|
|
329
|
+
Marshal.dump(specs, io)
|
330
|
+
end
|
331
|
+
|
332
|
+
@fetcher.data["#{rubygems_org}/specs.#{@marshal_version}.gz"] = specs_dump_gz.string
|
333
|
+
@cmd.handle_options %W[--force --add #{rubygems_org}]
|
334
|
+
|
335
|
+
@cmd.execute
|
336
|
+
|
337
|
+
expected = "http://rubygems.org added to sources\n"
|
338
|
+
assert_equal expected, ui.output
|
339
|
+
|
340
|
+
source = Gem::Source.new(rubygems_org)
|
341
|
+
assert Gem.sources.include?(source)
|
342
|
+
|
343
|
+
assert_empty ui.error
|
344
|
+
end
|
345
|
+
|
346
|
+
def test_execute_add_https_rubygems_org
|
347
|
+
https_rubygems_org = 'https://rubygems.org/'
|
348
|
+
|
349
|
+
spec_fetcher do |fetcher|
|
350
|
+
fetcher.spec 'a', 1
|
351
|
+
end
|
352
|
+
|
353
|
+
specs = Gem::Specification.map do |spec|
|
354
|
+
[spec.name, spec.version, spec.original_platform]
|
355
|
+
end
|
356
|
+
|
357
|
+
specs_dump_gz = StringIO.new
|
358
|
+
Zlib::GzipWriter.wrap specs_dump_gz do |io|
|
359
|
+
Marshal.dump specs, io
|
360
|
+
end
|
361
|
+
|
362
|
+
@fetcher.data["#{https_rubygems_org}/specs.#{@marshal_version}.gz"] =
|
363
|
+
specs_dump_gz.string
|
364
|
+
|
365
|
+
@cmd.handle_options %W[--add #{https_rubygems_org}]
|
366
|
+
|
367
|
+
ui = Gem::MockGemUi.new "n"
|
368
|
+
|
369
|
+
use_ui ui do
|
370
|
+
assert_raises Gem::MockGemUi::TermError do
|
371
|
+
@cmd.execute
|
372
|
+
end
|
373
|
+
end
|
374
|
+
|
375
|
+
assert_equal [@gem_repo], Gem.sources
|
376
|
+
|
377
|
+
expected = <<-EXPECTED
|
378
|
+
EXPECTED
|
379
|
+
|
380
|
+
assert_equal expected, @ui.output
|
381
|
+
assert_empty @ui.error
|
382
|
+
end
|
383
|
+
|
287
384
|
def test_execute_add_bad_uri
|
288
385
|
@cmd.handle_options %w[--add beta-gems.example.com]
|
289
386
|
|
@@ -384,5 +481,4 @@ beta-gems.example.com is not a URI
|
|
384
481
|
assert_equal "source cache successfully updated\n", @ui.output
|
385
482
|
assert_equal '', @ui.error
|
386
483
|
end
|
387
|
-
|
388
484
|
end
|
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
|
|
3
3
|
require 'rubygems/commands/specification_command'
|
4
4
|
|
5
5
|
class TestGemCommandsSpecificationCommand < Gem::TestCase
|
6
|
-
|
7
6
|
def setup
|
8
7
|
super
|
9
8
|
|
@@ -21,8 +20,8 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
|
|
21
20
|
@cmd.execute
|
22
21
|
end
|
23
22
|
|
24
|
-
assert_match %r
|
25
|
-
assert_match %r
|
23
|
+
assert_match %r{Gem::Specification}, @ui.output
|
24
|
+
assert_match %r{name: foo}, @ui.output
|
26
25
|
assert_equal '', @ui.error
|
27
26
|
end
|
28
27
|
|
@@ -37,10 +36,10 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
|
|
37
36
|
@cmd.execute
|
38
37
|
end
|
39
38
|
|
40
|
-
assert_match %r
|
41
|
-
assert_match %r
|
42
|
-
assert_match %r
|
43
|
-
assert_match %r
|
39
|
+
assert_match %r{Gem::Specification}, @ui.output
|
40
|
+
assert_match %r{name: foo}, @ui.output
|
41
|
+
assert_match %r{version: 0.0.1}, @ui.output
|
42
|
+
assert_match %r{version: 0.0.2}, @ui.output
|
44
43
|
assert_equal '', @ui.error
|
45
44
|
end
|
46
45
|
|
@@ -99,8 +98,8 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
|
|
99
98
|
@cmd.execute
|
100
99
|
end
|
101
100
|
|
102
|
-
assert_match %r
|
103
|
-
assert_match %r
|
101
|
+
assert_match %r{Gem::Specification}, @ui.output
|
102
|
+
assert_match %r{name: foo}, @ui.output
|
104
103
|
assert_equal '', @ui.error
|
105
104
|
end
|
106
105
|
|
@@ -131,8 +130,8 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
|
|
131
130
|
@cmd.execute
|
132
131
|
end
|
133
132
|
|
134
|
-
assert_match %r
|
135
|
-
assert_match %r
|
133
|
+
assert_match %r{Gem::Specification}, @ui.output
|
134
|
+
assert_match %r{name: foo}, @ui.output
|
136
135
|
assert_equal '', @ui.error
|
137
136
|
end
|
138
137
|
|
@@ -164,8 +163,8 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
|
|
164
163
|
@cmd.execute
|
165
164
|
end
|
166
165
|
|
167
|
-
assert_match %r
|
168
|
-
assert_match %r
|
166
|
+
assert_match %r{\A--- !ruby/object:Gem::Specification}, @ui.output
|
167
|
+
assert_match %r{name: foo}, @ui.output
|
169
168
|
end
|
170
169
|
|
171
170
|
def test_execute_remote_with_version
|
@@ -187,6 +186,34 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
|
|
187
186
|
assert_equal Gem::Version.new("1"), spec.version
|
188
187
|
end
|
189
188
|
|
189
|
+
def test_execute_remote_with_version_and_platform
|
190
|
+
original_platforms = Gem.platforms.dup
|
191
|
+
|
192
|
+
spec_fetcher do |fetcher|
|
193
|
+
fetcher.spec 'foo', "1"
|
194
|
+
fetcher.spec 'foo', "1" do |s|
|
195
|
+
s.platform = 'x86_64-linux'
|
196
|
+
end
|
197
|
+
end
|
198
|
+
|
199
|
+
@cmd.options[:args] = %w[foo]
|
200
|
+
@cmd.options[:version] = "1"
|
201
|
+
@cmd.options[:domain] = :remote
|
202
|
+
@cmd.options[:added_platform] = true
|
203
|
+
Gem.platforms = [Gem::Platform::RUBY, Gem::Platform.new("x86_64-linux")]
|
204
|
+
|
205
|
+
use_ui @ui do
|
206
|
+
@cmd.execute
|
207
|
+
end
|
208
|
+
|
209
|
+
spec = Gem::Specification.from_yaml @ui.output
|
210
|
+
|
211
|
+
assert_equal Gem::Version.new("1"), spec.version
|
212
|
+
assert_equal Gem::Platform.new("x86_64-linux"), spec.platform
|
213
|
+
ensure
|
214
|
+
Gem.platforms = original_platforms
|
215
|
+
end
|
216
|
+
|
190
217
|
def test_execute_remote_without_prerelease
|
191
218
|
spec_fetcher do |fetcher|
|
192
219
|
fetcher.spec 'foo', '2.0.0'
|
@@ -200,8 +227,8 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
|
|
200
227
|
@cmd.execute
|
201
228
|
end
|
202
229
|
|
203
|
-
assert_match %r
|
204
|
-
assert_match %r
|
230
|
+
assert_match %r{\A--- !ruby/object:Gem::Specification}, @ui.output
|
231
|
+
assert_match %r{name: foo}, @ui.output
|
205
232
|
|
206
233
|
spec = YAML.load @ui.output
|
207
234
|
|
@@ -222,8 +249,8 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
|
|
222
249
|
@cmd.execute
|
223
250
|
end
|
224
251
|
|
225
|
-
assert_match %r
|
226
|
-
assert_match %r
|
252
|
+
assert_match %r{\A--- !ruby/object:Gem::Specification}, @ui.output
|
253
|
+
assert_match %r{name: foo}, @ui.output
|
227
254
|
|
228
255
|
spec = YAML.load @ui.output
|
229
256
|
|
@@ -242,9 +269,8 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
|
|
242
269
|
@cmd.execute
|
243
270
|
end
|
244
271
|
|
245
|
-
assert_match %r
|
246
|
-
assert_match %r
|
272
|
+
assert_match %r{Gem::Specification.new}, @ui.output
|
273
|
+
assert_match %r{s.name = "foo"}, @ui.output
|
247
274
|
assert_equal '', @ui.error
|
248
275
|
end
|
249
|
-
|
250
276
|
end
|
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
|
|
3
3
|
require 'rubygems/commands/stale_command'
|
4
4
|
|
5
5
|
class TestGemCommandsStaleCommand < Gem::TestCase
|
6
|
-
|
7
6
|
def setup
|
8
7
|
super
|
9
8
|
@stub_ui = Gem::MockGemUi.new
|
@@ -40,5 +39,4 @@ class TestGemCommandsStaleCommand < Gem::TestCase
|
|
40
39
|
assert_equal("#{foo_bar.name}-#{foo_bar.version}", lines[0].split.first)
|
41
40
|
assert_equal("#{bar_baz.name}-#{bar_baz.version}", lines[1].split.first)
|
42
41
|
end
|
43
|
-
|
44
42
|
end
|
@@ -3,7 +3,6 @@ require 'rubygems/installer_test_case'
|
|
3
3
|
require 'rubygems/commands/uninstall_command'
|
4
4
|
|
5
5
|
class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
|
6
|
-
|
7
6
|
def setup
|
8
7
|
super
|
9
8
|
@cmd = Gem::Commands::UninstallCommand.new
|
@@ -361,6 +360,7 @@ class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
|
|
361
360
|
end
|
362
361
|
|
363
362
|
assert_equal %w[default-1], Gem::Specification.all_names.sort
|
363
|
+
assert_equal "INFO: Uninstalled all gems in #{@gemhome}", @ui.output.split("\n").last
|
364
364
|
end
|
365
365
|
|
366
366
|
def test_execute_outside_gem_home
|
@@ -486,7 +486,7 @@ WARNING: Use your OS package manager to uninstall vendor gems
|
|
486
486
|
end
|
487
487
|
|
488
488
|
assert_empty @ui.output
|
489
|
-
assert_match %r
|
489
|
+
assert_match %r{Error: unable to successfully uninstall '#{@spec.name}'}, @ui.error
|
490
490
|
end
|
491
491
|
|
492
492
|
private
|
@@ -501,5 +501,4 @@ WARNING: Use your OS package manager to uninstall vendor gems
|
|
501
501
|
end
|
502
502
|
end
|
503
503
|
end
|
504
|
-
|
505
504
|
end
|
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
|
|
3
3
|
require 'rubygems/commands/unpack_command'
|
4
4
|
|
5
5
|
class TestGemCommandsUnpackCommand < Gem::TestCase
|
6
|
-
|
7
6
|
def setup
|
8
7
|
super
|
9
8
|
|
@@ -221,5 +220,4 @@ class TestGemCommandsUnpackCommand < Gem::TestCase
|
|
221
220
|
|
222
221
|
assert @cmd.options[:spec]
|
223
222
|
end
|
224
|
-
|
225
223
|
end
|
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
|
|
3
3
|
require 'rubygems/commands/update_command'
|
4
4
|
|
5
5
|
class TestGemCommandsUpdateCommand < Gem::TestCase
|
6
|
-
|
7
6
|
def setup
|
8
7
|
super
|
9
8
|
common_installer_setup
|
@@ -159,6 +158,64 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
|
|
159
158
|
assert_empty out
|
160
159
|
end
|
161
160
|
|
161
|
+
def test_execute_system_specific_older_than_minimum_supported_rubygems
|
162
|
+
spec_fetcher do |fetcher|
|
163
|
+
fetcher.download 'rubygems-update', "2.5.1" do |s|
|
164
|
+
s.files = %w[setup.rb]
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
@cmd.options[:args] = []
|
169
|
+
@cmd.options[:system] = "2.5.1"
|
170
|
+
|
171
|
+
assert_raises Gem::MockGemUi::TermError do
|
172
|
+
use_ui @ui do
|
173
|
+
@cmd.execute
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
assert_empty @ui.output
|
178
|
+
assert_equal "ERROR: rubygems 2.5.1 is not supported. The oldest supported version is 2.5.2\n", @ui.error
|
179
|
+
end
|
180
|
+
|
181
|
+
def test_execute_system_specific_older_than_3_2_removes_plugins_dir
|
182
|
+
spec_fetcher do |fetcher|
|
183
|
+
fetcher.download 'rubygems-update', 3.1 do |s|
|
184
|
+
s.files = %w[setup.rb]
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
@cmd.options[:args] = []
|
189
|
+
@cmd.options[:system] = "3.1"
|
190
|
+
|
191
|
+
FileUtils.mkdir_p Gem.plugindir
|
192
|
+
write_file File.join(Gem.plugindir, 'a_plugin.rb')
|
193
|
+
|
194
|
+
@cmd.execute
|
195
|
+
|
196
|
+
refute_path_exists Gem.plugindir, "Plugins folder not removed when updating rubygems to pre-3.2"
|
197
|
+
end
|
198
|
+
|
199
|
+
def test_execute_system_specific_newer_than_or_equal_to_3_2_leaves_plugins_dir_alone
|
200
|
+
spec_fetcher do |fetcher|
|
201
|
+
fetcher.download 'rubygems-update', "3.2.a" do |s|
|
202
|
+
s.files = %w[setup.rb]
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
@cmd.options[:args] = []
|
207
|
+
@cmd.options[:system] = "3.2.a"
|
208
|
+
|
209
|
+
FileUtils.mkdir_p Gem.plugindir
|
210
|
+
plugin_file = File.join(Gem.plugindir, 'a_plugin.rb')
|
211
|
+
write_file plugin_file
|
212
|
+
|
213
|
+
@cmd.execute
|
214
|
+
|
215
|
+
assert_path_exists Gem.plugindir, "Plugin folder removed when updating rubygems to post-3.2"
|
216
|
+
assert_path_exists plugin_file, "Plugin removed when updating rubygems to post-3.2"
|
217
|
+
end
|
218
|
+
|
162
219
|
def test_execute_system_specifically_to_latest_version
|
163
220
|
spec_fetcher do |fetcher|
|
164
221
|
fetcher.download 'rubygems-update', 8 do |s|
|
@@ -200,6 +257,53 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
|
|
200
257
|
@ui.error
|
201
258
|
end
|
202
259
|
|
260
|
+
def test_execute_system_with_disabled_update
|
261
|
+
old_disable_system_update_message = Gem.disable_system_update_message
|
262
|
+
Gem.disable_system_update_message = "Please use package manager instead."
|
263
|
+
|
264
|
+
@cmd.options[:args] = []
|
265
|
+
@cmd.options[:system] = true
|
266
|
+
|
267
|
+
assert_raises Gem::MockGemUi::TermError do
|
268
|
+
use_ui @ui do
|
269
|
+
@cmd.execute
|
270
|
+
end
|
271
|
+
end
|
272
|
+
|
273
|
+
assert_empty @ui.output
|
274
|
+
assert_equal "ERROR: Please use package manager instead.\n", @ui.error
|
275
|
+
ensure
|
276
|
+
Gem.disable_system_update_message = old_disable_system_update_message
|
277
|
+
end
|
278
|
+
|
279
|
+
# The other style of `gem update --system` tests don't actually run
|
280
|
+
# setup.rb, so we just check that setup.rb gets the `--silent` flag.
|
281
|
+
def test_execute_system_silent_passed_to_setuprb
|
282
|
+
@cmd.options[:args] = []
|
283
|
+
@cmd.options[:system] = true
|
284
|
+
@cmd.options[:silent] = true
|
285
|
+
|
286
|
+
assert_equal true, @cmd.update_rubygems_arguments.include?('--silent')
|
287
|
+
end
|
288
|
+
|
289
|
+
def test_execute_system_silent
|
290
|
+
spec_fetcher do |fetcher|
|
291
|
+
fetcher.download 'rubygems-update', 9 do |s|
|
292
|
+
s.files = %w[setup.rb]
|
293
|
+
end
|
294
|
+
end
|
295
|
+
|
296
|
+
@cmd.options[:args] = []
|
297
|
+
@cmd.options[:system] = true
|
298
|
+
@cmd.options[:silent] = true
|
299
|
+
|
300
|
+
use_ui @ui do
|
301
|
+
@cmd.execute
|
302
|
+
end
|
303
|
+
|
304
|
+
assert_empty @ui.output
|
305
|
+
end
|
306
|
+
|
203
307
|
# before:
|
204
308
|
# a1 -> c1.2
|
205
309
|
# after:
|
@@ -359,10 +463,10 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
|
|
359
463
|
end
|
360
464
|
|
361
465
|
def test_execute_user_install
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
466
|
+
a = util_spec "a", 1
|
467
|
+
b = util_spec "b", 1
|
468
|
+
install_gem_user(a)
|
469
|
+
install_gem(b)
|
366
470
|
|
367
471
|
@cmd.handle_options %w[--user-install]
|
368
472
|
|
@@ -373,7 +477,13 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
|
|
373
477
|
installer = @cmd.installer
|
374
478
|
user_install = installer.instance_variable_get :@user_install
|
375
479
|
|
376
|
-
assert user_install,
|
480
|
+
assert user_install, "user_install must be set on the installer"
|
481
|
+
|
482
|
+
out = @ui.output.split "\n"
|
483
|
+
assert_equal "Updating installed gems", out.shift
|
484
|
+
assert_equal "Updating a", out.shift
|
485
|
+
assert_equal "Gems updated: a", out.shift
|
486
|
+
assert_empty out
|
377
487
|
end
|
378
488
|
|
379
489
|
def test_fetch_remote_gems
|
@@ -584,5 +694,4 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
|
|
584
694
|
assert_equal " a-2", out.shift
|
585
695
|
assert_empty out
|
586
696
|
end
|
587
|
-
|
588
697
|
end
|