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
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
|
|
3
3
|
require 'rubygems/commands/list_command'
|
4
4
|
|
5
5
|
class TestGemCommandsListCommand < Gem::TestCase
|
6
|
-
|
7
6
|
def setup
|
8
7
|
super
|
9
8
|
|
@@ -30,5 +29,4 @@ class TestGemCommandsListCommand < Gem::TestCase
|
|
30
29
|
assert_equal "true\n", @ui.output
|
31
30
|
assert_equal '', @ui.error
|
32
31
|
end
|
33
|
-
|
34
32
|
end
|
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
|
|
3
3
|
require 'rubygems/commands/lock_command'
|
4
4
|
|
5
5
|
class TestGemCommandsLockCommand < Gem::TestCase
|
6
|
-
|
7
6
|
def setup
|
8
7
|
super
|
9
8
|
|
@@ -64,5 +63,4 @@ gem 'd', '= 1'
|
|
64
63
|
|
65
64
|
assert_equal 'Could not find gem c-1, try using the full name', e.message
|
66
65
|
end
|
67
|
-
|
68
66
|
end
|
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
|
|
3
3
|
require 'rubygems/commands/mirror_command'
|
4
4
|
|
5
5
|
class TestGemCommandsMirrorCommand < Gem::TestCase
|
6
|
-
|
7
6
|
def setup
|
8
7
|
super
|
9
8
|
|
@@ -15,7 +14,6 @@ class TestGemCommandsMirrorCommand < Gem::TestCase
|
|
15
14
|
@cmd.execute
|
16
15
|
end
|
17
16
|
|
18
|
-
assert_match %r
|
17
|
+
assert_match %r{Install the rubygems-mirror}i, @ui.error
|
19
18
|
end
|
20
|
-
|
21
19
|
end
|
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
|
|
3
3
|
require 'rubygems/commands/open_command'
|
4
4
|
|
5
5
|
class TestGemCommandsOpenCommand < Gem::TestCase
|
6
|
-
|
7
6
|
def setup
|
8
7
|
super
|
9
8
|
|
@@ -26,7 +25,7 @@ class TestGemCommandsOpenCommand < Gem::TestCase
|
|
26
25
|
|
27
26
|
gem 'foo', '1.0.0'
|
28
27
|
spec = gem 'foo', '1.0.1'
|
29
|
-
mock =
|
28
|
+
mock = Minitest::Mock.new
|
30
29
|
mock.expect(:call, true, [spec.full_gem_path])
|
31
30
|
|
32
31
|
Dir.stub(:chdir, mock) do
|
@@ -51,7 +50,7 @@ class TestGemCommandsOpenCommand < Gem::TestCase
|
|
51
50
|
end
|
52
51
|
end
|
53
52
|
|
54
|
-
assert_match %r
|
53
|
+
assert_match %r{Unable to find gem 'foo'}, @ui.output
|
55
54
|
assert_equal "", @ui.error
|
56
55
|
end
|
57
56
|
|
@@ -64,7 +63,7 @@ class TestGemCommandsOpenCommand < Gem::TestCase
|
|
64
63
|
end
|
65
64
|
end
|
66
65
|
|
67
|
-
assert_match %r
|
66
|
+
assert_match %r{Unable to find gem 'foo'}, @ui.output
|
68
67
|
assert_equal "", @ui.error
|
69
68
|
end
|
70
69
|
|
@@ -93,8 +92,7 @@ class TestGemCommandsOpenCommand < Gem::TestCase
|
|
93
92
|
end
|
94
93
|
end
|
95
94
|
|
96
|
-
assert_match %r
|
95
|
+
assert_match %r{'foo' is a default gem and can't be opened\.} , @ui.output
|
97
96
|
assert_equal "", @ui.error
|
98
97
|
end
|
99
|
-
|
100
98
|
end
|
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
|
|
3
3
|
require 'rubygems/commands/outdated_command'
|
4
4
|
|
5
5
|
class TestGemCommandsOutdatedCommand < Gem::TestCase
|
6
|
-
|
7
6
|
def setup
|
8
7
|
super
|
9
8
|
|
@@ -29,5 +28,4 @@ class TestGemCommandsOutdatedCommand < Gem::TestCase
|
|
29
28
|
assert_equal "foo (0.2 < 2.0)\n", @ui.output
|
30
29
|
assert_equal "", @ui.error
|
31
30
|
end
|
32
|
-
|
33
31
|
end
|
@@ -3,10 +3,11 @@ require 'rubygems/test_case'
|
|
3
3
|
require 'rubygems/commands/owner_command'
|
4
4
|
|
5
5
|
class TestGemCommandsOwnerCommand < Gem::TestCase
|
6
|
-
|
7
6
|
def setup
|
8
7
|
super
|
9
8
|
|
9
|
+
credential_setup
|
10
|
+
|
10
11
|
ENV["RUBYGEMS_HOST"] = nil
|
11
12
|
@stub_ui = Gem::MockGemUi.new
|
12
13
|
@stub_fetcher = Gem::FakeFetcher.new
|
@@ -17,6 +18,12 @@ class TestGemCommandsOwnerCommand < Gem::TestCase
|
|
17
18
|
@cmd = Gem::Commands::OwnerCommand.new
|
18
19
|
end
|
19
20
|
|
21
|
+
def teardown
|
22
|
+
credential_teardown
|
23
|
+
|
24
|
+
super
|
25
|
+
end
|
26
|
+
|
20
27
|
def test_show_owners
|
21
28
|
response = <<EOF
|
22
29
|
---
|
@@ -119,7 +126,7 @@ EOF
|
|
119
126
|
end
|
120
127
|
Gem.configuration.load_api_keys
|
121
128
|
|
122
|
-
@cmd.handle_options %w
|
129
|
+
@cmd.handle_options %w[-k other]
|
123
130
|
@cmd.show_owners('freewill')
|
124
131
|
|
125
132
|
assert_equal '701229f217cdf23b1344c7b4b54ca97', @stub_fetcher.last_request['Authorization']
|
@@ -177,7 +184,7 @@ EOF
|
|
177
184
|
end
|
178
185
|
Gem.configuration.load_api_keys
|
179
186
|
|
180
|
-
@cmd.handle_options %w
|
187
|
+
@cmd.handle_options %w[-k other]
|
181
188
|
@cmd.add_owners('freewill', ['user-new1@example.com'])
|
182
189
|
|
183
190
|
assert_equal '701229f217cdf23b1344c7b4b54ca97', @stub_fetcher.last_request['Authorization']
|
@@ -217,7 +224,7 @@ EOF
|
|
217
224
|
end
|
218
225
|
Gem.configuration.load_api_keys
|
219
226
|
|
220
|
-
@cmd.handle_options %w
|
227
|
+
@cmd.handle_options %w[-k other]
|
221
228
|
@cmd.remove_owners('freewill', ['user-remove1@example.com'])
|
222
229
|
|
223
230
|
assert_equal '701229f217cdf23b1344c7b4b54ca97', @stub_fetcher.last_request['Authorization']
|
@@ -240,7 +247,7 @@ EOF
|
|
240
247
|
|
241
248
|
@stub_fetcher.data["#{Gem.host}/api/v1/gems/freewill/owners"] = [
|
242
249
|
[response_fail, 401, 'Unauthorized'],
|
243
|
-
[response_success, 200, 'OK']
|
250
|
+
[response_success, 200, 'OK'],
|
244
251
|
]
|
245
252
|
|
246
253
|
@otp_ui = Gem::MockGemUi.new "111111\n"
|
@@ -269,4 +276,51 @@ EOF
|
|
269
276
|
assert_equal '111111', @stub_fetcher.last_request['OTP']
|
270
277
|
end
|
271
278
|
|
279
|
+
def test_remove_owners_unathorized_api_key
|
280
|
+
response_forbidden = "The API key doesn't have access"
|
281
|
+
response_success = "Owner removed successfully."
|
282
|
+
|
283
|
+
@stub_fetcher.data["#{Gem.host}/api/v1/gems/freewill/owners"] = [
|
284
|
+
[response_forbidden, 403, 'Forbidden'],
|
285
|
+
[response_success, 200, "OK"],
|
286
|
+
]
|
287
|
+
@stub_fetcher.data["#{Gem.host}/api/v1/api_key"] = ["", 200, "OK"]
|
288
|
+
@cmd.instance_variable_set :@scope, :remove_owner
|
289
|
+
|
290
|
+
@stub_ui = Gem::MockGemUi.new "some@mail.com\npass\n"
|
291
|
+
use_ui @stub_ui do
|
292
|
+
@cmd.remove_owners("freewill", ["some@example"])
|
293
|
+
end
|
294
|
+
|
295
|
+
access_notice = "The existing key doesn't have access of remove_owner on RubyGems.org. Please sign in to update access."
|
296
|
+
assert_match access_notice, @stub_ui.output
|
297
|
+
assert_match "Email:", @stub_ui.output
|
298
|
+
assert_match "Password:", @stub_ui.output
|
299
|
+
assert_match "Added remove_owner scope to the existing API key", @stub_ui.output
|
300
|
+
assert_match response_success, @stub_ui.output
|
301
|
+
end
|
302
|
+
|
303
|
+
def test_add_owners_unathorized_api_key
|
304
|
+
response_forbidden = "The API key doesn't have access"
|
305
|
+
response_success = "Owner added successfully."
|
306
|
+
|
307
|
+
@stub_fetcher.data["#{Gem.host}/api/v1/gems/freewill/owners"] = [
|
308
|
+
[response_forbidden, 403, 'Forbidden'],
|
309
|
+
[response_success, 200, "OK"],
|
310
|
+
]
|
311
|
+
@stub_fetcher.data["#{Gem.host}/api/v1/api_key"] = ["", 200, "OK"]
|
312
|
+
@cmd.instance_variable_set :@scope, :add_owner
|
313
|
+
|
314
|
+
@stub_ui = Gem::MockGemUi.new "some@mail.com\npass\n"
|
315
|
+
use_ui @stub_ui do
|
316
|
+
@cmd.add_owners("freewill", ["some@example"])
|
317
|
+
end
|
318
|
+
|
319
|
+
access_notice = "The existing key doesn't have access of add_owner on RubyGems.org. Please sign in to update access."
|
320
|
+
assert_match access_notice, @stub_ui.output
|
321
|
+
assert_match "Email:", @stub_ui.output
|
322
|
+
assert_match "Password:", @stub_ui.output
|
323
|
+
assert_match "Added add_owner scope to the existing API key", @stub_ui.output
|
324
|
+
assert_match response_success, @stub_ui.output
|
325
|
+
end
|
272
326
|
end
|
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
|
|
3
3
|
require 'rubygems/commands/pristine_command'
|
4
4
|
|
5
5
|
class TestGemCommandsPristineCommand < Gem::TestCase
|
6
|
-
|
7
6
|
def setup
|
8
7
|
super
|
9
8
|
common_installer_setup
|
@@ -160,11 +159,9 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|
160
159
|
|
161
160
|
ruby_exec = sprintf Gem.default_exec_format, 'ruby'
|
162
161
|
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
assert_match %r%\A#!\s*/usr/bin/env #{ruby_exec}%, File.read(gem_exec)
|
167
|
-
end
|
162
|
+
bin_env = win_platform? ? "" : %w[/usr/bin/env /bin/env].find {|f| File.executable?(f) } + " "
|
163
|
+
|
164
|
+
assert_match %r{\A#!\s*#{bin_env}#{ruby_exec}}, File.read(gem_exec)
|
168
165
|
end
|
169
166
|
|
170
167
|
def test_execute_extensions_explicit
|
@@ -215,7 +212,6 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|
215
212
|
io.write "# extconf.rb\nrequire 'mkmf'; create_makefile 'a'"
|
216
213
|
end
|
217
214
|
|
218
|
-
util_build_gem a
|
219
215
|
install_gem a
|
220
216
|
|
221
217
|
@cmd.options[:args] = %w[a]
|
@@ -249,7 +245,7 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|
249
245
|
RUBY
|
250
246
|
end
|
251
247
|
|
252
|
-
build_args = %w
|
248
|
+
build_args = %w[--with-awesome=true --sweet]
|
253
249
|
|
254
250
|
install_gem a, :build_args => build_args
|
255
251
|
|
@@ -458,7 +454,7 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|
458
454
|
end
|
459
455
|
end
|
460
456
|
|
461
|
-
assert_match %r
|
457
|
+
assert_match %r{at least one gem name}, e.message
|
462
458
|
end
|
463
459
|
|
464
460
|
def test_execute_only_executables
|
@@ -491,6 +487,42 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|
491
487
|
refute File.exist? gem_lib
|
492
488
|
end
|
493
489
|
|
490
|
+
def test_execute_only_plugins
|
491
|
+
a = util_spec 'a' do |s|
|
492
|
+
s.executables = %w[foo]
|
493
|
+
s.files = %w[bin/foo lib/a.rb lib/rubygems_plugin.rb]
|
494
|
+
end
|
495
|
+
write_file File.join(@tempdir, 'lib', 'a.rb') do |fp|
|
496
|
+
fp.puts "puts __FILE__"
|
497
|
+
end
|
498
|
+
write_file File.join(@tempdir, 'lib', 'rubygems_plugin.rb') do |fp|
|
499
|
+
fp.puts "puts __FILE__"
|
500
|
+
end
|
501
|
+
write_file File.join(@tempdir, 'bin', 'foo') do |fp|
|
502
|
+
fp.puts "#!/usr/bin/ruby"
|
503
|
+
end
|
504
|
+
|
505
|
+
install_gem a
|
506
|
+
|
507
|
+
gem_lib = File.join @gemhome, 'gems', a.full_name, 'lib', 'a.rb'
|
508
|
+
gem_plugin = File.join @gemhome, 'plugins', 'a_plugin.rb'
|
509
|
+
gem_exec = File.join @gemhome, 'bin', 'foo'
|
510
|
+
|
511
|
+
FileUtils.rm gem_exec
|
512
|
+
FileUtils.rm gem_plugin
|
513
|
+
FileUtils.rm gem_lib
|
514
|
+
|
515
|
+
@cmd.handle_options %w[--all --only-plugins]
|
516
|
+
|
517
|
+
use_ui @ui do
|
518
|
+
@cmd.execute
|
519
|
+
end
|
520
|
+
|
521
|
+
refute File.exist? gem_exec
|
522
|
+
assert File.exist? gem_plugin
|
523
|
+
refute File.exist? gem_lib
|
524
|
+
end
|
525
|
+
|
494
526
|
def test_execute_bindir
|
495
527
|
a = util_spec 'a' do |s|
|
496
528
|
s.name = "test_gem"
|
@@ -536,7 +568,7 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|
536
568
|
assert_equal([
|
537
569
|
"Restoring gems to pristine condition...",
|
538
570
|
"Cached gem for a-2 not found, attempting to fetch...",
|
539
|
-
"Skipped a-2, it was not found from cache and remote sources"
|
571
|
+
"Skipped a-2, it was not found from cache and remote sources",
|
540
572
|
], @ui.output.split("\n"))
|
541
573
|
|
542
574
|
assert_empty @ui.error
|
@@ -545,7 +577,7 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|
545
577
|
def test_execute_default_gem
|
546
578
|
default_gem_spec = new_default_spec("default", "2.0.0.0",
|
547
579
|
nil, "default/gem.rb")
|
548
|
-
|
580
|
+
install_default_gems(default_gem_spec)
|
549
581
|
|
550
582
|
@cmd.options[:args] = %w[default]
|
551
583
|
|
@@ -623,5 +655,4 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|
623
655
|
assert @cmd.options[:extensions]
|
624
656
|
assert @cmd.options[:extensions_set]
|
625
657
|
end
|
626
|
-
|
627
658
|
end
|
@@ -3,9 +3,11 @@ require 'rubygems/test_case'
|
|
3
3
|
require 'rubygems/commands/push_command'
|
4
4
|
|
5
5
|
class TestGemCommandsPushCommand < Gem::TestCase
|
6
|
-
|
7
6
|
def setup
|
8
7
|
super
|
8
|
+
|
9
|
+
credential_setup
|
10
|
+
|
9
11
|
ENV["RUBYGEMS_HOST"] = nil
|
10
12
|
Gem.host = Gem::DEFAULT_HOST
|
11
13
|
Gem.configuration.disable_default_gem_server = false
|
@@ -37,6 +39,8 @@ class TestGemCommandsPushCommand < Gem::TestCase
|
|
37
39
|
end
|
38
40
|
|
39
41
|
def teardown
|
42
|
+
credential_teardown
|
43
|
+
|
40
44
|
super
|
41
45
|
|
42
46
|
singleton_gem_class.class_eval do
|
@@ -148,7 +152,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
|
|
148
152
|
|
149
153
|
keys = {
|
150
154
|
:rubygems_api_key => 'KEY',
|
151
|
-
@host => @api_key
|
155
|
+
@host => @api_key,
|
152
156
|
}
|
153
157
|
|
154
158
|
FileUtils.mkdir_p File.dirname Gem.configuration.credentials_path
|
@@ -183,7 +187,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
|
|
183
187
|
|
184
188
|
keys = {
|
185
189
|
:rubygems_api_key => 'KEY',
|
186
|
-
@host => @api_key
|
190
|
+
@host => @api_key,
|
187
191
|
}
|
188
192
|
|
189
193
|
FileUtils.mkdir_p File.dirname Gem.configuration.credentials_path
|
@@ -246,7 +250,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
|
|
246
250
|
spec.metadata['allowed_push_host'] = "https://privategemserver.example"
|
247
251
|
end
|
248
252
|
|
249
|
-
response = %
|
253
|
+
response = %(ERROR: "#{@host}" is not allowed by the gemspec, which only allows "https://privategemserver.example")
|
250
254
|
|
251
255
|
assert_raises Gem::MockGemUi::TermError do
|
252
256
|
send_battery
|
@@ -267,7 +271,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
|
|
267
271
|
|
268
272
|
keys = {
|
269
273
|
:rubygems_api_key => 'KEY',
|
270
|
-
@host => @api_key
|
274
|
+
@host => @api_key,
|
271
275
|
}
|
272
276
|
|
273
277
|
FileUtils.mkdir_p File.dirname Gem.configuration.credentials_path
|
@@ -298,7 +302,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
|
|
298
302
|
api_key = "PRIVKEY"
|
299
303
|
|
300
304
|
keys = {
|
301
|
-
host => api_key
|
305
|
+
host => api_key,
|
302
306
|
}
|
303
307
|
|
304
308
|
FileUtils.mkdir_p File.dirname Gem.configuration.credentials_path
|
@@ -355,7 +359,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
|
|
355
359
|
end
|
356
360
|
Gem.configuration.load_api_keys
|
357
361
|
|
358
|
-
@cmd.handle_options %w
|
362
|
+
@cmd.handle_options %w[-k other]
|
359
363
|
@cmd.instance_variable_set :@host, @host
|
360
364
|
@cmd.send_gem(@path)
|
361
365
|
|
@@ -369,7 +373,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
|
|
369
373
|
|
370
374
|
@fetcher.data["#{Gem.host}/api/v1/gems"] = [
|
371
375
|
[response_fail, 401, 'Unauthorized'],
|
372
|
-
[response_success, 200, 'OK']
|
376
|
+
[response_success, 200, 'OK'],
|
373
377
|
]
|
374
378
|
|
375
379
|
@otp_ui = Gem::MockGemUi.new "111111\n"
|
@@ -400,10 +404,74 @@ class TestGemCommandsPushCommand < Gem::TestCase
|
|
400
404
|
assert_equal '111111', @fetcher.last_request['OTP']
|
401
405
|
end
|
402
406
|
|
407
|
+
def test_sending_gem_unathorized_api_key_with_mfa_enabled
|
408
|
+
response_mfa_enabled = "You have enabled multifactor authentication but your request doesn't have the correct OTP code. Please check it and retry."
|
409
|
+
response_forbidden = "The API key doesn't have access"
|
410
|
+
response_success = 'Successfully registered gem: freewill (1.0.0)'
|
411
|
+
|
412
|
+
@fetcher.data["#{@host}/api/v1/gems"] = [
|
413
|
+
[response_mfa_enabled, 401, 'Unauthorized'],
|
414
|
+
[response_forbidden, 403, 'Forbidden'],
|
415
|
+
[response_success, 200, "OK"],
|
416
|
+
]
|
417
|
+
|
418
|
+
@fetcher.data["#{@host}/api/v1/api_key"] = ["", 200, "OK"]
|
419
|
+
@cmd.instance_variable_set :@host, @host
|
420
|
+
@cmd.instance_variable_set :@scope, :push_rubygem
|
421
|
+
|
422
|
+
@ui = Gem::MockGemUi.new "11111\nsome@mail.com\npass\n"
|
423
|
+
use_ui @ui do
|
424
|
+
@cmd.send_gem(@path)
|
425
|
+
end
|
426
|
+
|
427
|
+
mfa_notice = "You have enabled multi-factor authentication. Please enter OTP code."
|
428
|
+
access_notice = "The existing key doesn't have access of push_rubygem on https://rubygems.example. Please sign in to update access."
|
429
|
+
assert_match mfa_notice, @ui.output
|
430
|
+
assert_match access_notice, @ui.output
|
431
|
+
assert_match "Email:", @ui.output
|
432
|
+
assert_match "Password:", @ui.output
|
433
|
+
assert_match "Added push_rubygem scope to the existing API key", @ui.output
|
434
|
+
assert_match response_success, @ui.output
|
435
|
+
assert_equal '11111', @fetcher.last_request['OTP']
|
436
|
+
end
|
437
|
+
|
438
|
+
def test_sending_gem_with_no_local_creds
|
439
|
+
Gem.configuration.rubygems_api_key = nil
|
440
|
+
|
441
|
+
response_mfa_enabled = "You have enabled multifactor authentication but your request doesn't have the correct OTP code. Please check it and retry."
|
442
|
+
response_success = 'Successfully registered gem: freewill (1.0.0)'
|
443
|
+
|
444
|
+
@fetcher.data["#{@host}/api/v1/gems"] = [
|
445
|
+
[response_success, 200, "OK"],
|
446
|
+
]
|
447
|
+
|
448
|
+
@fetcher.data["#{@host}/api/v1/api_key"] = [
|
449
|
+
[response_mfa_enabled, 401, 'Unauthorized'],
|
450
|
+
["", 200, "OK"],
|
451
|
+
]
|
452
|
+
|
453
|
+
@cmd.instance_variable_set :@scope, :push_rubygem
|
454
|
+
@cmd.options[:args] = [@path]
|
455
|
+
@cmd.options[:host] = @host
|
456
|
+
|
457
|
+
@ui = Gem::MockGemUi.new "some@mail.com\npass\n11111\n"
|
458
|
+
use_ui @ui do
|
459
|
+
@cmd.execute
|
460
|
+
end
|
461
|
+
|
462
|
+
mfa_notice = "You have enabled multi-factor authentication. Please enter OTP code."
|
463
|
+
assert_match mfa_notice, @ui.output
|
464
|
+
assert_match "Enter your https://rubygems.example credentials.", @ui.output
|
465
|
+
assert_match "Email:", @ui.output
|
466
|
+
assert_match "Password:", @ui.output
|
467
|
+
assert_match "Signed in with API key:", @ui.output
|
468
|
+
assert_match response_success, @ui.output
|
469
|
+
assert_equal '11111', @fetcher.last_request['OTP']
|
470
|
+
end
|
471
|
+
|
403
472
|
private
|
404
473
|
|
405
474
|
def singleton_gem_class
|
406
475
|
class << Gem; self; end
|
407
476
|
end
|
408
|
-
|
409
477
|
end
|