rubygems-update 3.1.6 → 3.3.22
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} +1452 -514
- data/CODE_OF_CONDUCT.md +55 -19
- data/CONTRIBUTING.md +74 -27
- data/Manifest.txt +154 -117
- data/POLICIES.md +27 -19
- data/README.md +10 -8
- data/UPGRADING.md +5 -81
- data/bin/gem +3 -8
- data/bin/update_rubygems +5 -5
- data/bundler/CHANGELOG.md +2358 -1430
- data/bundler/README.md +7 -9
- data/bundler/UPGRADING.md +27 -34
- data/bundler/bundler.gemspec +8 -11
- data/bundler/exe/bundle +10 -8
- data/bundler/exe/bundler +1 -1
- data/bundler/lib/bundler/.document +1 -0
- data/bundler/lib/bundler/build_metadata.rb +4 -12
- 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 +3 -8
- data/bundler/lib/bundler/cli/check.rb +4 -2
- data/bundler/lib/bundler/cli/clean.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +31 -3
- data/bundler/lib/bundler/cli/config.rb +10 -1
- data/bundler/lib/bundler/cli/console.rb +1 -1
- data/bundler/lib/bundler/cli/doctor.rb +25 -6
- data/bundler/lib/bundler/cli/exec.rb +5 -10
- data/bundler/lib/bundler/cli/fund.rb +36 -0
- data/bundler/lib/bundler/cli/gem.rb +219 -28
- data/bundler/lib/bundler/cli/info.rb +38 -6
- data/bundler/lib/bundler/cli/init.rb +3 -3
- data/bundler/lib/bundler/cli/inject.rb +1 -1
- data/bundler/lib/bundler/cli/install.rb +25 -54
- data/bundler/lib/bundler/cli/issue.rb +5 -4
- data/bundler/lib/bundler/cli/list.rb +19 -11
- data/bundler/lib/bundler/cli/lock.rb +5 -1
- data/bundler/lib/bundler/cli/open.rb +1 -2
- data/bundler/lib/bundler/cli/outdated.rb +105 -76
- data/bundler/lib/bundler/cli/platform.rb +2 -2
- data/bundler/lib/bundler/cli/plugin.rb +10 -0
- data/bundler/lib/bundler/cli/pristine.rb +5 -0
- data/bundler/lib/bundler/cli/remove.rb +1 -2
- data/bundler/lib/bundler/cli/show.rb +2 -2
- data/bundler/lib/bundler/cli/update.rb +20 -9
- data/bundler/lib/bundler/cli.rb +106 -83
- data/bundler/lib/bundler/compact_index_client/cache.rb +6 -23
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
- data/bundler/lib/bundler/compact_index_client/updater.rb +29 -25
- data/bundler/lib/bundler/compact_index_client.rb +3 -9
- data/bundler/lib/bundler/current_ruby.rb +17 -6
- data/bundler/lib/bundler/definition.rb +297 -396
- data/bundler/lib/bundler/dep_proxy.rb +16 -9
- data/bundler/lib/bundler/dependency.rb +22 -77
- data/bundler/lib/bundler/digest.rb +71 -0
- data/bundler/lib/bundler/dsl.rb +76 -83
- data/bundler/lib/bundler/endpoint_specification.rb +16 -14
- data/bundler/lib/bundler/env.rb +2 -2
- data/bundler/lib/bundler/environment_preserver.rb +29 -2
- data/bundler/lib/bundler/errors.rb +30 -3
- data/bundler/lib/bundler/feature_flag.rb +0 -9
- data/bundler/lib/bundler/fetcher/base.rb +7 -9
- data/bundler/lib/bundler/fetcher/compact_index.rb +11 -16
- data/bundler/lib/bundler/fetcher/downloader.rb +10 -7
- data/bundler/lib/bundler/fetcher/index.rb +2 -30
- data/bundler/lib/bundler/fetcher.rb +24 -25
- data/bundler/lib/bundler/friendly_errors.rb +46 -47
- data/bundler/lib/bundler/gem_helper.rb +53 -31
- data/bundler/lib/bundler/gem_helpers.rb +43 -24
- data/bundler/lib/bundler/gem_version_promoter.rb +10 -20
- data/bundler/lib/bundler/graph.rb +1 -1
- data/bundler/lib/bundler/index.rb +19 -25
- data/bundler/lib/bundler/injector.rb +38 -6
- data/bundler/lib/bundler/inline.rb +4 -13
- data/bundler/lib/bundler/installer/gem_installer.rb +19 -24
- data/bundler/lib/bundler/installer/parallel_installer.rb +46 -25
- data/bundler/lib/bundler/installer/standalone.rb +58 -11
- data/bundler/lib/bundler/installer.rb +51 -81
- data/bundler/lib/bundler/lazy_specification.rb +79 -36
- data/bundler/lib/bundler/lockfile_generator.rb +3 -3
- data/bundler/lib/bundler/lockfile_parser.rb +19 -44
- data/bundler/lib/bundler/man/.document +1 -0
- data/bundler/{man → lib/bundler/man}/bundle-add.1 +21 -5
- data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +16 -4
- 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 +7 -1
- data/bundler/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +7 -0
- data/bundler/{man → lib/bundler/man}/bundle-check.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-clean.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-config.1 +65 -47
- data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +74 -65
- data/bundler/lib/bundler/man/bundle-console.1 +53 -0
- data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
- data/bundler/{man → lib/bundler/man}/bundle-doctor.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-exec.1 +2 -2
- data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-gem.1 +38 -3
- data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +46 -7
- data/bundler/lib/bundler/man/bundle-help.1 +13 -0
- data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
- data/bundler/{man → lib/bundler/man}/bundle-info.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-init.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-inject.1 +5 -2
- data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +3 -1
- data/bundler/{man → lib/bundler/man}/bundle-install.1 +35 -4
- data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +33 -5
- 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 → lib/bundler/man}/bundle-open.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-outdated.1 +3 -10
- data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +1 -10
- data/bundler/{man → lib/bundler/man}/bundle-platform.1 +16 -6
- data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +14 -7
- data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
- data/bundler/{man → lib/bundler/man}/bundle-pristine.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-remove.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-show.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-update.1 +5 -5
- data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +5 -4
- data/bundler/lib/bundler/man/bundle-version.1 +35 -0
- data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
- data/bundler/{man → lib/bundler/man}/bundle-viz.1 +4 -1
- data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +2 -0
- data/bundler/{man → lib/bundler/man}/bundle.1 +15 -10
- data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +12 -7
- data/bundler/{man → lib/bundler/man}/gemfile.5 +106 -80
- data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +94 -83
- data/bundler/{man → lib/bundler/man}/index.txt +4 -0
- data/bundler/lib/bundler/match_metadata.rb +13 -0
- data/bundler/lib/bundler/match_platform.rb +0 -1
- data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
- data/bundler/lib/bundler/mirror.rb +2 -2
- data/bundler/lib/bundler/plugin/api/source.rb +25 -9
- data/bundler/lib/bundler/plugin/dsl.rb +1 -1
- data/bundler/lib/bundler/plugin/index.rb +13 -1
- data/bundler/lib/bundler/plugin/installer/git.rb +0 -4
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -5
- data/bundler/lib/bundler/plugin/installer.rb +11 -11
- data/bundler/lib/bundler/plugin/source_list.rb +5 -1
- data/bundler/lib/bundler/plugin.rb +58 -11
- data/bundler/lib/bundler/process_lock.rb +1 -1
- data/bundler/lib/bundler/remote_specification.rb +11 -6
- data/bundler/lib/bundler/resolver/base.rb +50 -0
- data/bundler/lib/bundler/resolver/spec_group.rb +64 -57
- data/bundler/lib/bundler/resolver.rb +234 -230
- data/bundler/lib/bundler/retry.rb +2 -2
- data/bundler/lib/bundler/ruby_dsl.rb +1 -1
- data/bundler/lib/bundler/ruby_version.rb +6 -19
- data/bundler/lib/bundler/rubygems_ext.rb +194 -33
- data/bundler/lib/bundler/rubygems_gem_installer.rb +87 -16
- data/bundler/lib/bundler/rubygems_integration.rb +71 -153
- data/bundler/lib/bundler/runtime.rb +22 -26
- data/bundler/lib/bundler/self_manager.rb +168 -0
- data/bundler/lib/bundler/settings.rb +145 -66
- data/bundler/lib/bundler/setup.rb +2 -2
- data/bundler/lib/bundler/shared_helpers.rb +17 -32
- data/bundler/lib/bundler/similarity_detector.rb +1 -1
- data/bundler/lib/bundler/source/git/git_proxy.rb +88 -84
- data/bundler/lib/bundler/source/git.rb +50 -32
- data/bundler/lib/bundler/source/metadata.rb +3 -7
- data/bundler/lib/bundler/source/path/installer.rb +10 -10
- data/bundler/lib/bundler/source/path.rb +10 -4
- data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
- data/bundler/lib/bundler/source/rubygems.rb +201 -179
- data/bundler/lib/bundler/source/rubygems_aggregate.rb +68 -0
- data/bundler/lib/bundler/source.rb +25 -5
- data/bundler/lib/bundler/source_list.rb +105 -63
- data/bundler/lib/bundler/source_map.rb +71 -0
- data/bundler/lib/bundler/spec_set.rb +62 -57
- data/bundler/lib/bundler/stub_specification.rb +30 -10
- data/bundler/lib/bundler/templates/Executable +2 -4
- data/bundler/lib/bundler/templates/Executable.bundler +8 -8
- data/bundler/lib/bundler/templates/Executable.standalone +2 -4
- data/bundler/lib/bundler/templates/Gemfile +0 -2
- data/bundler/lib/bundler/templates/gems.rb +0 -3
- 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 +12 -1
- data/bundler/lib/bundler/templates/newgem/README.md.tt +9 -14
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +32 -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 +27 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
- data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +27 -17
- data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
- data/bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -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/standard.yml.tt +3 -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/{newgem_test.rb.tt → minitest/test_newgem.rb.tt} +3 -1
- 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 +6 -6
- data/bundler/lib/bundler/uri_credentials_filter.rb +3 -1
- data/bundler/lib/bundler/vendor/.document +1 -0
- data/bundler/lib/bundler/vendor/connection_pool/LICENSE +20 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +19 -21
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +57 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +39 -74
- data/bundler/lib/bundler/vendor/fileutils/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/molinillo/LICENSE +9 -0
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +7 -0
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +11 -5
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +37 -5
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +34 -28
- 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 +12 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +49 -47
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +82 -189
- data/bundler/lib/bundler/vendor/thor/LICENSE.md +20 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +9 -7
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +1 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +7 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +6 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +10 -5
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +5 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +28 -9
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +27 -6
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +5 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor.rb +5 -13
- data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
- data/bundler/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +452 -0
- data/bundler/lib/bundler/vendor/uri/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +17 -80
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +0 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +5 -6
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +0 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +0 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +0 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +1 -14
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +1 -12
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +84 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +22 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +0 -1
- data/bundler/lib/bundler/vendored_persistent.rb +0 -7
- data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
- data/bundler/lib/bundler/vendored_tsort.rb +4 -0
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler/worker.rb +20 -5
- data/bundler/lib/bundler/yaml_serializer.rb +1 -1
- data/bundler/lib/bundler.rb +79 -47
- data/hide_lib_for_update/note.txt +0 -4
- data/lib/rubygems/available_set.rb +7 -9
- data/lib/rubygems/basic_specification.rb +23 -21
- data/lib/rubygems/bundler_version_finder.rb +26 -53
- data/lib/rubygems/command.rb +48 -45
- data/lib/rubygems/command_manager.rb +20 -14
- data/lib/rubygems/commands/build_command.rb +47 -27
- data/lib/rubygems/commands/cert_command.rb +78 -75
- data/lib/rubygems/commands/check_command.rb +20 -22
- data/lib/rubygems/commands/cleanup_command.rb +30 -26
- data/lib/rubygems/commands/contents_command.rb +16 -18
- data/lib/rubygems/commands/dependency_command.rb +39 -51
- data/lib/rubygems/commands/environment_command.rb +11 -10
- data/lib/rubygems/commands/fetch_command.rb +33 -16
- data/lib/rubygems/commands/generate_index_command.rb +17 -19
- data/lib/rubygems/commands/help_command.rb +6 -6
- data/lib/rubygems/commands/info_command.rb +10 -7
- data/lib/rubygems/commands/install_command.rb +29 -27
- data/lib/rubygems/commands/list_command.rb +9 -8
- data/lib/rubygems/commands/lock_command.rb +5 -7
- data/lib/rubygems/commands/mirror_command.rb +3 -5
- data/lib/rubygems/commands/open_command.rb +10 -14
- data/lib/rubygems/commands/outdated_command.rb +5 -7
- data/lib/rubygems/commands/owner_command.rb +26 -16
- data/lib/rubygems/commands/pristine_command.rb +61 -49
- data/lib/rubygems/commands/push_command.rb +22 -59
- data/lib/rubygems/commands/query_command.rb +21 -351
- data/lib/rubygems/commands/rdoc_command.rb +23 -25
- data/lib/rubygems/commands/search_command.rb +8 -8
- data/lib/rubygems/commands/server_command.rb +16 -77
- data/lib/rubygems/commands/setup_command.rb +255 -229
- data/lib/rubygems/commands/signin_command.rb +9 -11
- data/lib/rubygems/commands/signout_command.rb +7 -9
- data/lib/rubygems/commands/sources_command.rb +27 -25
- data/lib/rubygems/commands/specification_command.rb +25 -21
- data/lib/rubygems/commands/stale_command.rb +3 -5
- data/lib/rubygems/commands/uninstall_command.rb +41 -43
- data/lib/rubygems/commands/unpack_command.rb +13 -15
- data/lib/rubygems/commands/update_command.rb +132 -74
- data/lib/rubygems/commands/which_command.rb +7 -9
- data/lib/rubygems/commands/yank_command.rb +16 -19
- data/lib/rubygems/compatibility.rb +4 -2
- data/lib/rubygems/config_file.rb +42 -26
- data/lib/rubygems/core_ext/kernel_gem.rb +1 -1
- data/lib/rubygems/core_ext/kernel_require.rb +6 -3
- data/lib/rubygems/core_ext/kernel_warn.rb +12 -13
- data/lib/rubygems/core_ext/tcpsocket_init.rb +52 -0
- data/lib/rubygems/defaults.rb +108 -32
- data/lib/rubygems/dependency.rb +21 -22
- data/lib/rubygems/dependency_installer.rb +19 -91
- data/lib/rubygems/dependency_list.rb +13 -15
- data/lib/rubygems/deprecate.rb +102 -8
- data/lib/rubygems/doctor.rb +22 -22
- data/lib/rubygems/errors.rb +6 -21
- data/lib/rubygems/exceptions.rb +33 -34
- data/lib/rubygems/ext/build_error.rb +2 -0
- data/lib/rubygems/ext/builder.rb +48 -54
- data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +23 -0
- data/lib/rubygems/ext/cargo_builder.rb +321 -0
- 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 +42 -66
- data/lib/rubygems/ext/rake_builder.rb +7 -10
- data/lib/rubygems/ext.rb +7 -6
- data/lib/rubygems/gem_runner.rb +15 -26
- data/lib/rubygems/gemcutter_utilities.rb +153 -32
- data/lib/rubygems/indexer.rb +30 -49
- data/lib/rubygems/install_default_message.rb +2 -2
- data/lib/rubygems/install_message.rb +2 -2
- data/lib/rubygems/install_update_options.rb +73 -64
- data/lib/rubygems/installer.rb +194 -151
- data/lib/rubygems/installer_uninstaller_utils.rb +29 -0
- data/lib/rubygems/local_remote_options.rb +22 -24
- data/lib/rubygems/mock_gem_ui.rb +2 -8
- data/lib/rubygems/name_tuple.rb +9 -14
- data/lib/rubygems/openssl.rb +7 -0
- data/lib/rubygems/optparse/.document +1 -0
- data/lib/rubygems/optparse/COPYING +56 -0
- data/lib/rubygems/optparse/lib/optionparser.rb +2 -0
- data/lib/rubygems/optparse/lib/optparse/ac.rb +54 -0
- data/lib/rubygems/optparse/lib/optparse/date.rb +18 -0
- data/lib/rubygems/optparse/lib/optparse/kwargs.rb +22 -0
- data/lib/rubygems/optparse/lib/optparse/shellwords.rb +7 -0
- data/lib/rubygems/optparse/lib/optparse/time.rb +11 -0
- data/lib/rubygems/optparse/lib/optparse/uri.rb +7 -0
- data/lib/rubygems/optparse/lib/optparse/version.rb +71 -0
- data/lib/rubygems/optparse/lib/optparse.rb +2303 -0
- data/lib/rubygems/optparse.rb +3 -0
- data/lib/rubygems/package/digest_io.rb +0 -2
- data/lib/rubygems/package/file_source.rb +2 -4
- data/lib/rubygems/package/io_source.rb +4 -2
- data/lib/rubygems/package/old.rb +9 -11
- data/lib/rubygems/package/tar_header.rb +54 -56
- data/lib/rubygems/package/tar_reader/entry.rb +2 -5
- data/lib/rubygems/package/tar_reader.rb +1 -4
- data/lib/rubygems/package/tar_writer.rb +8 -18
- data/lib/rubygems/package.rb +101 -117
- data/lib/rubygems/package_task.rb +5 -11
- data/lib/rubygems/path_support.rb +2 -9
- data/lib/rubygems/platform.rb +101 -76
- data/lib/rubygems/psych_tree.rb +1 -3
- data/lib/rubygems/query_utils.rb +351 -0
- data/lib/rubygems/rdoc.rb +2 -14
- data/lib/rubygems/remote_fetcher.rb +48 -74
- data/lib/rubygems/request/connection_pools.rb +6 -10
- data/lib/rubygems/request/http_pool.rb +2 -4
- data/lib/rubygems/request/https_pool.rb +0 -2
- data/lib/rubygems/request.rb +26 -31
- data/lib/rubygems/request_set/gem_dependency_api.rb +23 -25
- data/lib/rubygems/request_set/lockfile/parser.rb +26 -28
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -7
- data/lib/rubygems/request_set/lockfile.rb +17 -21
- data/lib/rubygems/request_set.rb +27 -40
- data/lib/rubygems/requirement.rb +28 -48
- data/lib/rubygems/resolver/activation_request.rb +12 -6
- data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
- data/lib/rubygems/resolver/api_set.rb +32 -25
- data/lib/rubygems/resolver/api_specification.rb +29 -15
- data/lib/rubygems/resolver/best_set.rb +7 -9
- data/lib/rubygems/resolver/composed_set.rb +3 -5
- data/lib/rubygems/resolver/conflict.rb +12 -14
- data/lib/rubygems/resolver/current_set.rb +0 -2
- data/lib/rubygems/resolver/dependency_request.rb +3 -5
- data/lib/rubygems/resolver/git_set.rb +2 -4
- data/lib/rubygems/resolver/git_specification.rb +6 -8
- data/lib/rubygems/resolver/index_set.rb +4 -6
- data/lib/rubygems/resolver/index_specification.rb +38 -7
- data/lib/rubygems/resolver/installed_specification.rb +4 -6
- data/lib/rubygems/resolver/installer_set.rb +66 -24
- data/lib/rubygems/resolver/local_specification.rb +2 -4
- data/lib/rubygems/resolver/lock_set.rb +6 -8
- data/lib/rubygems/resolver/lock_specification.rb +4 -6
- data/lib/rubygems/resolver/molinillo/LICENSE +9 -0
- 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/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/dependency_graph.rb +41 -8
- 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 +13 -1
- 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/molinillo/lib/molinillo.rb +6 -5
- data/lib/rubygems/resolver/molinillo.rb +1 -1
- data/lib/rubygems/resolver/requirement_list.rb +0 -2
- data/lib/rubygems/resolver/set.rb +0 -3
- data/lib/rubygems/resolver/source_set.rb +0 -2
- data/lib/rubygems/resolver/spec_specification.rb +14 -2
- data/lib/rubygems/resolver/specification.rb +14 -4
- data/lib/rubygems/resolver/stats.rb +0 -2
- data/lib/rubygems/resolver/vendor_set.rb +1 -3
- data/lib/rubygems/resolver/vendor_specification.rb +3 -5
- data/lib/rubygems/resolver.rb +53 -51
- data/lib/rubygems/s3_uri_signer.rb +7 -15
- data/lib/rubygems/safe_yaml.rb +14 -16
- data/lib/rubygems/security/policies.rb +11 -11
- data/lib/rubygems/security/policy.rb +25 -29
- data/lib/rubygems/security/signer.rb +13 -16
- data/lib/rubygems/security/trust_dir.rb +4 -5
- data/lib/rubygems/security.rb +103 -69
- data/lib/rubygems/security_option.rb +7 -7
- data/lib/rubygems/source/git.rb +30 -30
- data/lib/rubygems/source/installed.rb +1 -3
- data/lib/rubygems/source/local.rb +4 -6
- data/lib/rubygems/source/lock.rb +0 -2
- data/lib/rubygems/source/specific_file.rb +1 -3
- data/lib/rubygems/source/vendor.rb +0 -2
- data/lib/rubygems/source.rb +44 -38
- data/lib/rubygems/source_list.rb +9 -16
- data/lib/rubygems/spec_fetcher.rb +49 -48
- data/lib/rubygems/specification.rb +338 -295
- data/lib/rubygems/specification_policy.rb +112 -61
- data/lib/rubygems/stub_specification.rb +21 -28
- data/lib/rubygems/text.rb +21 -20
- data/lib/rubygems/tsort/.document +1 -0
- data/lib/rubygems/tsort/LICENSE.txt +22 -0
- data/lib/rubygems/tsort/lib/tsort.rb +454 -0
- data/lib/rubygems/tsort.rb +3 -0
- data/lib/rubygems/uninstaller.rb +98 -45
- data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
- data/lib/rubygems/uri.rb +126 -0
- data/lib/rubygems/uri_formatter.rb +2 -3
- data/lib/rubygems/user_interaction.rb +43 -54
- data/lib/rubygems/util/licenses.rb +115 -10
- data/lib/rubygems/util/list.rb +0 -2
- data/lib/rubygems/util.rb +18 -12
- data/lib/rubygems/validator.rb +6 -8
- data/lib/rubygems/version.rb +29 -20
- data/lib/rubygems/version_option.rb +11 -5
- data/lib/rubygems.rb +192 -289
- data/rubygems-update.gemspec +4 -4
- data/setup.rb +11 -22
- data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
- 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/data/pry-0.4.7.gemspec.rz +0 -0
- data/test/rubygems/encrypted_private_key.pem +26 -26
- data/{lib/rubygems/test_case.rb → test/rubygems/helper.rb} +380 -314
- data/{lib → test}/rubygems/installer_test_case.rb +38 -24
- data/{lib → test}/rubygems/package/tar_test_case.rb +4 -6
- data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
- data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
- data/test/rubygems/plugin/exception/rubygems_plugin.rb +1 -1
- data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -2
- data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
- data/test/rubygems/private_ec_key.pem +9 -0
- data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
- data/test/rubygems/rubygems_plugin.rb +2 -4
- data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +4 -6
- data/test/rubygems/test_bundled_ca.rb +43 -50
- data/test/rubygems/test_config.rb +5 -7
- data/test/rubygems/test_deprecate.rb +87 -10
- data/test/rubygems/test_exit.rb +11 -0
- data/test/rubygems/test_gem.rb +719 -639
- data/test/rubygems/test_gem_available_set.rb +24 -26
- data/test/rubygems/test_gem_bundler_version_finder.rb +37 -44
- data/test/rubygems/test_gem_command.rb +78 -49
- data/test/rubygems/test_gem_command_manager.rb +98 -35
- data/test/rubygems/test_gem_commands_build_command.rb +275 -57
- data/test/rubygems/test_gem_commands_cert_command.rb +180 -125
- data/test/rubygems/test_gem_commands_check_command.rb +9 -11
- data/test/rubygems/test_gem_commands_cleanup_command.rb +78 -69
- data/test/rubygems/test_gem_commands_contents_command.rb +73 -42
- data/test/rubygems/test_gem_commands_dependency_command.rb +38 -40
- data/test/rubygems/test_gem_commands_environment_command.rb +60 -38
- data/test/rubygems/test_gem_commands_fetch_command.rb +163 -32
- data/test/rubygems/test_gem_commands_generate_index_command.rb +8 -14
- data/test/rubygems/test_gem_commands_help_command.rb +34 -16
- data/test/rubygems/test_gem_commands_info_command.rb +33 -9
- data/test/rubygems/test_gem_commands_install_command.rb +401 -198
- data/test/rubygems/test_gem_commands_list_command.rb +5 -7
- data/test/rubygems/test_gem_commands_lock_command.rb +11 -13
- data/test/rubygems/test_gem_commands_mirror.rb +3 -5
- data/test/rubygems/test_gem_commands_open_command.rb +16 -19
- data/test/rubygems/test_gem_commands_outdated_command.rb +23 -7
- data/test/rubygems/test_gem_commands_owner_command.rb +100 -46
- data/test/rubygems/test_gem_commands_pristine_command.rb +131 -99
- data/test/rubygems/test_gem_commands_push_command.rb +134 -66
- data/test/rubygems/test_gem_commands_query_command.rb +91 -91
- data/test/rubygems/test_gem_commands_search_command.rb +2 -4
- data/test/rubygems/test_gem_commands_server_command.rb +6 -50
- data/test/rubygems/test_gem_commands_setup_command.rb +288 -179
- data/test/rubygems/test_gem_commands_signin_command.rb +162 -28
- data/test/rubygems/test_gem_commands_signout_command.rb +3 -10
- data/test/rubygems/test_gem_commands_sources_command.rb +139 -32
- data/test/rubygems/test_gem_commands_specification_command.rb +81 -55
- data/test/rubygems/test_gem_commands_stale_command.rb +4 -6
- data/test/rubygems/test_gem_commands_uninstall_command.rb +80 -82
- data/test/rubygems/test_gem_commands_unpack_command.rb +32 -34
- data/test/rubygems/test_gem_commands_update_command.rb +335 -88
- data/test/rubygems/test_gem_commands_which_command.rb +12 -14
- data/test/rubygems/test_gem_commands_yank_command.rb +80 -44
- data/test/rubygems/test_gem_config_file.rb +114 -97
- data/test/rubygems/test_gem_dependency.rb +87 -87
- data/test/rubygems/test_gem_dependency_installer.rb +277 -391
- data/test/rubygems/test_gem_dependency_list.rb +57 -59
- data/test/rubygems/test_gem_dependency_resolution_error.rb +5 -7
- data/test/rubygems/test_gem_doctor.rb +73 -47
- data/test/rubygems/test_gem_ext_builder.rb +115 -109
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.lock +243 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.toml +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/build.rb +21 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/src/lib.rs +27 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +243 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/build.rb +21 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +8 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +39 -0
- data/test/rubygems/test_gem_ext_cargo_builder.rb +178 -0
- data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +33 -0
- data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +75 -0
- data/test/rubygems/test_gem_ext_cmake_builder.rb +31 -38
- data/test/rubygems/test_gem_ext_configure_builder.rb +23 -39
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +66 -82
- data/test/rubygems/test_gem_ext_rake_builder.rb +49 -32
- data/test/rubygems/test_gem_gem_runner.rb +51 -8
- data/test/rubygems/test_gem_gemcutter_utilities.rb +87 -76
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -6
- data/test/rubygems/test_gem_indexer.rb +62 -64
- data/test/rubygems/test_gem_install_update_options.rb +31 -21
- data/test/rubygems/test_gem_installer.rb +798 -491
- data/test/rubygems/test_gem_local_remote_options.rb +11 -13
- data/test/rubygems/test_gem_name_tuple.rb +4 -6
- data/test/rubygems/test_gem_package.rb +318 -283
- data/test/rubygems/test_gem_package_old.rb +18 -20
- data/test/rubygems/test_gem_package_tar_header.rb +64 -47
- data/test/rubygems/test_gem_package_tar_reader.rb +8 -10
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +18 -20
- data/test/rubygems/test_gem_package_tar_writer.rb +96 -100
- data/test/rubygems/test_gem_package_task.rb +58 -25
- data/test/rubygems/test_gem_path_support.rb +15 -21
- data/test/rubygems/test_gem_platform.rb +354 -201
- data/test/rubygems/test_gem_rdoc.rb +19 -21
- data/test/rubygems/test_gem_remote_fetcher.rb +376 -337
- data/test/rubygems/test_gem_request.rb +114 -86
- data/test/rubygems/test_gem_request_connection_pools.rb +30 -34
- data/test/rubygems/test_gem_request_set.rb +123 -124
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +222 -226
- data/test/rubygems/test_gem_request_set_lockfile.rb +93 -95
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +68 -70
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +136 -138
- data/test/rubygems/test_gem_requirement.rb +133 -54
- data/test/rubygems/test_gem_resolver.rb +149 -117
- data/test/rubygems/test_gem_resolver_activation_request.rb +6 -8
- data/test/rubygems/test_gem_resolver_api_set.rb +79 -78
- data/test/rubygems/test_gem_resolver_api_specification.rb +47 -49
- data/test/rubygems/test_gem_resolver_best_set.rb +43 -22
- data/test/rubygems/test_gem_resolver_composed_set.rb +1 -3
- data/test/rubygems/test_gem_resolver_conflict.rb +12 -14
- data/test/rubygems/test_gem_resolver_dependency_request.rb +15 -17
- data/test/rubygems/test_gem_resolver_git_set.rb +22 -24
- data/test/rubygems/test_gem_resolver_git_specification.rb +22 -23
- data/test/rubygems/test_gem_resolver_index_set.rb +14 -16
- data/test/rubygems/test_gem_resolver_index_specification.rb +16 -18
- data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -7
- data/test/rubygems/test_gem_resolver_installer_set.rb +104 -44
- data/test/rubygems/test_gem_resolver_local_specification.rb +7 -9
- data/test/rubygems/test_gem_resolver_lock_set.rb +15 -17
- data/test/rubygems/test_gem_resolver_lock_specification.rb +17 -19
- data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -3
- data/test/rubygems/test_gem_resolver_specification.rb +8 -12
- data/test/rubygems/test_gem_resolver_vendor_set.rb +9 -11
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +10 -12
- data/test/rubygems/test_gem_security.rb +104 -78
- data/test/rubygems/test_gem_security_policy.rb +92 -97
- data/test/rubygems/test_gem_security_signer.rb +45 -47
- data/test/rubygems/test_gem_security_trust_dir.rb +12 -14
- data/test/rubygems/test_gem_silent_ui.rb +46 -42
- data/test/rubygems/test_gem_source.rb +53 -52
- data/test/rubygems/test_gem_source_fetch_problem.rb +16 -8
- data/test/rubygems/test_gem_source_git.rb +69 -69
- data/test/rubygems/test_gem_source_installed.rb +16 -18
- data/test/rubygems/test_gem_source_list.rb +5 -6
- data/test/rubygems/test_gem_source_local.rb +15 -17
- data/test/rubygems/test_gem_source_lock.rb +31 -33
- data/test/rubygems/test_gem_source_specific_file.rb +18 -20
- data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
- data/test/rubygems/test_gem_source_vendor.rb +13 -15
- data/test/rubygems/test_gem_spec_fetcher.rb +74 -67
- data/test/rubygems/test_gem_specification.rb +888 -1024
- data/test/rubygems/test_gem_stream_ui.rb +23 -23
- data/test/rubygems/test_gem_stub_specification.rb +39 -57
- data/test/rubygems/test_gem_text.rb +8 -4
- data/test/rubygems/test_gem_uninstaller.rb +233 -104
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -5
- data/test/rubygems/test_gem_uri.rb +39 -0
- data/test/rubygems/test_gem_uri_formatter.rb +14 -16
- data/test/rubygems/test_gem_util.rb +37 -35
- data/test/rubygems/test_gem_validator.rb +10 -12
- data/test/rubygems/test_gem_version.rb +31 -31
- data/test/rubygems/test_gem_version_option.rb +16 -18
- data/test/rubygems/test_kernel.rb +46 -60
- data/test/rubygems/test_project_sanity.rb +8 -3
- data/test/rubygems/test_remote_fetch_error.rb +7 -9
- data/test/rubygems/test_require.rb +240 -167
- data/test/rubygems/test_rubygems.rb +74 -0
- data/{lib/rubygems/test_utilities.rb → test/rubygems/utilities.rb} +30 -39
- data/test/test_changelog_generator.rb +17 -0
- metadata +158 -146
- data/.bundle/config +0 -2
- data/.rubocop.yml +0 -91
- data/Gemfile +0 -8
- data/Gemfile.lock +0 -43
- data/Rakefile +0 -428
- data/bundler/CODE_OF_CONDUCT.md +0 -136
- data/bundler/lib/bundler/gemdeps.rb +0 -29
- data/bundler/lib/bundler/psyched_yaml.rb +0 -37
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +0 -66
- 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/psych_additions.rb +0 -10
- data/lib/rubygems/server.rb +0 -879
- data/lib/rubygems/source_local.rb +0 -7
- data/lib/rubygems/source_specific_file.rb +0 -6
- data/lib/rubygems/syck_hack.rb +0 -79
- data/lib/rubygems/uri_parser.rb +0 -36
- data/lib/rubygems/uri_parsing.rb +0 -23
- data/lib/ubygems.rb +0 -14
- data/test/rubygems/bogussources.rb +0 -9
- data/test/rubygems/data/null-type.gemspec.rz +0 -0
- data/test/rubygems/test_gem_server.rb +0 -612
- 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 -137
- data/util/update_changelog.rb +0 -64
- /data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
- /data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
- /data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
- /data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
- /data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +0 -0
- /data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
- /data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
- /data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
- /data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
- /data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
@@ -1,28 +1,28 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require
|
2
|
+
require_relative "helper"
|
3
|
+
require "rubygems/commands/cert_command"
|
4
4
|
|
5
|
-
unless
|
6
|
-
warn
|
5
|
+
unless Gem::HAVE_OPENSSL
|
6
|
+
warn "Skipping `gem cert` tests. openssl not found."
|
7
7
|
end
|
8
8
|
|
9
9
|
if Gem.java_platform?
|
10
|
-
warn
|
10
|
+
warn "Skipping `gem cert` tests on jruby."
|
11
11
|
end
|
12
12
|
|
13
13
|
class TestGemCommandsCertCommand < Gem::TestCase
|
14
|
+
ALTERNATE_CERT = load_cert "alternate"
|
15
|
+
EXPIRED_PUBLIC_CERT = load_cert "expired"
|
14
16
|
|
15
|
-
|
16
|
-
|
17
|
+
ALTERNATE_KEY_FILE = key_path "alternate"
|
18
|
+
PRIVATE_KEY_FILE = key_path "private"
|
19
|
+
PRIVATE_EC_KEY_FILE = key_path "private_ec"
|
20
|
+
PUBLIC_KEY_FILE = key_path "public"
|
17
21
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
ALTERNATE_CERT_FILE = cert_path 'alternate'
|
23
|
-
CHILD_CERT_FILE = cert_path 'child'
|
24
|
-
PUBLIC_CERT_FILE = cert_path 'public'
|
25
|
-
EXPIRED_PUBLIC_CERT_FILE = cert_path 'expired'
|
22
|
+
ALTERNATE_CERT_FILE = cert_path "alternate"
|
23
|
+
CHILD_CERT_FILE = cert_path "child"
|
24
|
+
PUBLIC_CERT_FILE = cert_path "public"
|
25
|
+
EXPIRED_PUBLIC_CERT_FILE = cert_path "expired"
|
26
26
|
|
27
27
|
def setup
|
28
28
|
super
|
@@ -44,7 +44,7 @@ class TestGemCommandsCertCommand < Gem::TestCase
|
|
44
44
|
@trust_dir.trust_cert PUBLIC_CERT
|
45
45
|
@trust_dir.trust_cert ALTERNATE_CERT
|
46
46
|
|
47
|
-
matches = @cmd.certificates_matching
|
47
|
+
matches = @cmd.certificates_matching ""
|
48
48
|
|
49
49
|
# HACK OpenSSL::X509::Certificate#== is Object#==, so do this the hard way
|
50
50
|
match = matches.next
|
@@ -55,7 +55,7 @@ class TestGemCommandsCertCommand < Gem::TestCase
|
|
55
55
|
assert_equal PUBLIC_CERT.to_pem, match.first.to_pem
|
56
56
|
assert_equal @trust_dir.cert_path(PUBLIC_CERT), match.last
|
57
57
|
|
58
|
-
|
58
|
+
assert_raise StopIteration do
|
59
59
|
matches.next
|
60
60
|
end
|
61
61
|
end
|
@@ -64,13 +64,13 @@ class TestGemCommandsCertCommand < Gem::TestCase
|
|
64
64
|
@trust_dir.trust_cert PUBLIC_CERT
|
65
65
|
@trust_dir.trust_cert ALTERNATE_CERT
|
66
66
|
|
67
|
-
matches = @cmd.certificates_matching
|
67
|
+
matches = @cmd.certificates_matching "alternate"
|
68
68
|
|
69
69
|
match = matches.next
|
70
70
|
assert_equal ALTERNATE_CERT.to_pem, match.first.to_pem
|
71
71
|
assert_equal @trust_dir.cert_path(ALTERNATE_CERT), match.last
|
72
72
|
|
73
|
-
|
73
|
+
assert_raise StopIteration do
|
74
74
|
matches.next
|
75
75
|
end
|
76
76
|
end
|
@@ -84,14 +84,14 @@ class TestGemCommandsCertCommand < Gem::TestCase
|
|
84
84
|
|
85
85
|
cert_path = @trust_dir.cert_path PUBLIC_CERT
|
86
86
|
|
87
|
-
|
87
|
+
assert_path_exist cert_path
|
88
88
|
|
89
89
|
assert_equal "Added '/CN=nobody/DC=example'\n", @ui.output
|
90
90
|
assert_empty @ui.error
|
91
91
|
end
|
92
92
|
|
93
93
|
def test_execute_add_twice
|
94
|
-
self.class.cert_path
|
94
|
+
self.class.cert_path "alternate"
|
95
95
|
|
96
96
|
@cmd.handle_options %W[
|
97
97
|
--add #{PUBLIC_CERT_FILE}
|
@@ -112,7 +112,7 @@ Added '/CN=alternate/DC=example'
|
|
112
112
|
end
|
113
113
|
|
114
114
|
def test_execute_build
|
115
|
-
passphrase =
|
115
|
+
passphrase = "Foo bar"
|
116
116
|
|
117
117
|
@cmd.handle_options %W[--build nobody@example.com]
|
118
118
|
|
@@ -139,12 +139,48 @@ Added '/CN=alternate/DC=example'
|
|
139
139
|
assert_empty output
|
140
140
|
assert_empty @build_ui.error
|
141
141
|
|
142
|
-
|
143
|
-
|
142
|
+
assert_path_exist File.join(@tempdir, "gem-private_key.pem")
|
143
|
+
assert_path_exist File.join(@tempdir, "gem-public_cert.pem")
|
144
|
+
end
|
145
|
+
|
146
|
+
def test_execute_build_key_algorithm_ec_key
|
147
|
+
passphrase = "Foo bar"
|
148
|
+
|
149
|
+
@cmd.handle_options %W[--build nobody@example.com --key-algorithm ec]
|
150
|
+
|
151
|
+
@build_ui = Gem::MockGemUi.new "#{passphrase}\n#{passphrase}"
|
152
|
+
|
153
|
+
use_ui @build_ui do
|
154
|
+
@cmd.execute
|
155
|
+
end
|
156
|
+
|
157
|
+
output = @build_ui.output.squeeze("\n").split "\n"
|
158
|
+
|
159
|
+
assert_equal "Passphrase for your Private Key: ",
|
160
|
+
output.shift
|
161
|
+
assert_equal "Please repeat the passphrase for your Private Key: ",
|
162
|
+
output.shift
|
163
|
+
assert_equal "Certificate: #{File.join @tempdir, 'gem-public_cert.pem'}",
|
164
|
+
output.shift
|
165
|
+
assert_equal "Private Key: #{File.join @tempdir, 'gem-private_key.pem'}",
|
166
|
+
output.shift
|
167
|
+
|
168
|
+
assert_equal "Don't forget to move the key file to somewhere private!",
|
169
|
+
output.shift
|
170
|
+
|
171
|
+
assert_empty output
|
172
|
+
assert_empty @build_ui.error
|
173
|
+
|
174
|
+
assert_path_exist File.join(@tempdir, "gem-private_key.pem")
|
175
|
+
|
176
|
+
cert_path = File.join(@tempdir, "gem-public_cert.pem")
|
177
|
+
assert_path_exist cert_path
|
178
|
+
cert = OpenSSL::X509::Certificate.new(File.read(cert_path))
|
179
|
+
assert cert.public_key.is_a? OpenSSL::PKey::EC
|
144
180
|
end
|
145
181
|
|
146
182
|
def test_execute_build_bad_email_address
|
147
|
-
passphrase =
|
183
|
+
passphrase = "Foo bar"
|
148
184
|
email = "nobody@"
|
149
185
|
|
150
186
|
@cmd.handle_options %W[--build #{email}]
|
@@ -152,21 +188,20 @@ Added '/CN=alternate/DC=example'
|
|
152
188
|
@build_ui = Gem::MockGemUi.new "#{passphrase}\n#{passphrase}"
|
153
189
|
|
154
190
|
use_ui @build_ui do
|
155
|
-
|
156
|
-
e = assert_raises Gem::CommandLineError do
|
191
|
+
e = assert_raise Gem::CommandLineError do
|
157
192
|
@cmd.execute
|
158
193
|
end
|
159
194
|
|
160
195
|
assert_equal "Invalid email address #{email}",
|
161
196
|
e.message
|
162
197
|
|
163
|
-
|
164
|
-
|
198
|
+
assert_path_not_exist File.join(@tempdir, "gem-private_key.pem")
|
199
|
+
assert_path_not_exist File.join(@tempdir, "gem-public_cert.pem")
|
165
200
|
end
|
166
201
|
end
|
167
202
|
|
168
203
|
def test_execute_build_expiration_days
|
169
|
-
passphrase =
|
204
|
+
passphrase = "Foo bar"
|
170
205
|
|
171
206
|
@cmd.handle_options %W[
|
172
207
|
--build nobody@example.com
|
@@ -196,8 +231,8 @@ Added '/CN=alternate/DC=example'
|
|
196
231
|
assert_empty output
|
197
232
|
assert_empty @build_ui.error
|
198
233
|
|
199
|
-
|
200
|
-
|
234
|
+
assert_path_exist File.join(@tempdir, "gem-private_key.pem")
|
235
|
+
assert_path_exist File.join(@tempdir, "gem-public_cert.pem")
|
201
236
|
|
202
237
|
pem = File.read("#{@tempdir}/gem-public_cert.pem")
|
203
238
|
cert = OpenSSL::X509::Certificate.new(pem)
|
@@ -207,15 +242,15 @@ Added '/CN=alternate/DC=example'
|
|
207
242
|
end
|
208
243
|
|
209
244
|
def test_execute_build_bad_passphrase_confirmation
|
210
|
-
passphrase =
|
211
|
-
passphrase_confirmation =
|
245
|
+
passphrase = "Foo bar"
|
246
|
+
passphrase_confirmation = "Fu bar"
|
212
247
|
|
213
248
|
@cmd.handle_options %W[--build nobody@example.com]
|
214
249
|
|
215
250
|
@build_ui = Gem::MockGemUi.new "#{passphrase}\n#{passphrase_confirmation}"
|
216
251
|
|
217
252
|
use_ui @build_ui do
|
218
|
-
e =
|
253
|
+
e = assert_raise Gem::CommandLineError do
|
219
254
|
@cmd.execute
|
220
255
|
end
|
221
256
|
|
@@ -230,11 +265,10 @@ Added '/CN=alternate/DC=example'
|
|
230
265
|
|
231
266
|
assert_equal "Passphrase and passphrase confirmation don't match",
|
232
267
|
e.message
|
233
|
-
|
234
268
|
end
|
235
269
|
|
236
|
-
|
237
|
-
|
270
|
+
assert_path_not_exist File.join(@tempdir, "gem-private_key.pem")
|
271
|
+
assert_path_not_exist File.join(@tempdir, "gem-public_cert.pem")
|
238
272
|
end
|
239
273
|
|
240
274
|
def test_execute_build_key
|
@@ -255,8 +289,8 @@ Added '/CN=alternate/DC=example'
|
|
255
289
|
assert_empty output
|
256
290
|
assert_empty @ui.error
|
257
291
|
|
258
|
-
|
259
|
-
|
292
|
+
assert_path_exist File.join(@tempdir, "gem-public_cert.pem")
|
293
|
+
assert_path_not_exist File.join(@tempdir, "gem-private_key.pem")
|
260
294
|
end
|
261
295
|
|
262
296
|
def test_execute_build_encrypted_key
|
@@ -277,7 +311,29 @@ Added '/CN=alternate/DC=example'
|
|
277
311
|
assert_empty output
|
278
312
|
assert_empty @ui.error
|
279
313
|
|
280
|
-
|
314
|
+
assert_path_exist File.join(@tempdir, "gem-public_cert.pem")
|
315
|
+
end
|
316
|
+
|
317
|
+
def test_execute_build_ec_key
|
318
|
+
@cmd.handle_options %W[
|
319
|
+
--build nobody@example.com
|
320
|
+
--private-key #{PRIVATE_EC_KEY_FILE}
|
321
|
+
]
|
322
|
+
|
323
|
+
use_ui @ui do
|
324
|
+
@cmd.execute
|
325
|
+
end
|
326
|
+
|
327
|
+
output = @ui.output.split "\n"
|
328
|
+
|
329
|
+
assert_equal "Certificate: #{File.join @tempdir, 'gem-public_cert.pem'}",
|
330
|
+
output.shift
|
331
|
+
|
332
|
+
assert_empty output
|
333
|
+
assert_empty @ui.error
|
334
|
+
|
335
|
+
assert_path_exist File.join(@tempdir, "gem-public_cert.pem")
|
336
|
+
assert_path_not_exist File.join(@tempdir, "gem-private_key.pem")
|
281
337
|
end
|
282
338
|
|
283
339
|
def test_execute_certificate
|
@@ -285,8 +341,8 @@ Added '/CN=alternate/DC=example'
|
|
285
341
|
@cmd.handle_options %W[--certificate #{PUBLIC_CERT_FILE}]
|
286
342
|
end
|
287
343
|
|
288
|
-
assert_equal
|
289
|
-
assert_equal
|
344
|
+
assert_equal "", @ui.output
|
345
|
+
assert_equal "", @ui.error
|
290
346
|
|
291
347
|
assert_equal PUBLIC_CERT.to_pem, @cmd.options[:issuer_cert].to_pem
|
292
348
|
end
|
@@ -325,8 +381,8 @@ Added '/CN=alternate/DC=example'
|
|
325
381
|
@cmd.send :handle_options, %W[--private-key #{PRIVATE_KEY_FILE}]
|
326
382
|
end
|
327
383
|
|
328
|
-
assert_equal
|
329
|
-
assert_equal
|
384
|
+
assert_equal "", @ui.output
|
385
|
+
assert_equal "", @ui.error
|
330
386
|
|
331
387
|
assert_equal PRIVATE_KEY.to_pem, @cmd.options[:key].to_pem
|
332
388
|
end
|
@@ -336,8 +392,8 @@ Added '/CN=alternate/DC=example'
|
|
336
392
|
@cmd.send :handle_options, %W[--private-key #{ENCRYPTED_PRIVATE_KEY_PATH}]
|
337
393
|
end
|
338
394
|
|
339
|
-
assert_equal
|
340
|
-
assert_equal
|
395
|
+
assert_equal "", @ui.output
|
396
|
+
assert_equal "", @ui.error
|
341
397
|
|
342
398
|
assert_equal ENCRYPTED_PRIVATE_KEY.to_pem, @cmd.options[:key].to_pem
|
343
399
|
end
|
@@ -347,7 +403,7 @@ Added '/CN=alternate/DC=example'
|
|
347
403
|
|
348
404
|
cert_path = @trust_dir.cert_path PUBLIC_CERT
|
349
405
|
|
350
|
-
|
406
|
+
assert_path_exist cert_path
|
351
407
|
|
352
408
|
@cmd.handle_options %W[--remove nobody]
|
353
409
|
|
@@ -356,9 +412,9 @@ Added '/CN=alternate/DC=example'
|
|
356
412
|
end
|
357
413
|
|
358
414
|
assert_equal "Removed '/CN=nobody/DC=example'\n", @ui.output
|
359
|
-
assert_equal
|
415
|
+
assert_equal "", @ui.error
|
360
416
|
|
361
|
-
|
417
|
+
assert_path_not_exist cert_path
|
362
418
|
end
|
363
419
|
|
364
420
|
def test_execute_remove_multiple
|
@@ -368,8 +424,8 @@ Added '/CN=alternate/DC=example'
|
|
368
424
|
public_path = @trust_dir.cert_path PUBLIC_CERT
|
369
425
|
alternate_path = @trust_dir.cert_path ALTERNATE_CERT
|
370
426
|
|
371
|
-
|
372
|
-
|
427
|
+
assert_path_exist public_path
|
428
|
+
assert_path_exist alternate_path
|
373
429
|
|
374
430
|
@cmd.handle_options %W[--remove example]
|
375
431
|
|
@@ -383,10 +439,10 @@ Removed '/CN=nobody/DC=example'
|
|
383
439
|
EXPECTED
|
384
440
|
|
385
441
|
assert_equal expected, @ui.output
|
386
|
-
assert_equal
|
442
|
+
assert_equal "", @ui.error
|
387
443
|
|
388
|
-
|
389
|
-
|
444
|
+
assert_path_not_exist public_path
|
445
|
+
assert_path_not_exist alternate_path
|
390
446
|
end
|
391
447
|
|
392
448
|
def test_execute_remove_twice
|
@@ -396,8 +452,8 @@ Removed '/CN=nobody/DC=example'
|
|
396
452
|
public_path = @trust_dir.cert_path PUBLIC_CERT
|
397
453
|
alternate_path = @trust_dir.cert_path ALTERNATE_CERT
|
398
454
|
|
399
|
-
|
400
|
-
|
455
|
+
assert_path_exist public_path
|
456
|
+
assert_path_exist alternate_path
|
401
457
|
|
402
458
|
@cmd.handle_options %W[--remove nobody --remove alternate]
|
403
459
|
|
@@ -411,17 +467,17 @@ Removed '/CN=alternate/DC=example'
|
|
411
467
|
EXPECTED
|
412
468
|
|
413
469
|
assert_equal expected, @ui.output
|
414
|
-
assert_equal
|
470
|
+
assert_equal "", @ui.error
|
415
471
|
|
416
|
-
|
417
|
-
|
472
|
+
assert_path_not_exist public_path
|
473
|
+
assert_path_not_exist alternate_path
|
418
474
|
end
|
419
475
|
|
420
476
|
def test_execute_sign
|
421
|
-
path = File.join @tempdir,
|
477
|
+
path = File.join @tempdir, "cert.pem"
|
422
478
|
Gem::Security.write ALTERNATE_CERT, path, 0600
|
423
479
|
|
424
|
-
assert_equal
|
480
|
+
assert_equal "/CN=alternate/DC=example", ALTERNATE_CERT.issuer.to_s
|
425
481
|
|
426
482
|
@cmd.handle_options %W[
|
427
483
|
--private-key #{PRIVATE_KEY_FILE}
|
@@ -434,12 +490,12 @@ Removed '/CN=alternate/DC=example'
|
|
434
490
|
@cmd.execute
|
435
491
|
end
|
436
492
|
|
437
|
-
assert_equal
|
438
|
-
assert_equal
|
493
|
+
assert_equal "", @ui.output
|
494
|
+
assert_equal "", @ui.error
|
439
495
|
|
440
496
|
cert = OpenSSL::X509::Certificate.new File.read path
|
441
497
|
|
442
|
-
assert_equal
|
498
|
+
assert_equal "/CN=nobody/DC=example", cert.issuer.to_s
|
443
499
|
|
444
500
|
mask = 0100600 & (~File.umask)
|
445
501
|
|
@@ -447,10 +503,10 @@ Removed '/CN=alternate/DC=example'
|
|
447
503
|
end
|
448
504
|
|
449
505
|
def test_execute_sign_encrypted_key
|
450
|
-
path = File.join @tempdir,
|
506
|
+
path = File.join @tempdir, "cert.pem"
|
451
507
|
Gem::Security.write ALTERNATE_CERT, path, 0600
|
452
508
|
|
453
|
-
assert_equal
|
509
|
+
assert_equal "/CN=alternate/DC=example", ALTERNATE_CERT.issuer.to_s
|
454
510
|
|
455
511
|
@cmd.handle_options %W[
|
456
512
|
--private-key #{ENCRYPTED_PRIVATE_KEY_PATH}
|
@@ -463,12 +519,12 @@ Removed '/CN=alternate/DC=example'
|
|
463
519
|
@cmd.execute
|
464
520
|
end
|
465
521
|
|
466
|
-
assert_equal
|
467
|
-
assert_equal
|
522
|
+
assert_equal "", @ui.output
|
523
|
+
assert_equal "", @ui.error
|
468
524
|
|
469
525
|
cert = OpenSSL::X509::Certificate.new File.read path
|
470
526
|
|
471
|
-
assert_equal
|
527
|
+
assert_equal "/CN=nobody/DC=example", cert.issuer.to_s
|
472
528
|
|
473
529
|
mask = 0100600 & (~File.umask)
|
474
530
|
|
@@ -476,18 +532,18 @@ Removed '/CN=alternate/DC=example'
|
|
476
532
|
end
|
477
533
|
|
478
534
|
def test_execute_sign_default
|
479
|
-
FileUtils.mkdir_p File.join Gem.user_home,
|
535
|
+
FileUtils.mkdir_p File.join Gem.user_home, ".gem"
|
480
536
|
|
481
|
-
private_key_path = File.join Gem.user_home,
|
537
|
+
private_key_path = File.join Gem.user_home, ".gem", "gem-private_key.pem"
|
482
538
|
Gem::Security.write PRIVATE_KEY, private_key_path
|
483
539
|
|
484
|
-
public_cert_path = File.join Gem.user_home,
|
540
|
+
public_cert_path = File.join Gem.user_home, ".gem", "gem-public_cert.pem"
|
485
541
|
Gem::Security.write PUBLIC_CERT, public_cert_path
|
486
542
|
|
487
|
-
path = File.join @tempdir,
|
543
|
+
path = File.join @tempdir, "cert.pem"
|
488
544
|
Gem::Security.write ALTERNATE_CERT, path, 0600
|
489
545
|
|
490
|
-
assert_equal
|
546
|
+
assert_equal "/CN=alternate/DC=example", ALTERNATE_CERT.issuer.to_s
|
491
547
|
|
492
548
|
@cmd.handle_options %W[--sign #{path}]
|
493
549
|
|
@@ -495,12 +551,12 @@ Removed '/CN=alternate/DC=example'
|
|
495
551
|
@cmd.execute
|
496
552
|
end
|
497
553
|
|
498
|
-
assert_equal
|
499
|
-
assert_equal
|
554
|
+
assert_equal "", @ui.output
|
555
|
+
assert_equal "", @ui.error
|
500
556
|
|
501
557
|
cert = OpenSSL::X509::Certificate.new File.read path
|
502
558
|
|
503
|
-
assert_equal
|
559
|
+
assert_equal "/CN=nobody/DC=example", cert.issuer.to_s
|
504
560
|
|
505
561
|
mask = 0100600 & (~File.umask)
|
506
562
|
|
@@ -508,18 +564,18 @@ Removed '/CN=alternate/DC=example'
|
|
508
564
|
end
|
509
565
|
|
510
566
|
def test_execute_sign_default_encrypted_key
|
511
|
-
FileUtils.mkdir_p File.join(Gem.user_home,
|
567
|
+
FileUtils.mkdir_p File.join(Gem.user_home, ".gem")
|
512
568
|
|
513
|
-
private_key_path = File.join Gem.user_home,
|
569
|
+
private_key_path = File.join Gem.user_home, ".gem", "gem-private_key.pem"
|
514
570
|
Gem::Security.write ENCRYPTED_PRIVATE_KEY, private_key_path, 0600, PRIVATE_KEY_PASSPHRASE
|
515
571
|
|
516
|
-
public_cert_path = File.join Gem.user_home,
|
572
|
+
public_cert_path = File.join Gem.user_home, ".gem", "gem-public_cert.pem"
|
517
573
|
Gem::Security.write PUBLIC_CERT, public_cert_path
|
518
574
|
|
519
|
-
path = File.join @tempdir,
|
575
|
+
path = File.join @tempdir, "cert.pem"
|
520
576
|
Gem::Security.write ALTERNATE_CERT, path, 0600
|
521
577
|
|
522
|
-
assert_equal
|
578
|
+
assert_equal "/CN=alternate/DC=example", ALTERNATE_CERT.issuer.to_s
|
523
579
|
|
524
580
|
@cmd.handle_options %W[--sign #{path}]
|
525
581
|
|
@@ -527,12 +583,12 @@ Removed '/CN=alternate/DC=example'
|
|
527
583
|
@cmd.execute
|
528
584
|
end
|
529
585
|
|
530
|
-
assert_equal
|
531
|
-
assert_equal
|
586
|
+
assert_equal "", @ui.output
|
587
|
+
assert_equal "", @ui.error
|
532
588
|
|
533
589
|
cert = OpenSSL::X509::Certificate.new File.read path
|
534
590
|
|
535
|
-
assert_equal
|
591
|
+
assert_equal "/CN=nobody/DC=example", cert.issuer.to_s
|
536
592
|
|
537
593
|
mask = 0100600 & (~File.umask)
|
538
594
|
|
@@ -540,25 +596,25 @@ Removed '/CN=alternate/DC=example'
|
|
540
596
|
end
|
541
597
|
|
542
598
|
def test_execute_sign_no_cert
|
543
|
-
FileUtils.mkdir_p File.join Gem.user_home,
|
599
|
+
FileUtils.mkdir_p File.join Gem.user_home, ".gem"
|
544
600
|
|
545
|
-
private_key_path = File.join Gem.user_home,
|
601
|
+
private_key_path = File.join Gem.user_home, ".gem", "gem-private_key.pem"
|
546
602
|
Gem::Security.write PRIVATE_KEY, private_key_path
|
547
603
|
|
548
|
-
path = File.join @tempdir,
|
604
|
+
path = File.join @tempdir, "cert.pem"
|
549
605
|
Gem::Security.write ALTERNATE_CERT, path, 0600
|
550
606
|
|
551
|
-
assert_equal
|
607
|
+
assert_equal "/CN=alternate/DC=example", ALTERNATE_CERT.issuer.to_s
|
552
608
|
|
553
609
|
@cmd.handle_options %W[--sign #{path}]
|
554
610
|
|
555
611
|
use_ui @ui do
|
556
|
-
|
612
|
+
assert_raise Gem::MockGemUi::TermError do
|
557
613
|
@cmd.execute
|
558
614
|
end
|
559
615
|
end
|
560
616
|
|
561
|
-
assert_equal
|
617
|
+
assert_equal "", @ui.output
|
562
618
|
|
563
619
|
expected = <<-EXPECTED
|
564
620
|
ERROR: --certificate not specified and ~/.gem/gem-public_cert.pem does not exist
|
@@ -568,25 +624,25 @@ ERROR: --certificate not specified and ~/.gem/gem-public_cert.pem does not exis
|
|
568
624
|
end
|
569
625
|
|
570
626
|
def test_execute_sign_no_key
|
571
|
-
FileUtils.mkdir_p File.join Gem.user_home,
|
627
|
+
FileUtils.mkdir_p File.join Gem.user_home, ".gem"
|
572
628
|
|
573
|
-
public_cert_path = File.join Gem.user_home,
|
629
|
+
public_cert_path = File.join Gem.user_home, ".gem", "gem-public_cert.pem"
|
574
630
|
Gem::Security.write PUBLIC_CERT, public_cert_path
|
575
631
|
|
576
|
-
path = File.join @tempdir,
|
632
|
+
path = File.join @tempdir, "cert.pem"
|
577
633
|
Gem::Security.write ALTERNATE_CERT, path, 0600
|
578
634
|
|
579
|
-
assert_equal
|
635
|
+
assert_equal "/CN=alternate/DC=example", ALTERNATE_CERT.issuer.to_s
|
580
636
|
|
581
637
|
@cmd.handle_options %W[--sign #{path}]
|
582
638
|
|
583
639
|
use_ui @ui do
|
584
|
-
|
640
|
+
assert_raise Gem::MockGemUi::TermError do
|
585
641
|
@cmd.execute
|
586
642
|
end
|
587
643
|
end
|
588
644
|
|
589
|
-
assert_equal
|
645
|
+
assert_equal "", @ui.output
|
590
646
|
|
591
647
|
expected = <<-EXPECTED
|
592
648
|
ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exist
|
@@ -599,10 +655,10 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
599
655
|
gem_path = File.join Gem.user_home, ".gem"
|
600
656
|
Dir.mkdir gem_path
|
601
657
|
|
602
|
-
path = File.join @tempdir,
|
658
|
+
path = File.join @tempdir, "cert.pem"
|
603
659
|
Gem::Security.write EXPIRED_PUBLIC_CERT, path, 0600
|
604
660
|
|
605
|
-
assert_equal
|
661
|
+
assert_equal "/CN=nobody/DC=example", EXPIRED_PUBLIC_CERT.issuer.to_s
|
606
662
|
|
607
663
|
tmp_expired_cert_file = File.join(Dir.tmpdir, File.basename(EXPIRED_PUBLIC_CERT_FILE))
|
608
664
|
@cleanup << tmp_expired_cert_file
|
@@ -624,17 +680,17 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
624
680
|
/INFO: Your certificate #{tmp_expired_cert_file} has been re-signed\nINFO: Your expired certificate will be located at: #{expected_path}\.[0-9]+/,
|
625
681
|
@ui.output
|
626
682
|
)
|
627
|
-
assert_equal
|
683
|
+
assert_equal "", @ui.error
|
628
684
|
end
|
629
685
|
|
630
686
|
def test_execute_re_sign_with_cert_expiration_length_days
|
631
687
|
gem_path = File.join Gem.user_home, ".gem"
|
632
688
|
Dir.mkdir gem_path
|
633
689
|
|
634
|
-
path = File.join @tempdir,
|
690
|
+
path = File.join @tempdir, "cert.pem"
|
635
691
|
Gem::Security.write EXPIRED_PUBLIC_CERT, path, 0600
|
636
692
|
|
637
|
-
assert_equal
|
693
|
+
assert_equal "/CN=nobody/DC=example", EXPIRED_PUBLIC_CERT.issuer.to_s
|
638
694
|
|
639
695
|
tmp_expired_cert_file = File.join(Dir.tmpdir, File.basename(EXPIRED_PUBLIC_CERT_FILE))
|
640
696
|
@cleanup << tmp_expired_cert_file
|
@@ -656,7 +712,7 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
656
712
|
cert_days_to_expire = (re_signed_cert.not_after - re_signed_cert.not_before).to_i / (24 * 60 * 60)
|
657
713
|
|
658
714
|
assert_equal(28, cert_days_to_expire)
|
659
|
-
assert_equal
|
715
|
+
assert_equal "", @ui.error
|
660
716
|
end
|
661
717
|
|
662
718
|
def test_handle_options
|
@@ -675,29 +731,29 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
675
731
|
]
|
676
732
|
|
677
733
|
assert_equal [PUBLIC_CERT.to_pem, ALTERNATE_CERT.to_pem],
|
678
|
-
@cmd.options[:add].map {
|
734
|
+
@cmd.options[:add].map {|cert| cert.to_pem }
|
679
735
|
|
680
736
|
assert_equal %w[nobody example], @cmd.options[:remove]
|
681
737
|
|
682
738
|
assert_equal %w[nobody@example other@example],
|
683
|
-
@cmd.options[:build].map {
|
739
|
+
@cmd.options[:build].map {|name| name.to_s }
|
684
740
|
|
685
|
-
assert_equal [
|
741
|
+
assert_equal ["", "example"], @cmd.options[:list]
|
686
742
|
end
|
687
743
|
|
688
744
|
def test_handle_options_add_bad
|
689
|
-
nonexistent = File.join @tempdir,
|
690
|
-
e =
|
745
|
+
nonexistent = File.join @tempdir, "nonexistent"
|
746
|
+
e = assert_raise Gem::OptionParser::InvalidArgument do
|
691
747
|
@cmd.handle_options %W[--add #{nonexistent}]
|
692
748
|
end
|
693
749
|
|
694
750
|
assert_equal "invalid argument: --add #{nonexistent}: does not exist",
|
695
751
|
e.message
|
696
752
|
|
697
|
-
bad = File.join @tempdir,
|
753
|
+
bad = File.join @tempdir, "bad"
|
698
754
|
FileUtils.touch bad
|
699
755
|
|
700
|
-
e =
|
756
|
+
e = assert_raise Gem::OptionParser::InvalidArgument do
|
701
757
|
@cmd.handle_options %W[--add #{bad}]
|
702
758
|
end
|
703
759
|
|
@@ -706,18 +762,18 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
706
762
|
end
|
707
763
|
|
708
764
|
def test_handle_options_certificate
|
709
|
-
nonexistent = File.join @tempdir,
|
710
|
-
e =
|
765
|
+
nonexistent = File.join @tempdir, "nonexistent"
|
766
|
+
e = assert_raise Gem::OptionParser::InvalidArgument do
|
711
767
|
@cmd.handle_options %W[--certificate #{nonexistent}]
|
712
768
|
end
|
713
769
|
|
714
770
|
assert_equal "invalid argument: --certificate #{nonexistent}: does not exist",
|
715
771
|
e.message
|
716
772
|
|
717
|
-
bad = File.join @tempdir,
|
773
|
+
bad = File.join @tempdir, "bad"
|
718
774
|
FileUtils.touch bad
|
719
775
|
|
720
|
-
e =
|
776
|
+
e = assert_raise Gem::OptionParser::InvalidArgument do
|
721
777
|
@cmd.handle_options %W[--certificate #{bad}]
|
722
778
|
end
|
723
779
|
|
@@ -727,8 +783,8 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
727
783
|
end
|
728
784
|
|
729
785
|
def test_handle_options_key_bad
|
730
|
-
nonexistent = File.join @tempdir,
|
731
|
-
e =
|
786
|
+
nonexistent = File.join @tempdir, "nonexistent"
|
787
|
+
e = assert_raise Gem::OptionParser::InvalidArgument do
|
732
788
|
@cmd.handle_options %W[--private-key #{nonexistent}]
|
733
789
|
end
|
734
790
|
|
@@ -736,17 +792,17 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
736
792
|
"--private-key #{nonexistent}: does not exist",
|
737
793
|
e.message
|
738
794
|
|
739
|
-
bad = File.join @tempdir,
|
795
|
+
bad = File.join @tempdir, "bad"
|
740
796
|
FileUtils.touch bad
|
741
797
|
|
742
|
-
e =
|
798
|
+
e = assert_raise Gem::OptionParser::InvalidArgument do
|
743
799
|
@cmd.handle_options %W[--private-key #{bad}]
|
744
800
|
end
|
745
801
|
|
746
|
-
assert_equal "invalid argument: --private-key #{bad}: invalid RSA key",
|
802
|
+
assert_equal "invalid argument: --private-key #{bad}: invalid RSA, DSA, or EC key",
|
747
803
|
e.message
|
748
804
|
|
749
|
-
e =
|
805
|
+
e = assert_raise Gem::OptionParser::InvalidArgument do
|
750
806
|
@cmd.handle_options %W[--private-key #{PUBLIC_KEY_FILE}]
|
751
807
|
end
|
752
808
|
|
@@ -792,8 +848,8 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
792
848
|
end
|
793
849
|
|
794
850
|
def test_handle_options_sign_nonexistent
|
795
|
-
nonexistent = File.join @tempdir,
|
796
|
-
e =
|
851
|
+
nonexistent = File.join @tempdir, "nonexistent"
|
852
|
+
e = assert_raise Gem::OptionParser::InvalidArgument do
|
797
853
|
@cmd.handle_options %W[
|
798
854
|
--private-key #{ALTERNATE_KEY_FILE}
|
799
855
|
|
@@ -806,5 +862,4 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
806
862
|
assert_equal "invalid argument: --sign #{nonexistent}: does not exist",
|
807
863
|
e.message
|
808
864
|
end
|
809
|
-
|
810
|
-
end if defined?(OpenSSL::SSL) && !Gem.java_platform?
|
865
|
+
end if Gem::HAVE_OPENSSL && !Gem.java_platform?
|