rubygems-update 3.0.6 → 3.2.14
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} +1100 -436
- data/CODE_OF_CONDUCT.md +55 -19
- data/CONTRIBUTING.md +37 -10
- data/MAINTAINERS.txt +1 -6
- data/Manifest.txt +104 -64
- data/POLICIES.md +6 -12
- data/README.md +6 -6
- data/Rakefile +121 -111
- data/bin/gem +0 -6
- data/bin/update_rubygems +2 -2
- data/bundler/CHANGELOG.md +1788 -1251
- data/bundler/LICENSE.md +18 -19
- data/bundler/README.md +9 -10
- data/bundler/UPGRADING.md +215 -0
- data/bundler/bundler.gemspec +9 -26
- data/bundler/exe/bundle +22 -3
- data/bundler/lib/bundler.rb +233 -94
- data/bundler/lib/bundler/build_metadata.rb +5 -13
- data/bundler/lib/bundler/capistrano.rb +4 -4
- data/bundler/lib/bundler/cli.rb +221 -148
- data/bundler/lib/bundler/cli/add.rb +28 -16
- data/bundler/lib/bundler/cli/binstubs.rb +6 -2
- data/bundler/lib/bundler/cli/cache.rb +24 -17
- data/bundler/lib/bundler/cli/clean.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +25 -12
- data/bundler/lib/bundler/cli/config.rb +161 -86
- data/bundler/lib/bundler/cli/console.rb +1 -1
- data/bundler/lib/bundler/cli/doctor.rb +5 -5
- data/bundler/lib/bundler/cli/exec.rb +8 -20
- data/bundler/lib/bundler/cli/fund.rb +36 -0
- data/bundler/lib/bundler/cli/gem.rb +125 -32
- data/bundler/lib/bundler/cli/info.rb +29 -6
- 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 +27 -23
- data/bundler/lib/bundler/cli/issue.rb +5 -5
- data/bundler/lib/bundler/cli/list.rb +12 -10
- data/bundler/lib/bundler/cli/open.rb +10 -6
- data/bundler/lib/bundler/cli/outdated.rb +134 -109
- data/bundler/lib/bundler/cli/plugin.rb +19 -2
- data/bundler/lib/bundler/cli/pristine.rb +6 -1
- data/bundler/lib/bundler/cli/show.rb +2 -2
- data/bundler/lib/bundler/cli/update.rb +34 -12
- data/bundler/lib/bundler/compact_index_client.rb +26 -10
- 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 +8 -20
- data/bundler/lib/bundler/current_ruby.rb +9 -7
- data/bundler/lib/bundler/definition.rb +133 -132
- data/bundler/lib/bundler/dep_proxy.rb +16 -9
- data/bundler/lib/bundler/dependency.rb +19 -14
- data/bundler/lib/bundler/deployment.rb +1 -1
- data/bundler/lib/bundler/dsl.rb +54 -71
- data/bundler/lib/bundler/endpoint_specification.rb +1 -1
- data/bundler/lib/bundler/env.rb +9 -14
- data/bundler/lib/bundler/environment_preserver.rb +26 -3
- data/bundler/lib/bundler/errors.rb +1 -0
- data/bundler/lib/bundler/feature_flag.rb +19 -34
- data/bundler/lib/bundler/fetcher.rb +19 -16
- data/bundler/lib/bundler/fetcher/base.rb +1 -1
- data/bundler/lib/bundler/fetcher/compact_index.rb +27 -13
- data/bundler/lib/bundler/fetcher/dependency.rb +1 -1
- data/bundler/lib/bundler/fetcher/downloader.rb +6 -3
- data/bundler/lib/bundler/fetcher/index.rb +8 -7
- data/bundler/lib/bundler/friendly_errors.rb +27 -19
- data/bundler/lib/bundler/gem_helper.rb +68 -37
- data/bundler/lib/bundler/gem_helpers.rb +38 -29
- data/bundler/lib/bundler/gem_tasks.rb +1 -1
- data/bundler/lib/bundler/gem_version_promoter.rb +5 -5
- data/bundler/lib/bundler/graph.rb +3 -3
- data/bundler/lib/bundler/index.rb +12 -7
- data/bundler/lib/bundler/injector.rb +32 -12
- data/bundler/lib/bundler/inline.rb +41 -30
- data/bundler/lib/bundler/installer.rb +41 -60
- data/bundler/lib/bundler/installer/gem_installer.rb +8 -4
- data/bundler/lib/bundler/installer/parallel_installer.rb +20 -26
- data/bundler/lib/bundler/installer/standalone.rb +18 -4
- data/bundler/lib/bundler/lazy_specification.rb +41 -27
- data/bundler/lib/bundler/lockfile_generator.rb +1 -1
- data/bundler/lib/bundler/lockfile_parser.rb +16 -33
- data/bundler/lib/bundler/{ssl_certs → man}/.document +0 -0
- data/bundler/lib/bundler/man/bundle-add.1 +66 -0
- data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +7 -1
- data/bundler/lib/bundler/man/bundle-binstubs.1 +42 -0
- data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +3 -5
- data/bundler/lib/bundler/man/bundle-cache.1 +55 -0
- data/bundler/{man/bundle-package.ronn → lib/bundler/man/bundle-cache.1.ronn} +15 -15
- data/bundler/lib/bundler/man/bundle-check.1 +31 -0
- data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-clean.1 +24 -0
- data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-config.1 +488 -0
- data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +59 -67
- data/bundler/lib/bundler/man/bundle-doctor.1 +44 -0
- data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-exec.1 +165 -0
- data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +1 -1
- data/bundler/lib/bundler/man/bundle-gem.1 +102 -0
- data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
- data/bundler/lib/bundler/man/bundle-info.1 +20 -0
- data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-init.1 +25 -0
- data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +1 -1
- data/bundler/lib/bundler/man/bundle-inject.1 +33 -0
- data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-install.1 +338 -0
- data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +34 -7
- data/bundler/lib/bundler/man/bundle-list.1 +50 -0
- data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
- data/bundler/lib/bundler/man/bundle-lock.1 +84 -0
- data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-open.1 +32 -0
- data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-outdated.1 +155 -0
- data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-platform.1 +61 -0
- data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-pristine.1 +34 -0
- data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-remove.1 +31 -0
- data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-show.1 +23 -0
- data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-update.1 +394 -0
- data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +3 -3
- data/bundler/lib/bundler/man/bundle-viz.1 +39 -0
- data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle.1 +136 -0
- data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +2 -2
- data/bundler/lib/bundler/man/gemfile.5 +686 -0
- data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +16 -20
- data/bundler/lib/bundler/man/index.txt +25 -0
- data/bundler/lib/bundler/match_platform.rb +1 -1
- data/bundler/lib/bundler/mirror.rb +5 -5
- data/bundler/lib/bundler/plugin.rb +75 -36
- data/bundler/lib/bundler/plugin/api.rb +1 -1
- data/bundler/lib/bundler/plugin/api/source.rb +12 -7
- data/bundler/lib/bundler/plugin/dsl.rb +1 -1
- data/bundler/lib/bundler/plugin/index.rb +24 -4
- data/bundler/lib/bundler/plugin/installer.rb +33 -22
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -1
- data/bundler/lib/bundler/plugin/source_list.rb +5 -1
- data/bundler/lib/bundler/psyched_yaml.rb +0 -15
- data/bundler/lib/bundler/remote_specification.rb +5 -4
- data/bundler/lib/bundler/resolver.rb +191 -87
- data/bundler/lib/bundler/resolver/spec_group.rb +76 -48
- data/bundler/lib/bundler/retry.rb +3 -3
- data/bundler/lib/bundler/ruby_version.rb +5 -20
- data/bundler/lib/bundler/rubygems_ext.rb +76 -72
- data/bundler/lib/bundler/rubygems_gem_installer.rb +47 -13
- data/bundler/lib/bundler/rubygems_integration.rb +159 -444
- data/bundler/lib/bundler/runtime.rb +6 -23
- data/bundler/lib/bundler/settings.rb +67 -93
- data/bundler/lib/bundler/setup.rb +11 -12
- data/bundler/lib/bundler/shared_helpers.rb +54 -80
- data/bundler/lib/bundler/similarity_detector.rb +3 -3
- data/bundler/lib/bundler/source.rb +12 -6
- data/bundler/lib/bundler/source/git.rb +47 -38
- data/bundler/lib/bundler/source/git/git_proxy.rb +101 -102
- data/bundler/lib/bundler/source/metadata.rb +7 -6
- data/bundler/lib/bundler/source/path.rb +20 -11
- data/bundler/lib/bundler/source/path/installer.rb +10 -10
- data/bundler/lib/bundler/source/rubygems.rb +56 -29
- data/bundler/lib/bundler/source/rubygems/remote.rb +3 -4
- data/bundler/lib/bundler/source_list.rb +32 -30
- data/bundler/lib/bundler/spec_set.rb +37 -25
- data/bundler/lib/bundler/stub_specification.rb +40 -34
- data/bundler/lib/bundler/templates/Executable.bundler +23 -14
- data/bundler/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
- data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +16 -2
- data/bundler/lib/bundler/templates/newgem/README.md.tt +7 -5
- 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 +18 -31
- 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/minitest/test_helper.rb.tt +6 -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/templates/newgem/travis.yml.tt +0 -1
- data/bundler/lib/bundler/ui.rb +3 -3
- data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
- data/bundler/lib/bundler/ui/shell.rb +7 -11
- data/bundler/lib/bundler/uri_credentials_filter.rb +10 -4
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +161 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +66 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +176 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +273 -147
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +5 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +7 -0
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +36 -4
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +6 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +3 -3
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +39 -11
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +4 -4
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +11 -0
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +53 -51
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +2 -2
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +302 -462
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +40 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +53 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor.rb +16 -9
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +28 -13
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +3 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +7 -17
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +20 -9
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +19 -8
- data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +63 -43
- data/bundler/lib/bundler/vendor/thor/lib/thor/command.rb +21 -14
- data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +78 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +3 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor.rb +2 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +6 -6
- data/bundler/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +7 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +20 -7
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +21 -5
- data/bundler/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +1 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +15 -14
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +4 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +65 -8
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +10 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +3 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +18 -2
- 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/vendor/uri/lib/uri.rb +104 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +744 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +94 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1568 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +88 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +23 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +261 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +21 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +294 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +546 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +125 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
- data/bundler/lib/bundler/vendored_fileutils.rb +1 -6
- data/bundler/lib/bundler/vendored_molinillo.rb +1 -1
- data/bundler/lib/bundler/vendored_persistent.rb +7 -12
- data/bundler/lib/bundler/vendored_thor.rb +2 -2
- data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
- data/bundler/lib/bundler/vendored_uri.rb +4 -0
- data/bundler/lib/bundler/version.rb +1 -20
- data/bundler/lib/bundler/version_ranges.rb +51 -5
- data/bundler/lib/bundler/vlad.rb +2 -2
- data/bundler/lib/bundler/worker.rb +2 -4
- data/bundler/lib/bundler/yaml_serializer.rb +3 -4
- data/lib/rubygems.rb +198 -222
- data/lib/rubygems/available_set.rb +4 -5
- data/lib/rubygems/basic_specification.rb +32 -19
- data/lib/rubygems/bundler_version_finder.rb +19 -9
- data/lib/rubygems/command.rb +73 -21
- data/lib/rubygems/command_manager.rb +5 -12
- data/lib/rubygems/commands/build_command.rb +51 -18
- data/lib/rubygems/commands/cert_command.rb +2 -11
- data/lib/rubygems/commands/check_command.rb +0 -2
- data/lib/rubygems/commands/cleanup_command.rb +17 -13
- data/lib/rubygems/commands/contents_command.rb +7 -9
- data/lib/rubygems/commands/dependency_command.rb +9 -10
- data/lib/rubygems/commands/environment_command.rb +1 -6
- data/lib/rubygems/commands/fetch_command.rb +2 -4
- data/lib/rubygems/commands/generate_index_command.rb +3 -2
- data/lib/rubygems/commands/help_command.rb +4 -4
- data/lib/rubygems/commands/info_command.rb +9 -4
- data/lib/rubygems/commands/install_command.rb +12 -54
- data/lib/rubygems/commands/list_command.rb +8 -7
- data/lib/rubygems/commands/lock_command.rb +3 -5
- data/lib/rubygems/commands/mirror_command.rb +0 -1
- data/lib/rubygems/commands/open_command.rb +1 -4
- data/lib/rubygems/commands/outdated_command.rb +0 -1
- data/lib/rubygems/commands/owner_command.rb +10 -10
- data/lib/rubygems/commands/pristine_command.rb +13 -9
- data/lib/rubygems/commands/push_command.rb +12 -51
- data/lib/rubygems/commands/query_command.rb +14 -330
- data/lib/rubygems/commands/rdoc_command.rb +0 -1
- 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 +143 -101
- data/lib/rubygems/commands/signin_command.rb +0 -1
- data/lib/rubygems/commands/signout_command.rb +0 -2
- data/lib/rubygems/commands/sources_command.rb +22 -6
- data/lib/rubygems/commands/specification_command.rb +8 -3
- data/lib/rubygems/commands/stale_command.rb +1 -1
- data/lib/rubygems/commands/uninstall_command.rb +2 -3
- data/lib/rubygems/commands/unpack_command.rb +3 -32
- data/lib/rubygems/commands/update_command.rb +73 -28
- data/lib/rubygems/commands/which_command.rb +0 -1
- data/lib/rubygems/commands/yank_command.rb +10 -7
- data/lib/rubygems/compatibility.rb +4 -4
- data/lib/rubygems/config_file.rb +48 -27
- data/lib/rubygems/core_ext/kernel_gem.rb +7 -6
- data/lib/rubygems/core_ext/kernel_require.rb +44 -6
- data/lib/rubygems/core_ext/kernel_warn.rb +22 -13
- data/lib/rubygems/core_ext/tcpsocket_init.rb +52 -0
- data/lib/rubygems/defaults.rb +110 -23
- data/lib/rubygems/dependency.rb +28 -14
- data/lib/rubygems/dependency_installer.rb +11 -166
- data/lib/rubygems/dependency_list.rb +17 -18
- data/lib/rubygems/deprecate.rb +51 -6
- data/lib/rubygems/doctor.rb +4 -4
- data/lib/rubygems/errors.rb +5 -7
- data/lib/rubygems/exceptions.rb +2 -24
- data/lib/rubygems/ext.rb +6 -6
- data/lib/rubygems/ext/build_error.rb +2 -0
- data/lib/rubygems/ext/builder.rb +45 -82
- data/lib/rubygems/ext/cmake_builder.rb +6 -7
- data/lib/rubygems/ext/configure_builder.rb +5 -8
- data/lib/rubygems/ext/ext_conf_builder.rb +27 -23
- data/lib/rubygems/ext/rake_builder.rb +4 -6
- data/lib/rubygems/gem_runner.rb +3 -10
- data/lib/rubygems/gemcutter_utilities.rb +111 -37
- data/lib/rubygems/indexer.rb +9 -26
- data/lib/rubygems/install_update_options.rb +7 -7
- data/lib/rubygems/installer.rb +91 -98
- data/lib/rubygems/installer_test_case.rb +104 -42
- data/lib/rubygems/installer_uninstaller_utils.rb +29 -0
- data/lib/rubygems/local_remote_options.rb +1 -1
- data/lib/rubygems/mock_gem_ui.rb +1 -4
- data/lib/rubygems/name_tuple.rb +4 -7
- data/lib/rubygems/openssl.rb +7 -0
- data/lib/rubygems/package.rb +49 -32
- 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 +15 -12
- 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 +6 -16
- data/lib/rubygems/package_task.rb +1 -7
- data/lib/rubygems/path_support.rb +2 -2
- data/lib/rubygems/platform.rb +22 -16
- data/lib/rubygems/query_utils.rb +353 -0
- data/lib/rubygems/rdoc.rb +0 -12
- data/lib/rubygems/remote_fetcher.rb +33 -59
- data/lib/rubygems/request.rb +11 -14
- data/lib/rubygems/request/connection_pools.rb +3 -7
- data/lib/rubygems/request/http_pool.rb +0 -1
- data/lib/rubygems/request_set.rb +10 -23
- data/lib/rubygems/request_set/gem_dependency_api.rb +9 -11
- data/lib/rubygems/request_set/lockfile.rb +13 -12
- data/lib/rubygems/request_set/lockfile/parser.rb +2 -2
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -1
- data/lib/rubygems/requirement.rb +36 -35
- data/lib/rubygems/resolver.rb +20 -16
- data/lib/rubygems/resolver/activation_request.rb +27 -51
- 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 +4 -6
- data/lib/rubygems/resolver/composed_set.rb +3 -5
- data/lib/rubygems/resolver/conflict.rb +2 -9
- 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 +32 -2
- data/lib/rubygems/resolver/installed_specification.rb +0 -2
- data/lib/rubygems/resolver/installer_set.rb +63 -16
- data/lib/rubygems/resolver/local_specification.rb +0 -2
- data/lib/rubygems/resolver/lock_set.rb +3 -5
- data/lib/rubygems/resolver/lock_specification.rb +2 -4
- 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 +8 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +39 -6
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +51 -12
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +76 -8
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +12 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +510 -165
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
- data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
- data/lib/rubygems/resolver/requirement_list.rb +0 -1
- 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 -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 +15 -13
- 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 +8 -9
- data/lib/rubygems/security/trust_dir.rb +1 -3
- data/lib/rubygems/server.rb +20 -16
- data/lib/rubygems/source.rb +30 -13
- 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 +6 -6
- data/lib/rubygems/spec_fetcher.rb +22 -34
- data/lib/rubygems/specification.rb +207 -278
- data/lib/rubygems/specification_policy.rb +135 -57
- data/{bundler/lib/bundler/ssl_certs/index.rubygems.org → lib/rubygems/ssl_certs/rubygems.org}/GlobalSignRootCA.pem +0 -0
- data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
- data/lib/rubygems/stub_specification.rb +4 -5
- data/lib/rubygems/test_case.rb +221 -341
- data/lib/rubygems/test_utilities.rb +22 -18
- data/lib/rubygems/text.rb +2 -3
- data/lib/rubygems/uninstaller.rb +49 -30
- data/lib/rubygems/uri_formatter.rb +2 -4
- data/lib/rubygems/uri_parser.rb +34 -0
- data/lib/rubygems/uri_parsing.rb +23 -0
- data/lib/rubygems/user_interaction.rb +3 -20
- data/lib/rubygems/util.rb +20 -44
- data/lib/rubygems/util/licenses.rb +400 -400
- data/lib/rubygems/validator.rb +9 -31
- data/lib/rubygems/version.rb +29 -21
- data/lib/rubygems/version_option.rb +6 -0
- data/rubygems-update.gemspec +4 -11
- data/setup.rb +2 -7
- data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
- data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
- data/test/rubygems/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 +41 -5
- data/test/rubygems/test_gem.rb +405 -236
- data/test/rubygems/test_gem_available_set.rb +5 -6
- data/test/rubygems/test_gem_bundler_version_finder.rb +20 -2
- data/test/rubygems/test_gem_command.rb +144 -9
- data/test/rubygems/test_gem_command_manager.rb +40 -17
- data/test/rubygems/test_gem_commands_build_command.rb +386 -13
- data/test/rubygems/test_gem_commands_cert_command.rb +18 -6
- data/test/rubygems/test_gem_commands_check_command.rb +0 -2
- data/test/rubygems/test_gem_commands_cleanup_command.rb +35 -10
- data/test/rubygems/test_gem_commands_contents_command.rb +50 -19
- data/test/rubygems/test_gem_commands_dependency_command.rb +1 -3
- data/test/rubygems/test_gem_commands_environment_command.rb +21 -33
- data/test/rubygems/test_gem_commands_fetch_command.rb +0 -2
- data/test/rubygems/test_gem_commands_generate_index_command.rb +32 -2
- data/test/rubygems/test_gem_commands_help_command.rb +16 -8
- data/test/rubygems/test_gem_commands_info_command.rb +6 -7
- data/test/rubygems/test_gem_commands_install_command.rb +368 -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 -2
- data/test/rubygems/test_gem_commands_open_command.rb +4 -6
- data/test/rubygems/test_gem_commands_outdated_command.rb +18 -1
- data/test/rubygems/test_gem_commands_owner_command.rb +62 -9
- data/test/rubygems/test_gem_commands_pristine_command.rb +148 -16
- data/test/rubygems/test_gem_commands_push_command.rb +94 -21
- data/test/rubygems/test_gem_commands_query_command.rb +35 -10
- data/test/rubygems/test_gem_commands_search_command.rb +0 -2
- data/test/rubygems/test_gem_commands_server_command.rb +6 -4
- data/test/rubygems/test_gem_commands_setup_command.rb +228 -128
- data/test/rubygems/test_gem_commands_signin_command.rb +36 -11
- data/test/rubygems/test_gem_commands_signout_command.rb +0 -7
- data/test/rubygems/test_gem_commands_sources_command.rb +193 -9
- 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 +108 -52
- data/test/rubygems/test_gem_commands_unpack_command.rb +0 -2
- data/test/rubygems/test_gem_commands_update_command.rb +201 -29
- data/test/rubygems/test_gem_commands_which_command.rb +3 -5
- data/test/rubygems/test_gem_commands_yank_command.rb +86 -5
- data/test/rubygems/test_gem_config_file.rb +25 -13
- data/test/rubygems/test_gem_dependency.rb +6 -2
- data/test/rubygems/test_gem_dependency_installer.rb +169 -252
- data/test/rubygems/test_gem_dependency_list.rb +31 -26
- 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 +51 -44
- data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -23
- data/test/rubygems/test_gem_ext_configure_builder.rb +6 -14
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +21 -29
- data/test/rubygems/test_gem_ext_rake_builder.rb +39 -22
- data/test/rubygems/test_gem_gem_runner.rb +47 -2
- data/test/rubygems/test_gem_gemcutter_utilities.rb +16 -13
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -2
- data/test/rubygems/test_gem_indexer.rb +40 -55
- data/test/rubygems/test_gem_install_update_options.rb +45 -21
- data/test/rubygems/test_gem_installer.rb +661 -338
- 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 +132 -45
- data/test/rubygems/test_gem_package_old.rb +56 -55
- 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 +6 -7
- data/test/rubygems/test_gem_package_tar_writer.rb +20 -12
- data/test/rubygems/test_gem_package_task.rb +46 -13
- data/test/rubygems/test_gem_path_support.rb +17 -13
- data/test/rubygems/test_gem_platform.rb +74 -7
- data/test/rubygems/test_gem_rdoc.rb +0 -1
- data/test/rubygems/test_gem_remote_fetcher.rb +223 -209
- data/test/rubygems/test_gem_request.rb +30 -19
- data/test/rubygems/test_gem_request_connection_pools.rb +2 -2
- data/test/rubygems/test_gem_request_set.rb +104 -29
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +4 -6
- data/test/rubygems/test_gem_request_set_lockfile.rb +4 -5
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -10
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -118
- data/test/rubygems/test_gem_requirement.rb +50 -4
- data/test/rubygems/test_gem_resolver.rb +73 -31
- data/test/rubygems/test_gem_resolver_activation_request.rb +3 -34
- 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 -7
- 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 +1 -2
- data/test/rubygems/test_gem_resolver_index_set.rb +2 -4
- data/test/rubygems/test_gem_resolver_index_specification.rb +7 -4
- data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -3
- data/test/rubygems/test_gem_resolver_installer_set.rb +10 -10
- 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 -2
- 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 +27 -25
- data/test/rubygems/test_gem_security_policy.rb +7 -12
- data/test/rubygems/test_gem_security_signer.rb +11 -12
- data/test/rubygems/test_gem_security_trust_dir.rb +4 -6
- data/test/rubygems/test_gem_server.rb +13 -12
- data/test/rubygems/test_gem_silent_ui.rb +0 -1
- data/test/rubygems/test_gem_source.rb +32 -17
- data/test/rubygems/test_gem_source_fetch_problem.rb +0 -1
- data/test/rubygems/test_gem_source_git.rb +12 -18
- data/test/rubygems/test_gem_source_installed.rb +11 -13
- data/test/rubygems/test_gem_source_list.rb +1 -1
- data/test/rubygems/test_gem_source_local.rb +8 -9
- data/test/rubygems/test_gem_source_lock.rb +17 -19
- data/test/rubygems/test_gem_source_specific_file.rb +9 -10
- 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 +363 -245
- data/test/rubygems/test_gem_stream_ui.rb +3 -1
- data/test/rubygems/test_gem_stub_specification.rb +6 -7
- data/test/rubygems/test_gem_text.rb +1 -2
- data/test/rubygems/test_gem_uninstaller.rb +165 -22
- 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 +17 -15
- data/test/rubygems/test_gem_validator.rb +4 -7
- data/test/rubygems/test_gem_version.rb +23 -10
- data/test/rubygems/test_gem_version_option.rb +1 -3
- data/test/rubygems/test_kernel.rb +25 -9
- data/test/rubygems/test_project_sanity.rb +20 -0
- data/test/rubygems/test_remote_fetch_error.rb +1 -2
- data/test/rubygems/test_require.rb +394 -56
- data/test/test_changelog_generator.rb +17 -0
- metadata +109 -155
- data/.rubocop.yml +0 -67
- data/.travis.yml +0 -38
- data/appveyor.yml +0 -43
- data/bundler/CODE_OF_CONDUCT.md +0 -42
- data/bundler/CONTRIBUTING.md +0 -17
- data/bundler/exe/bundle_ruby +0 -60
- data/bundler/lib/bundler/cli/package.rb +0 -49
- data/bundler/lib/bundler/compatibility_guard.rb +0 -14
- data/bundler/lib/bundler/gem_remote_fetcher.rb +0 -43
- data/bundler/lib/bundler/ssl_certs/certificate_manager.rb +0 -66
- data/bundler/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
- data/bundler/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
- data/bundler/lib/bundler/templates/newgem/test/test_helper.rb.tt +0 -4
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb +0 -27
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb +0 -129
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb +0 -12
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb +0 -129
- data/lib/rubygems/source_local.rb +0 -7
- data/lib/rubygems/source_specific_file.rb +0 -6
- data/lib/rubygems/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +0 -21
- 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/util/CL2notes +0 -55
- data/util/ci +0 -82
- 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 -61
- 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,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
|
@@ -27,7 +29,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
|
|
27
29
|
|
28
30
|
@cmd = Gem::Commands::PushCommand.new
|
29
31
|
|
30
|
-
|
32
|
+
singleton_gem_class.class_eval do
|
31
33
|
alias_method :orig_latest_rubygems_version, :latest_rubygems_version
|
32
34
|
|
33
35
|
def latest_rubygems_version
|
@@ -37,9 +39,11 @@ 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
|
43
47
|
remove_method :latest_rubygems_version
|
44
48
|
alias_method :latest_rubygems_version, :orig_latest_rubygems_version
|
45
49
|
end
|
@@ -132,7 +136,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
|
|
132
136
|
ENV["RUBYGEMS_HOST"] = @host
|
133
137
|
Gem.configuration.disable_default_gem_server = true
|
134
138
|
@response = "Successfully registered gem: freewill (1.0.0)"
|
135
|
-
@fetcher.data["#{@host}/api/v1/gems"]
|
139
|
+
@fetcher.data["#{@host}/api/v1/gems"] = [@response, 200, 'OK']
|
136
140
|
|
137
141
|
send_battery
|
138
142
|
end
|
@@ -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
|
@@ -160,14 +164,14 @@ class TestGemCommandsPushCommand < Gem::TestCase
|
|
160
164
|
FileUtils.rm Gem.configuration.credentials_path
|
161
165
|
|
162
166
|
@response = "Successfully registered gem: freebird (1.0.1)"
|
163
|
-
@fetcher.data["#{@host}/api/v1/gems"]
|
167
|
+
@fetcher.data["#{@host}/api/v1/gems"] = [@response, 200, 'OK']
|
164
168
|
|
165
169
|
send_battery
|
166
170
|
end
|
167
171
|
|
168
172
|
def test_sending_gem
|
169
173
|
@response = "Successfully registered gem: freewill (1.0.0)"
|
170
|
-
@fetcher.data["#{@host}/api/v1/gems"]
|
174
|
+
@fetcher.data["#{@host}/api/v1/gems"] = [@response, 200, 'OK']
|
171
175
|
|
172
176
|
send_battery
|
173
177
|
end
|
@@ -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
|
@@ -195,7 +199,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
|
|
195
199
|
FileUtils.rm Gem.configuration.credentials_path
|
196
200
|
|
197
201
|
@response = "Successfully registered gem: freebird (1.0.1)"
|
198
|
-
@fetcher.data["#{@host}/api/v1/gems"]
|
202
|
+
@fetcher.data["#{@host}/api/v1/gems"] = [@response, 200, 'OK']
|
199
203
|
send_battery
|
200
204
|
end
|
201
205
|
|
@@ -210,7 +214,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
|
|
210
214
|
ENV["GEM_HOST_API_KEY"] = "PRIVKEY"
|
211
215
|
|
212
216
|
@response = "Successfully registered gem: freebird (1.0.1)"
|
213
|
-
@fetcher.data["#{@host}/api/v1/gems"]
|
217
|
+
@fetcher.data["#{@host}/api/v1/gems"] = [@response, 200, 'OK']
|
214
218
|
send_battery
|
215
219
|
end
|
216
220
|
|
@@ -237,7 +241,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
|
|
237
241
|
FileUtils.rm Gem.configuration.credentials_path
|
238
242
|
|
239
243
|
@response = "Successfully registered gem: freebird (1.0.1)"
|
240
|
-
@fetcher.data["#{@host}/api/v1/gems"]
|
244
|
+
@fetcher.data["#{@host}/api/v1/gems"] = [@response, 200, 'OK']
|
241
245
|
send_battery
|
242
246
|
end
|
243
247
|
|
@@ -246,8 +250,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
|
|
246
250
|
spec.metadata['allowed_push_host'] = "https://privategemserver.example"
|
247
251
|
end
|
248
252
|
|
249
|
-
|
250
|
-
response = %{ERROR: "#{@host}" is not allowed by the gemspec, which only allows "https://privategemserver.example"}
|
253
|
+
response = %(ERROR: "#{@host}" is not allowed by the gemspec, which only allows "https://privategemserver.example")
|
251
254
|
|
252
255
|
assert_raises Gem::MockGemUi::TermError do
|
253
256
|
send_battery
|
@@ -268,7 +271,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
|
|
268
271
|
|
269
272
|
keys = {
|
270
273
|
:rubygems_api_key => 'KEY',
|
271
|
-
@host => @api_key
|
274
|
+
@host => @api_key,
|
272
275
|
}
|
273
276
|
|
274
277
|
FileUtils.mkdir_p File.dirname Gem.configuration.credentials_path
|
@@ -299,7 +302,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
|
|
299
302
|
api_key = "PRIVKEY"
|
300
303
|
|
301
304
|
keys = {
|
302
|
-
host => api_key
|
305
|
+
host => api_key,
|
303
306
|
}
|
304
307
|
|
305
308
|
FileUtils.mkdir_p File.dirname Gem.configuration.credentials_path
|
@@ -311,7 +314,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
|
|
311
314
|
FileUtils.rm Gem.configuration.credentials_path
|
312
315
|
|
313
316
|
@response = "Successfully registered gem: freebird (1.0.1)"
|
314
|
-
@fetcher.data["#{host}/api/v1/gems"]
|
317
|
+
@fetcher.data["#{host}/api/v1/gems"] = [@response, 200, 'OK']
|
315
318
|
|
316
319
|
# do not set @host
|
317
320
|
use_ui(@ui) { @cmd.send_gem(@path) }
|
@@ -356,7 +359,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
|
|
356
359
|
end
|
357
360
|
Gem.configuration.load_api_keys
|
358
361
|
|
359
|
-
@cmd.handle_options %w
|
362
|
+
@cmd.handle_options %w[-k other]
|
360
363
|
@cmd.instance_variable_set :@host, @host
|
361
364
|
@cmd.send_gem(@path)
|
362
365
|
|
@@ -368,10 +371,10 @@ class TestGemCommandsPushCommand < Gem::TestCase
|
|
368
371
|
response_fail = "You have enabled multifactor authentication but your request doesn't have the correct OTP code. Please check it and retry."
|
369
372
|
response_success = 'Successfully registered gem: freewill (1.0.0)'
|
370
373
|
|
371
|
-
@fetcher.data["#{Gem.host}/api/v1/gems"] =
|
372
|
-
|
373
|
-
|
374
|
-
|
374
|
+
@fetcher.data["#{Gem.host}/api/v1/gems"] = [
|
375
|
+
[response_fail, 401, 'Unauthorized'],
|
376
|
+
[response_success, 200, 'OK'],
|
377
|
+
]
|
375
378
|
|
376
379
|
@otp_ui = Gem::MockGemUi.new "111111\n"
|
377
380
|
use_ui @otp_ui do
|
@@ -401,4 +404,74 @@ class TestGemCommandsPushCommand < Gem::TestCase
|
|
401
404
|
assert_equal '111111', @fetcher.last_request['OTP']
|
402
405
|
end
|
403
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
|
+
|
472
|
+
private
|
473
|
+
|
474
|
+
def singleton_gem_class
|
475
|
+
class << Gem; self; end
|
476
|
+
end
|
404
477
|
end
|
@@ -458,7 +458,28 @@ pl (1 i386-linux)
|
|
458
458
|
EOF
|
459
459
|
|
460
460
|
assert_equal expected, @stub_ui.output
|
461
|
-
|
461
|
+
end
|
462
|
+
|
463
|
+
def test_execute_no_prerelease_local
|
464
|
+
spec_fetcher do |fetcher|
|
465
|
+
fetcher.legacy_platform
|
466
|
+
end
|
467
|
+
|
468
|
+
@cmd.handle_options %w[-l --no-prerelease]
|
469
|
+
|
470
|
+
use_ui @stub_ui do
|
471
|
+
@cmd.execute
|
472
|
+
end
|
473
|
+
|
474
|
+
expected = <<-EOF
|
475
|
+
|
476
|
+
*** LOCAL GEMS ***
|
477
|
+
|
478
|
+
a (2, 1)
|
479
|
+
pl (1 i386-linux)
|
480
|
+
EOF
|
481
|
+
|
482
|
+
assert_equal expected, @stub_ui.output
|
462
483
|
end
|
463
484
|
|
464
485
|
def test_execute_remote
|
@@ -558,8 +579,8 @@ pl (1 i386-linux)
|
|
558
579
|
@cmd.execute
|
559
580
|
end
|
560
581
|
|
561
|
-
assert_match %r
|
562
|
-
assert_match %r
|
582
|
+
assert_match %r{^a }, @stub_ui.output
|
583
|
+
assert_match %r{^pl }, @stub_ui.output
|
563
584
|
assert_equal '', @stub_ui.error
|
564
585
|
end
|
565
586
|
|
@@ -568,11 +589,11 @@ pl (1 i386-linux)
|
|
568
589
|
@cmd.options[:domain] = :remote
|
569
590
|
|
570
591
|
use_ui @stub_ui do
|
571
|
-
@cmd.send :show_gems, /a/i
|
592
|
+
@cmd.send :show_gems, /a/i
|
572
593
|
end
|
573
594
|
|
574
|
-
assert_match %r
|
575
|
-
refute_match %r
|
595
|
+
assert_match %r{^a }, @stub_ui.output
|
596
|
+
refute_match %r{^pl }, @stub_ui.output
|
576
597
|
assert_empty @stub_ui.error
|
577
598
|
end
|
578
599
|
|
@@ -620,10 +641,10 @@ a (2 universal-darwin, 1 ruby x86-linux)
|
|
620
641
|
end
|
621
642
|
|
622
643
|
def test_execute_show_default_gems
|
623
|
-
spec_fetcher {
|
644
|
+
spec_fetcher {|fetcher| fetcher.spec 'a', 2 }
|
624
645
|
|
625
646
|
a1 = new_default_spec 'a', 1
|
626
|
-
|
647
|
+
install_default_gems a1
|
627
648
|
|
628
649
|
use_ui @stub_ui do
|
629
650
|
@cmd.execute
|
@@ -642,7 +663,7 @@ EOF
|
|
642
663
|
def test_execute_show_default_gems_with_platform
|
643
664
|
a1 = new_default_spec 'a', 1
|
644
665
|
a1.platform = 'java'
|
645
|
-
|
666
|
+
install_default_gems a1
|
646
667
|
|
647
668
|
use_ui @stub_ui do
|
648
669
|
@cmd.execute
|
@@ -664,7 +685,7 @@ EOF
|
|
664
685
|
end
|
665
686
|
|
666
687
|
a1 = new_default_spec 'a', 1
|
667
|
-
|
688
|
+
install_default_gems a1
|
668
689
|
|
669
690
|
@cmd.handle_options %w[-l -d]
|
670
691
|
|
@@ -820,6 +841,10 @@ othergem (1.2.3)
|
|
820
841
|
assert_equal expected, @stub_ui.output
|
821
842
|
end
|
822
843
|
|
844
|
+
def test_depprecated
|
845
|
+
assert @cmd.deprecated?
|
846
|
+
end
|
847
|
+
|
823
848
|
private
|
824
849
|
|
825
850
|
def add_gems_to_fetcher
|
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
|
|
3
3
|
require 'rubygems/commands/search_command'
|
4
4
|
|
5
5
|
class TestGemCommandsSearchCommand < Gem::TestCase
|
6
|
-
|
7
6
|
def setup
|
8
7
|
super
|
9
8
|
|
@@ -13,5 +12,4 @@ class TestGemCommandsSearchCommand < Gem::TestCase
|
|
13
12
|
def test_initialize
|
14
13
|
assert_equal :remote, @cmd.defaults[:domain]
|
15
14
|
end
|
16
|
-
|
17
15
|
end
|
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
|
|
3
3
|
require 'rubygems/commands/server_command'
|
4
4
|
|
5
5
|
class TestGemCommandsServerCommand < Gem::TestCase
|
6
|
-
|
7
6
|
def setup
|
8
7
|
super
|
9
8
|
|
@@ -38,8 +37,12 @@ class TestGemCommandsServerCommand < Gem::TestCase
|
|
38
37
|
@cmd.send :handle_options, %w[-p 65535]
|
39
38
|
assert_equal 65535, @cmd.options[:port]
|
40
39
|
|
41
|
-
|
42
|
-
|
40
|
+
begin
|
41
|
+
@cmd.send :handle_options, %w[-p discard]
|
42
|
+
assert_equal 9, @cmd.options[:port]
|
43
|
+
rescue OptionParser::InvalidArgument
|
44
|
+
# for container environment on GitHub Actions
|
45
|
+
end
|
43
46
|
|
44
47
|
e = assert_raises OptionParser::InvalidArgument do
|
45
48
|
@cmd.send :handle_options, %w[-p nonexistent]
|
@@ -55,5 +58,4 @@ class TestGemCommandsServerCommand < Gem::TestCase
|
|
55
58
|
assert_equal 'invalid argument: -p 65536: not a port number',
|
56
59
|
e.message
|
57
60
|
end
|
58
|
-
|
59
61
|
end
|
@@ -1,16 +1,14 @@
|
|
1
|
-
# coding: UTF-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
3
|
require 'rubygems/test_case'
|
5
4
|
require 'rubygems/commands/setup_command'
|
6
5
|
|
7
6
|
class TestGemCommandsSetupCommand < Gem::TestCase
|
8
|
-
|
9
7
|
bundler_gemspec = File.expand_path("../../../bundler/lib/bundler/version.rb", __FILE__)
|
10
8
|
if File.exist?(bundler_gemspec)
|
11
9
|
BUNDLER_VERS = File.read(bundler_gemspec).match(/VERSION = "(#{Gem::Version::VERSION_PATTERN})"/)[1]
|
12
10
|
else
|
13
|
-
BUNDLER_VERS = "
|
11
|
+
BUNDLER_VERS = "2.0.1".freeze
|
14
12
|
end
|
15
13
|
|
16
14
|
def setup
|
@@ -20,62 +18,48 @@ class TestGemCommandsSetupCommand < Gem::TestCase
|
|
20
18
|
@cmd = Gem::Commands::SetupCommand.new
|
21
19
|
@cmd.options[:prefix] = @install_dir
|
22
20
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
21
|
+
filelist = %w[
|
22
|
+
bin/gem
|
23
|
+
lib/rubygems.rb
|
24
|
+
lib/rubygems/test_case.rb
|
25
|
+
lib/rubygems/ssl_certs/rubygems.org/foo.pem
|
26
|
+
bundler/exe/bundle
|
27
|
+
bundler/exe/bundler
|
28
|
+
bundler/lib/bundler.rb
|
29
|
+
bundler/lib/bundler/b.rb
|
30
|
+
bundler/bin/bundler/man/bundle-b.1
|
31
|
+
bundler/lib/bundler/man/bundle-b.1.ronn
|
32
|
+
bundler/lib/bundler/man/gemfile.5
|
33
|
+
bundler/lib/bundler/man/gemfile.5.ronn
|
34
|
+
bundler/lib/bundler/templates/.circleci/config.yml
|
35
|
+
bundler/lib/bundler/templates/.travis.yml
|
36
|
+
]
|
37
|
+
|
38
|
+
create_dummy_files(filelist)
|
39
39
|
|
40
40
|
gemspec = Gem::Specification.new
|
41
|
+
gemspec.author = "Us"
|
41
42
|
gemspec.name = "bundler"
|
42
43
|
gemspec.version = BUNDLER_VERS
|
43
44
|
gemspec.bindir = "exe"
|
44
|
-
gemspec.executables = ["bundle"]
|
45
|
+
gemspec.executables = ["bundle", "bundler"]
|
45
46
|
|
46
|
-
File.open 'bundler/bundler.gemspec',
|
47
|
+
File.open 'bundler/bundler.gemspec', 'w' do |io|
|
47
48
|
io.puts gemspec.to_ruby
|
48
49
|
end
|
49
50
|
|
50
|
-
open(File.join(Gem
|
51
|
+
open(File.join(Gem.default_specifications_dir, "bundler-1.15.4.gemspec"), 'w') do |io|
|
51
52
|
gemspec.version = "1.15.4"
|
52
53
|
io.puts gemspec.to_ruby
|
53
54
|
end
|
54
55
|
|
55
|
-
|
56
|
+
spec_fetcher do |fetcher|
|
57
|
+
fetcher.download "bundler", "1.15.4"
|
56
58
|
|
57
|
-
|
58
|
-
io.puts "# bundler-#{BUNDLER_VERS}"
|
59
|
-
end
|
59
|
+
fetcher.gem "bundler", BUNDLER_VERS
|
60
60
|
|
61
|
-
|
62
|
-
io.puts '# bundler-audit'
|
61
|
+
fetcher.gem "bundler-audit", "1.0.0"
|
63
62
|
end
|
64
|
-
|
65
|
-
FileUtils.mkdir_p 'default/gems/bundler-1.15.4'
|
66
|
-
FileUtils.mkdir_p 'default/gems/bundler-audit-1.0.0'
|
67
|
-
end
|
68
|
-
|
69
|
-
def gem_install(name)
|
70
|
-
gem = util_spec name do |s|
|
71
|
-
s.executables = [name]
|
72
|
-
s.files = %W[bin/#{name}]
|
73
|
-
end
|
74
|
-
write_file File.join @tempdir, 'bin', name do |f|
|
75
|
-
f.puts '#!/usr/bin/ruby'
|
76
|
-
end
|
77
|
-
install_gem gem
|
78
|
-
File.join @gemhome, 'bin', name
|
79
63
|
end
|
80
64
|
|
81
65
|
def test_execute_regenerate_binstubs
|
@@ -103,48 +87,80 @@ class TestGemCommandsSetupCommand < Gem::TestCase
|
|
103
87
|
assert_equal "I changed it!\n", File.read(gem_bin_path)
|
104
88
|
end
|
105
89
|
|
106
|
-
def
|
107
|
-
|
108
|
-
write_file
|
90
|
+
def test_execute_regenerate_plugins
|
91
|
+
gem_plugin_path = gem_install_with_plugin 'a'
|
92
|
+
write_file gem_plugin_path do |io|
|
109
93
|
io.puts 'I changed it!'
|
110
94
|
end
|
111
95
|
|
112
96
|
@cmd.options[:document] = []
|
113
|
-
@cmd.options[:env_shebang] = true
|
114
97
|
@cmd.execute
|
115
98
|
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
99
|
+
assert_match %r{\Arequire}, File.read(gem_plugin_path)
|
100
|
+
end
|
101
|
+
|
102
|
+
def test_execute_no_regenerate_plugins
|
103
|
+
gem_plugin_path = gem_install_with_plugin 'a'
|
104
|
+
write_file gem_plugin_path do |io|
|
105
|
+
io.puts 'I changed it!'
|
121
106
|
end
|
122
107
|
|
123
|
-
|
108
|
+
@cmd.options[:document] = []
|
109
|
+
@cmd.options[:regenerate_plugins] = false
|
110
|
+
@cmd.execute
|
124
111
|
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
112
|
+
assert_equal "I changed it!\n", File.read(gem_plugin_path)
|
113
|
+
end
|
114
|
+
|
115
|
+
def test_execute_regenerate_plugins_creates_plugins_dir_if_not_there
|
116
|
+
gem_plugin_path = gem_install_with_plugin 'a'
|
117
|
+
|
118
|
+
# Simulate gem installed with an older rubygems without a plugins layout
|
119
|
+
FileUtils.rm_rf Gem.plugindir
|
120
|
+
|
121
|
+
@cmd.options[:document] = []
|
122
|
+
@cmd.execute
|
123
|
+
|
124
|
+
assert_match %r{\Arequire}, File.read(gem_plugin_path)
|
125
|
+
end
|
126
|
+
|
127
|
+
def test_execute_informs_about_installed_executables
|
128
|
+
@cmd.options[:document] = []
|
129
|
+
|
130
|
+
use_ui @ui do
|
131
|
+
@cmd.execute
|
137
132
|
end
|
133
|
+
|
134
|
+
out = @ui.output.split "\n"
|
135
|
+
|
136
|
+
exec_line = out.shift until exec_line == "RubyGems installed the following executables:"
|
137
|
+
assert_equal "\t#{default_gem_bin_path}", out.shift
|
138
|
+
assert_equal "\t#{default_bundle_bin_path}", out.shift
|
139
|
+
assert_equal "\t#{default_bundler_bin_path}", out.shift
|
138
140
|
end
|
139
141
|
|
140
|
-
def
|
141
|
-
|
142
|
-
|
142
|
+
def test_env_shebang_flag
|
143
|
+
gem_bin_path = gem_install 'a'
|
144
|
+
write_file gem_bin_path do |io|
|
145
|
+
io.puts 'I changed it!'
|
146
|
+
end
|
147
|
+
|
148
|
+
@cmd.options[:document] = []
|
149
|
+
@cmd.options[:env_shebang] = true
|
150
|
+
@cmd.execute
|
151
|
+
|
152
|
+
ruby_exec = sprintf Gem.default_exec_format, 'ruby'
|
153
|
+
|
154
|
+
bin_env = win_platform? ? "" : %w[/usr/bin/env /bin/env].find {|f| File.executable?(f) } + " "
|
155
|
+
assert_match %r{\A#!\s*#{bin_env}#{ruby_exec}}, File.read(default_gem_bin_path)
|
156
|
+
assert_match %r{\A#!\s*#{bin_env}#{ruby_exec}}, File.read(default_bundle_bin_path)
|
157
|
+
assert_match %r{\A#!\s*#{bin_env}#{ruby_exec}}, File.read(default_bundler_bin_path)
|
158
|
+
assert_match %r{\A#!\s*#{bin_env}#{ruby_exec}}, File.read(gem_bin_path)
|
143
159
|
end
|
144
160
|
|
145
|
-
def
|
146
|
-
assert_equal %w[rubygems.rb rubygems/test_case.rb],
|
147
|
-
@cmd.
|
161
|
+
def test_files_in
|
162
|
+
assert_equal %w[rubygems.rb rubygems/ssl_certs/rubygems.org/foo.pem rubygems/test_case.rb],
|
163
|
+
@cmd.files_in('lib').sort
|
148
164
|
end
|
149
165
|
|
150
166
|
def test_install_lib
|
@@ -156,88 +172,132 @@ class TestGemCommandsSetupCommand < Gem::TestCase
|
|
156
172
|
assert_path_exists File.join(dir, 'rubygems.rb')
|
157
173
|
assert_path_exists File.join(dir, 'rubygems/ssl_certs/rubygems.org/foo.pem')
|
158
174
|
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
175
|
+
assert_path_exists File.join(dir, 'bundler.rb')
|
176
|
+
assert_path_exists File.join(dir, 'bundler/b.rb')
|
177
|
+
|
178
|
+
assert_path_exists File.join(dir, 'bundler/templates/.circleci/config.yml') unless RUBY_ENGINE == "truffleruby" # https://github.com/oracle/truffleruby/issues/2116
|
179
|
+
assert_path_exists File.join(dir, 'bundler/templates/.travis.yml')
|
163
180
|
end
|
164
181
|
end
|
165
182
|
|
166
183
|
def test_install_default_bundler_gem
|
167
184
|
@cmd.extend FileUtils
|
168
185
|
|
169
|
-
@
|
186
|
+
bin_dir = File.join(@gemhome, 'bin')
|
187
|
+
@cmd.install_default_bundler_gem bin_dir
|
170
188
|
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
spec = Gem::Specification.load(default_spec_path)
|
189
|
+
bundler_spec = Gem::Specification.load("bundler/bundler.gemspec")
|
190
|
+
default_spec_path = File.join(Gem.default_specifications_dir, "#{bundler_spec.full_name}.gemspec")
|
191
|
+
spec = Gem::Specification.load(default_spec_path)
|
175
192
|
|
176
|
-
|
177
|
-
|
193
|
+
spec.executables.each do |e|
|
194
|
+
if Gem.win_platform?
|
195
|
+
assert_path_exists File.join(bin_dir, "#{e}.bat")
|
178
196
|
end
|
197
|
+
|
198
|
+
assert_path_exists File.join bin_dir, e
|
179
199
|
end
|
180
200
|
|
181
|
-
default_dir = Gem
|
201
|
+
default_dir = Gem.default_specifications_dir
|
182
202
|
|
183
203
|
# expect to remove other versions of bundler gemspecs on default specification directory.
|
184
204
|
refute_path_exists File.join(default_dir, "bundler-1.15.4.gemspec")
|
185
205
|
assert_path_exists File.join(default_dir, "bundler-#{BUNDLER_VERS}.gemspec")
|
186
206
|
|
187
207
|
# expect to not remove bundler-* gemspecs.
|
188
|
-
assert_path_exists File.join(Gem.
|
208
|
+
assert_path_exists File.join(Gem.dir, "specifications", "bundler-audit-1.0.0.gemspec")
|
189
209
|
|
190
210
|
# expect to remove normal gem that was same version. because it's promoted default gems.
|
191
|
-
refute_path_exists File.join(Gem.
|
211
|
+
refute_path_exists File.join(Gem.dir, "specifications", "bundler-#{BUNDLER_VERS}.gemspec")
|
212
|
+
|
213
|
+
assert_path_exists "#{Gem.dir}/gems/bundler-#{BUNDLER_VERS}"
|
214
|
+
assert_path_exists "#{Gem.dir}/gems/bundler-1.15.4"
|
215
|
+
assert_path_exists "#{Gem.dir}/gems/bundler-audit-1.0.0"
|
216
|
+
end
|
192
217
|
|
193
|
-
|
194
|
-
|
218
|
+
def test_install_default_bundler_gem_with_force_flag
|
219
|
+
@cmd.extend FileUtils
|
220
|
+
|
221
|
+
bin_dir = File.join(@gemhome, 'bin')
|
222
|
+
bundle_bin = File.join(bin_dir, 'bundle')
|
195
223
|
|
196
|
-
|
197
|
-
|
224
|
+
write_file bundle_bin do |f|
|
225
|
+
f.puts '#!/usr/bin/ruby'
|
226
|
+
f.puts ''
|
227
|
+
f.puts 'echo "hello"'
|
228
|
+
end
|
198
229
|
|
199
|
-
|
230
|
+
bindir(bin_dir) do
|
231
|
+
@cmd.options[:force] = true
|
200
232
|
|
201
|
-
|
202
|
-
|
203
|
-
|
233
|
+
@cmd.install_default_bundler_gem bin_dir
|
234
|
+
|
235
|
+
bundler_spec = Gem::Specification.load("bundler/bundler.gemspec")
|
236
|
+
default_spec_path = File.join(Gem.default_specifications_dir, "#{bundler_spec.full_name}.gemspec")
|
237
|
+
spec = Gem::Specification.load(default_spec_path)
|
238
|
+
|
239
|
+
spec.executables.each do |e|
|
240
|
+
if Gem.win_platform?
|
241
|
+
assert_path_exists File.join(bin_dir, "#{e}.bat")
|
242
|
+
end
|
243
|
+
|
244
|
+
assert_path_exists File.join bin_dir, e
|
245
|
+
end
|
246
|
+
end
|
247
|
+
end
|
204
248
|
|
205
249
|
def test_remove_old_lib_files
|
206
250
|
lib = File.join @install_dir, 'lib'
|
207
251
|
lib_rubygems = File.join lib, 'rubygems'
|
208
252
|
lib_bundler = File.join lib, 'bundler'
|
209
253
|
lib_rubygems_defaults = File.join lib_rubygems, 'defaults'
|
254
|
+
lib_bundler_templates = File.join lib_bundler, 'templates'
|
210
255
|
|
211
|
-
securerandom_rb
|
256
|
+
securerandom_rb = File.join lib, 'securerandom.rb'
|
212
257
|
|
213
258
|
engine_defaults_rb = File.join lib_rubygems_defaults, 'jruby.rb'
|
214
259
|
os_defaults_rb = File.join lib_rubygems_defaults, 'operating_system.rb'
|
215
260
|
|
261
|
+
old_gauntlet_rubygems_rb = File.join lib, 'gauntlet_rubygems.rb'
|
262
|
+
|
216
263
|
old_builder_rb = File.join lib_rubygems, 'builder.rb'
|
217
264
|
old_format_rb = File.join lib_rubygems, 'format.rb'
|
218
265
|
old_bundler_c_rb = File.join lib_bundler, 'c.rb'
|
266
|
+
old_bundler_ci = File.join lib_bundler_templates, '.lecacy_ci', 'config.yml'
|
267
|
+
|
268
|
+
files_that_go = [old_gauntlet_rubygems_rb, old_builder_rb, old_format_rb, old_bundler_c_rb, old_bundler_ci]
|
269
|
+
files_that_stay = [securerandom_rb, engine_defaults_rb, os_defaults_rb]
|
219
270
|
|
220
|
-
|
221
|
-
FileUtils.mkdir_p lib_bundler
|
271
|
+
create_dummy_files(files_that_go + files_that_stay)
|
222
272
|
|
223
|
-
|
273
|
+
@cmd.remove_old_lib_files lib
|
274
|
+
|
275
|
+
files_that_go.each {|file| refute_path_exists(file) unless file == old_bundler_ci && RUBY_ENGINE == "truffleruby" } # https://github.com/oracle/truffleruby/issues/2116
|
224
276
|
|
225
|
-
|
226
|
-
|
227
|
-
File.open old_bundler_c_rb, 'w' do |io| io.puts '# c.rb' end
|
277
|
+
files_that_stay.each {|file| assert_path_exists file }
|
278
|
+
end
|
228
279
|
|
229
|
-
|
230
|
-
File.
|
280
|
+
def test_remove_old_man_files
|
281
|
+
man = File.join @install_dir, 'man'
|
231
282
|
|
232
|
-
|
283
|
+
ruby_1 = File.join man, 'man1', 'ruby.1'
|
284
|
+
bundle_b_1 = File.join man, 'man1', 'bundle-b.1'
|
285
|
+
bundle_b_1_ronn = File.join man, 'man1', 'bundle-b.1.ronn'
|
286
|
+
bundle_b_1_txt = File.join man, 'man1', 'bundle-b.1.txt'
|
287
|
+
gemfile_5 = File.join man, 'man5', 'gemfile.5'
|
288
|
+
gemfile_5_ronn = File.join man, 'man5', 'gemfile.5.ronn'
|
289
|
+
gemfile_5_txt = File.join man, 'man5', 'gemfile.5.txt'
|
233
290
|
|
234
|
-
|
235
|
-
|
236
|
-
refute_path_exists old_bundler_c_rb if Gem::USE_BUNDLER_FOR_GEMDEPS
|
291
|
+
files_that_go = [bundle_b_1, bundle_b_1_txt, bundle_b_1_ronn, gemfile_5, gemfile_5_txt, gemfile_5_ronn]
|
292
|
+
files_that_stay = [ruby_1]
|
237
293
|
|
238
|
-
|
239
|
-
|
240
|
-
|
294
|
+
create_dummy_files(files_that_go + files_that_stay)
|
295
|
+
|
296
|
+
@cmd.remove_old_man_files man
|
297
|
+
|
298
|
+
files_that_go.each {|file| refute_path_exists file }
|
299
|
+
|
300
|
+
files_that_stay.each {|file| assert_path_exists file }
|
241
301
|
end
|
242
302
|
|
243
303
|
def test_show_release_notes
|
@@ -246,26 +306,24 @@ class TestGemCommandsSetupCommand < Gem::TestCase
|
|
246
306
|
|
247
307
|
@cmd.options[:previous_version] = Gem::Version.new '2.0.2'
|
248
308
|
|
249
|
-
File.open '
|
250
|
-
io.puts <<-
|
251
|
-
#
|
252
|
-
|
253
|
-
=== #{Gem::VERSION} / 2013-03-26
|
309
|
+
File.open 'CHANGELOG.md', 'w' do |io|
|
310
|
+
io.puts <<-HISTORY_TXT
|
311
|
+
# #{Gem::VERSION} / 2013-03-26
|
254
312
|
|
255
|
-
|
313
|
+
## Bug fixes:
|
256
314
|
* Fixed release note display for LANG=C when installing rubygems
|
257
315
|
* π is tasty
|
258
316
|
|
259
|
-
|
317
|
+
# 2.0.2 / 2013-03-06
|
260
318
|
|
261
|
-
|
319
|
+
## Bug fixes:
|
262
320
|
* Other bugs fixed
|
263
321
|
|
264
|
-
|
322
|
+
# 2.0.1 / 2013-03-05
|
265
323
|
|
266
|
-
|
324
|
+
## Bug fixes:
|
267
325
|
* Yet more bugs fixed
|
268
|
-
|
326
|
+
HISTORY_TXT
|
269
327
|
end
|
270
328
|
|
271
329
|
use_ui @ui do
|
@@ -273,17 +331,12 @@ class TestGemCommandsSetupCommand < Gem::TestCase
|
|
273
331
|
end
|
274
332
|
|
275
333
|
expected = <<-EXPECTED
|
276
|
-
|
334
|
+
# #{Gem::VERSION} / 2013-03-26
|
277
335
|
|
278
|
-
|
336
|
+
## Bug fixes:
|
279
337
|
* Fixed release note display for LANG=C when installing rubygems
|
280
338
|
* π is tasty
|
281
339
|
|
282
|
-
=== 2.0.2 / 2013-03-06
|
283
|
-
|
284
|
-
* Bug fixes:
|
285
|
-
* Other bugs fixed
|
286
|
-
|
287
340
|
EXPECTED
|
288
341
|
|
289
342
|
output = @ui.output
|
@@ -294,4 +347,51 @@ class TestGemCommandsSetupCommand < Gem::TestCase
|
|
294
347
|
@ui.outs.set_encoding @default_external if @default_external
|
295
348
|
end
|
296
349
|
|
297
|
-
|
350
|
+
private
|
351
|
+
|
352
|
+
def create_dummy_files(list)
|
353
|
+
list.each do |file|
|
354
|
+
FileUtils.mkdir_p File.dirname(file)
|
355
|
+
|
356
|
+
File.open file, 'w' do |io|
|
357
|
+
io.puts "# #{File.basename(file)}"
|
358
|
+
end
|
359
|
+
end
|
360
|
+
end
|
361
|
+
|
362
|
+
def gem_install(name)
|
363
|
+
gem = util_spec name do |s|
|
364
|
+
s.executables = [name]
|
365
|
+
s.files = %W[bin/#{name}]
|
366
|
+
end
|
367
|
+
write_file File.join @tempdir, 'bin', name do |f|
|
368
|
+
f.puts '#!/usr/bin/ruby'
|
369
|
+
end
|
370
|
+
install_gem gem
|
371
|
+
File.join @gemhome, 'bin', name
|
372
|
+
end
|
373
|
+
|
374
|
+
def gem_install_with_plugin(name)
|
375
|
+
gem = util_spec name do |s|
|
376
|
+
s.files = %W[lib/rubygems_plugin.rb]
|
377
|
+
end
|
378
|
+
write_file File.join @tempdir, 'lib', 'rubygems_plugin.rb' do |f|
|
379
|
+
f.puts "require '#{gem.plugins.first}'"
|
380
|
+
end
|
381
|
+
install_gem gem
|
382
|
+
|
383
|
+
File.join Gem.plugindir, "#{name}_plugin.rb"
|
384
|
+
end
|
385
|
+
|
386
|
+
def default_gem_bin_path
|
387
|
+
File.join @install_dir, 'bin', 'gem'
|
388
|
+
end
|
389
|
+
|
390
|
+
def default_bundle_bin_path
|
391
|
+
File.join @install_dir, 'bin', 'bundle'
|
392
|
+
end
|
393
|
+
|
394
|
+
def default_bundler_bin_path
|
395
|
+
File.join @install_dir, 'bin', 'bundler'
|
396
|
+
end
|
397
|
+
end unless Gem.java_platform?
|