rubygems-update 3.0.3 → 3.4.7
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/CHANGELOG.md +5556 -0
- data/CODE_OF_CONDUCT.md +62 -24
- data/CONTRIBUTING.md +111 -21
- data/MAINTAINERS.txt +1 -6
- data/Manifest.txt +209 -101
- data/POLICIES.md +65 -22
- data/README.md +23 -15
- data/UPGRADING.md +5 -81
- data/bin/gem +2 -16
- data/bin/update_rubygems +5 -5
- data/bundler/CHANGELOG.md +2619 -1256
- data/bundler/LICENSE.md +18 -19
- data/bundler/README.md +11 -12
- data/bundler/UPGRADING.md +222 -0
- data/bundler/bundler.gemspec +13 -33
- data/bundler/exe/bundle +26 -11
- data/bundler/exe/bundler +1 -1
- data/bundler/lib/bundler/.document +1 -0
- data/bundler/lib/bundler/build_metadata.rb +5 -13
- data/bundler/lib/bundler/capistrano.rb +4 -4
- data/bundler/lib/bundler/cli/add.rb +28 -16
- data/bundler/lib/bundler/cli/binstubs.rb +11 -3
- data/bundler/lib/bundler/cli/cache.rb +24 -17
- data/bundler/lib/bundler/cli/check.rb +5 -3
- data/bundler/lib/bundler/cli/clean.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +41 -13
- data/bundler/lib/bundler/cli/config.rb +170 -86
- data/bundler/lib/bundler/cli/console.rb +3 -3
- data/bundler/lib/bundler/cli/doctor.rb +27 -10
- data/bundler/lib/bundler/cli/exec.rb +8 -25
- data/bundler/lib/bundler/cli/fund.rb +36 -0
- data/bundler/lib/bundler/cli/gem.rb +261 -48
- data/bundler/lib/bundler/cli/info.rb +52 -8
- data/bundler/lib/bundler/cli/init.rb +7 -3
- data/bundler/lib/bundler/cli/inject.rb +1 -1
- data/bundler/lib/bundler/cli/install.rb +38 -66
- data/bundler/lib/bundler/cli/issue.rb +8 -7
- data/bundler/lib/bundler/cli/list.rb +19 -11
- data/bundler/lib/bundler/cli/lock.rb +11 -4
- data/bundler/lib/bundler/cli/open.rb +14 -9
- data/bundler/lib/bundler/cli/outdated.rb +152 -121
- data/bundler/lib/bundler/cli/platform.rb +2 -2
- data/bundler/lib/bundler/cli/plugin.rb +19 -2
- data/bundler/lib/bundler/cli/pristine.rb +6 -1
- data/bundler/lib/bundler/cli/remove.rb +1 -2
- data/bundler/lib/bundler/cli/show.rb +3 -3
- data/bundler/lib/bundler/cli/update.rb +49 -18
- data/bundler/lib/bundler/cli/viz.rb +1 -1
- data/bundler/lib/bundler/cli.rb +269 -165
- data/bundler/lib/bundler/compact_index_client/cache.rb +7 -24
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
- data/bundler/lib/bundler/compact_index_client/updater.rb +58 -57
- data/bundler/lib/bundler/compact_index_client.rb +28 -18
- data/bundler/lib/bundler/constants.rb +1 -1
- data/bundler/lib/bundler/current_ruby.rb +26 -11
- data/bundler/lib/bundler/definition.rb +359 -441
- data/bundler/lib/bundler/dependency.rb +29 -71
- data/bundler/lib/bundler/deployment.rb +1 -1
- data/bundler/lib/bundler/digest.rb +71 -0
- data/bundler/lib/bundler/dsl.rb +84 -116
- data/bundler/lib/bundler/endpoint_specification.rb +20 -14
- data/bundler/lib/bundler/env.rb +10 -15
- data/bundler/lib/bundler/environment_preserver.rb +30 -3
- data/bundler/lib/bundler/errors.rb +31 -14
- data/bundler/lib/bundler/feature_flag.rb +13 -33
- data/bundler/lib/bundler/fetcher/base.rb +7 -9
- data/bundler/lib/bundler/fetcher/compact_index.rb +46 -39
- data/bundler/lib/bundler/fetcher/dependency.rb +2 -2
- data/bundler/lib/bundler/fetcher/downloader.rb +15 -12
- data/bundler/lib/bundler/fetcher/index.rb +4 -30
- data/bundler/lib/bundler/fetcher.rb +39 -41
- data/bundler/lib/bundler/force_platform.rb +18 -0
- data/bundler/lib/bundler/friendly_errors.rb +49 -54
- data/bundler/lib/bundler/gem_helper.rb +79 -43
- data/bundler/lib/bundler/gem_helpers.rb +44 -28
- data/bundler/lib/bundler/gem_tasks.rb +1 -1
- data/bundler/lib/bundler/gem_version_promoter.rb +54 -99
- data/bundler/lib/bundler/graph.rb +5 -5
- data/bundler/lib/bundler/index.rb +14 -52
- data/bundler/lib/bundler/injector.rb +50 -16
- data/bundler/lib/bundler/inline.rb +28 -29
- data/bundler/lib/bundler/installer/gem_installer.rb +22 -23
- data/bundler/lib/bundler/installer/parallel_installer.rb +51 -51
- data/bundler/lib/bundler/installer/standalone.rb +62 -12
- data/bundler/lib/bundler/installer.rb +46 -97
- data/bundler/lib/bundler/lazy_specification.rb +88 -48
- data/bundler/lib/bundler/lockfile_generator.rb +3 -3
- data/bundler/lib/bundler/lockfile_parser.rb +30 -62
- data/bundler/{man → lib/bundler/man}/bundle-add.1 +29 -5
- data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +22 -4
- data/bundler/{man → lib/bundler/man}/bundle-binstubs.1 +6 -4
- data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +3 -5
- data/bundler/lib/bundler/man/bundle-cache.1 +61 -0
- data/bundler/{man/bundle-package.ronn → lib/bundler/man/bundle-cache.1.ronn} +22 -15
- data/bundler/{man → lib/bundler/man}/bundle-check.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-clean.1 +2 -2
- data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-config.1 +78 -60
- data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +96 -85
- 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 +6 -6
- data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +6 -6
- data/bundler/lib/bundler/man/bundle-gem.1 +105 -0
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +117 -0
- 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 +6 -2
- data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +3 -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 +42 -37
- data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +42 -38
- 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 +22 -2
- data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +9 -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 +8 -8
- data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +8 -7
- 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 +17 -12
- data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +14 -9
- data/bundler/lib/bundler/man/gemfile.5 +723 -0
- data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +112 -95
- data/bundler/lib/bundler/man/index.txt +29 -0
- data/bundler/lib/bundler/match_metadata.rb +13 -0
- data/bundler/lib/bundler/match_platform.rb +1 -2
- data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
- data/bundler/lib/bundler/mirror.rb +10 -12
- data/bundler/lib/bundler/plugin/api/source.rb +29 -15
- data/bundler/lib/bundler/plugin/api.rb +1 -1
- data/bundler/lib/bundler/plugin/dsl.rb +1 -1
- data/bundler/lib/bundler/plugin/index.rb +31 -8
- data/bundler/lib/bundler/plugin/installer/git.rb +0 -4
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -9
- data/bundler/lib/bundler/plugin/installer.rb +35 -22
- data/bundler/lib/bundler/plugin/source_list.rb +5 -1
- data/bundler/lib/bundler/plugin.rb +102 -42
- data/bundler/lib/bundler/process_lock.rb +1 -1
- data/bundler/lib/bundler/remote_specification.rb +15 -8
- data/bundler/lib/bundler/resolver/base.rb +77 -0
- data/bundler/lib/bundler/resolver/candidate.rb +94 -0
- data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
- data/bundler/lib/bundler/resolver/package.rb +72 -0
- data/bundler/lib/bundler/resolver/root.rb +25 -0
- data/bundler/lib/bundler/resolver/spec_group.rb +49 -73
- data/bundler/lib/bundler/resolver.rb +343 -300
- data/bundler/lib/bundler/retry.rb +4 -4
- data/bundler/lib/bundler/ruby_dsl.rb +1 -1
- data/bundler/lib/bundler/ruby_version.rb +9 -37
- data/bundler/lib/bundler/rubygems_ext.rb +235 -92
- data/bundler/lib/bundler/rubygems_gem_installer.rb +87 -21
- data/bundler/lib/bundler/rubygems_integration.rb +179 -515
- data/bundler/lib/bundler/runtime.rb +25 -40
- data/bundler/lib/bundler/self_manager.rb +168 -0
- data/bundler/lib/bundler/settings.rb +162 -118
- data/bundler/lib/bundler/setup.rb +11 -12
- data/bundler/lib/bundler/shared_helpers.rb +61 -102
- data/bundler/lib/bundler/similarity_detector.rb +3 -3
- data/bundler/lib/bundler/source/git/git_proxy.rb +257 -128
- data/bundler/lib/bundler/source/git.rb +84 -61
- data/bundler/lib/bundler/source/metadata.rb +9 -9
- data/bundler/lib/bundler/source/path/installer.rb +11 -32
- data/bundler/lib/bundler/source/path.rb +28 -17
- data/bundler/lib/bundler/source/rubygems/remote.rb +3 -4
- data/bundler/lib/bundler/source/rubygems.rb +171 -197
- data/bundler/lib/bundler/source/rubygems_aggregate.rb +68 -0
- data/bundler/lib/bundler/source.rb +30 -10
- data/bundler/lib/bundler/source_list.rb +112 -67
- data/bundler/lib/bundler/source_map.rb +71 -0
- data/bundler/lib/bundler/spec_set.rb +86 -72
- data/bundler/lib/bundler/stub_specification.rb +45 -37
- data/bundler/lib/bundler/templates/Executable +3 -5
- data/bundler/lib/bundler/templates/Executable.bundler +21 -17
- data/bundler/lib/bundler/templates/Executable.standalone +4 -4
- data/bundler/lib/bundler/templates/Gemfile +0 -2
- 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/Cargo.toml.tt +7 -0
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +22 -2
- data/bundler/lib/bundler/templates/newgem/README.md.tt +13 -15
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +33 -5
- data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +25 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/{extconf.rb.tt → extconf-c.rb.tt} +2 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +37 -0
- data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +18 -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 +36 -41
- 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/minitest/test_helper.rb.tt +6 -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/rg_proxy.rb +1 -1
- data/bundler/lib/bundler/ui/shell.rb +39 -20
- data/bundler/lib/bundler/ui/silent.rb +21 -5
- data/bundler/lib/bundler/ui.rb +3 -3
- data/bundler/lib/bundler/uri_credentials_filter.rb +10 -4
- 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 +174 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +56 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +128 -0
- data/bundler/lib/bundler/vendor/fileutils/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1493 -425
- data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
- 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/net-http-persistent/lib/net/http/persistent.rb +302 -462
- data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +155 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +243 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
- data/bundler/lib/bundler/vendor/thor/LICENSE.md +20 -0
- 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 +25 -14
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +20 -10
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +34 -15
- 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/core_ext/hash_with_indifferent_access.rb +6 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +83 -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/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/line_editor.rb +2 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
- 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 +40 -6
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -4
- 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/basic.rb +88 -13
- 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/shell.rb +5 -5
- 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/thor/lib/thor.rb +16 -9
- 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 +729 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +100 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1587 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +125 -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 +22 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +293 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +539 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +119 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +83 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +23 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +104 -0
- data/bundler/lib/bundler/vendored_fileutils.rb +1 -6
- data/bundler/lib/bundler/vendored_persistent.rb +2 -39
- data/bundler/lib/bundler/{vendored_molinillo.rb → vendored_pub_grub.rb} +1 -1
- data/bundler/lib/bundler/vendored_thor.rb +2 -2
- data/bundler/lib/bundler/vendored_tsort.rb +4 -0
- data/bundler/lib/bundler/vendored_uri.rb +4 -0
- data/bundler/lib/bundler/version.rb +5 -20
- data/bundler/lib/bundler/vlad.rb +2 -2
- data/bundler/lib/bundler/worker.rb +26 -15
- data/bundler/lib/bundler/yaml_serializer.rb +3 -4
- data/bundler/lib/bundler.rb +285 -183
- data/hide_lib_for_update/note.txt +0 -4
- data/lib/rubygems/available_set.rb +7 -8
- data/lib/rubygems/basic_specification.rb +44 -31
- data/lib/rubygems/bundler_version_finder.rb +28 -50
- data/lib/rubygems/command.rb +104 -46
- data/lib/rubygems/command_manager.rb +35 -16
- data/lib/rubygems/commands/build_command.rb +77 -26
- data/lib/rubygems/commands/cert_command.rb +78 -76
- data/lib/rubygems/commands/check_command.rb +20 -22
- data/lib/rubygems/commands/cleanup_command.rb +36 -32
- data/lib/rubygems/commands/contents_command.rb +16 -18
- data/lib/rubygems/commands/dependency_command.rb +39 -50
- data/lib/rubygems/commands/environment_command.rb +11 -13
- data/lib/rubygems/commands/fetch_command.rb +33 -16
- data/lib/rubygems/commands/generate_index_command.rb +18 -17
- data/lib/rubygems/commands/help_command.rb +7 -7
- data/lib/rubygems/commands/info_command.rb +11 -6
- data/lib/rubygems/commands/install_command.rb +45 -79
- data/lib/rubygems/commands/list_command.rb +9 -8
- data/lib/rubygems/commands/lock_command.rb +7 -9
- data/lib/rubygems/commands/mirror_command.rb +3 -4
- data/lib/rubygems/commands/open_command.rb +11 -14
- data/lib/rubygems/commands/outdated_command.rb +5 -6
- data/lib/rubygems/commands/owner_command.rb +29 -22
- data/lib/rubygems/commands/pristine_command.rb +61 -51
- data/lib/rubygems/commands/push_command.rb +26 -63
- data/lib/rubygems/commands/query_command.rb +21 -337
- data/lib/rubygems/commands/rdoc_command.rb +26 -26
- 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 +282 -241
- data/lib/rubygems/commands/signin_command.rb +9 -10
- data/lib/rubygems/commands/signout_command.rb +7 -9
- data/lib/rubygems/commands/sources_command.rb +42 -26
- data/lib/rubygems/commands/specification_command.rb +25 -20
- data/lib/rubygems/commands/stale_command.rb +3 -3
- data/lib/rubygems/commands/uninstall_command.rb +58 -49
- data/lib/rubygems/commands/unpack_command.rb +15 -44
- data/lib/rubygems/commands/update_command.rb +133 -81
- data/lib/rubygems/commands/which_command.rb +8 -11
- data/lib/rubygems/commands/yank_command.rb +22 -19
- data/lib/rubygems/compatibility.rb +7 -5
- data/lib/rubygems/config_file.rb +101 -47
- data/lib/rubygems/core_ext/kernel_gem.rb +8 -12
- data/lib/rubygems/core_ext/kernel_require.rb +124 -83
- data/lib/rubygems/core_ext/kernel_warn.rb +35 -30
- data/lib/rubygems/core_ext/tcpsocket_init.rb +52 -0
- data/lib/rubygems/defaults.rb +131 -55
- data/lib/rubygems/dependency.rb +44 -27
- data/lib/rubygems/dependency_installer.rb +49 -205
- data/lib/rubygems/dependency_list.rb +24 -25
- data/lib/rubygems/deprecate.rb +106 -12
- data/lib/rubygems/doctor.rb +22 -22
- data/lib/rubygems/errors.rb +8 -14
- data/lib/rubygems/exceptions.rb +35 -33
- data/lib/rubygems/ext/build_error.rb +2 -0
- data/lib/rubygems/ext/builder.rb +71 -95
- data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +27 -0
- data/lib/rubygems/ext/cargo_builder.rb +360 -0
- 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 +45 -65
- 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 +179 -54
- data/lib/rubygems/indexer.rb +38 -53
- 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 +230 -173
- 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 -5
- data/lib/rubygems/name_tuple.rb +10 -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 +2308 -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 +73 -66
- data/lib/rubygems/package/tar_reader/entry.rb +8 -9
- data/lib/rubygems/package/tar_reader.rb +16 -13
- data/lib/rubygems/package/tar_writer.rb +12 -22
- data/lib/rubygems/package.rb +142 -125
- data/lib/rubygems/package_task.rb +5 -11
- data/lib/rubygems/path_support.rb +3 -8
- data/lib/rubygems/platform.rb +113 -73
- data/lib/rubygems/psych_tree.rb +1 -1
- data/lib/rubygems/query_utils.rb +351 -0
- data/lib/rubygems/rdoc.rb +4 -16
- data/lib/rubygems/remote_fetcher.rb +64 -136
- data/lib/rubygems/request/connection_pools.rb +7 -11
- data/lib/rubygems/request/http_pool.rb +2 -3
- data/lib/rubygems/request.rb +31 -32
- data/lib/rubygems/request_set/gem_dependency_api.rb +135 -136
- data/lib/rubygems/request_set/lockfile/parser.rb +28 -28
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -5
- data/lib/rubygems/request_set/lockfile.rb +21 -20
- data/lib/rubygems/request_set.rb +30 -43
- data/lib/rubygems/requirement.rb +42 -64
- data/lib/rubygems/resolver/activation_request.rb +29 -53
- data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
- data/lib/rubygems/resolver/api_set.rb +33 -26
- data/lib/rubygems/resolver/api_specification.rb +30 -16
- data/lib/rubygems/resolver/best_set.rb +9 -11
- data/lib/rubygems/resolver/composed_set.rb +3 -5
- data/lib/rubygems/resolver/conflict.rb +12 -19
- 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 +69 -27
- data/lib/rubygems/resolver/local_specification.rb +2 -4
- data/lib/rubygems/resolver/lock_set.rb +7 -9
- data/lib/rubygems/resolver/lock_specification.rb +6 -8
- 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 +42 -9
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +82 -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 -1
- 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 -3
- data/lib/rubygems/resolver/vendor_set.rb +1 -3
- data/lib/rubygems/resolver/vendor_specification.rb +3 -5
- data/lib/rubygems/resolver.rb +58 -54
- data/lib/rubygems/s3_uri_signer.rb +175 -0
- data/lib/rubygems/safe_yaml.rb +14 -16
- data/lib/rubygems/security/policies.rb +47 -47
- data/lib/rubygems/security/policy.rb +25 -29
- data/lib/rubygems/security/signer.rb +16 -18
- data/lib/rubygems/security/trust_dir.rb +5 -6
- data/lib/rubygems/security.rb +90 -69
- data/lib/rubygems/security_option.rb +7 -8
- 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 +50 -38
- data/lib/rubygems/source_list.rb +9 -13
- data/lib/rubygems/spec_fetcher.rb +52 -64
- data/lib/rubygems/specification.rb +432 -463
- data/lib/rubygems/specification_policy.rb +185 -87
- data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
- data/lib/rubygems/stub_specification.rb +24 -29
- data/lib/rubygems/text.rb +21 -21
- data/lib/rubygems/tsort/.document +1 -0
- data/lib/rubygems/tsort/LICENSE.txt +22 -0
- data/lib/rubygems/tsort/lib/tsort.rb +452 -0
- data/lib/rubygems/tsort.rb +3 -0
- data/lib/rubygems/uninstaller.rb +110 -57
- data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
- data/lib/rubygems/update_suggestion.rb +69 -0
- data/lib/rubygems/uri.rb +126 -0
- data/lib/rubygems/uri_formatter.rb +2 -4
- data/lib/rubygems/user_interaction.rb +46 -49
- data/lib/rubygems/util/licenses.rb +511 -404
- data/lib/rubygems/util.rb +40 -56
- data/lib/rubygems/validator.rb +15 -37
- data/lib/rubygems/version.rb +48 -29
- data/lib/rubygems/version_option.rb +11 -5
- data/lib/rubygems.rb +305 -332
- data/rubygems-update.gemspec +6 -13
- data/setup.rb +11 -22
- data/test/rubygems/alternate_cert.pem +14 -14
- data/test/rubygems/alternate_cert_32.pem +15 -15
- data/test/rubygems/alternate_key.pem +25 -25
- data/test/rubygems/bundler_test_gem.rb +419 -0
- data/test/rubygems/ca_cert.pem +74 -65
- data/test/rubygems/child_cert.pem +15 -16
- data/test/rubygems/child_cert_32.pem +15 -16
- data/test/rubygems/child_key.pem +25 -25
- data/test/rubygems/client.pem +103 -45
- 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/test/rubygems/expired_cert.pem +15 -15
- data/test/rubygems/future_cert.pem +15 -15
- data/test/rubygems/future_cert_32.pem +15 -15
- data/test/rubygems/grandchild_cert.pem +15 -16
- data/test/rubygems/grandchild_cert_32.pem +15 -16
- data/test/rubygems/grandchild_key.pem +25 -25
- data/{lib/rubygems/test_case.rb → test/rubygems/helper.rb} +505 -507
- data/{lib → test}/rubygems/installer_test_case.rb +115 -53
- data/test/rubygems/invalid_issuer_cert.pem +16 -16
- data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
- data/test/rubygems/invalid_key.pem +25 -25
- data/test/rubygems/invalid_signer_cert.pem +15 -15
- data/test/rubygems/invalid_signer_cert_32.pem +15 -15
- data/test/rubygems/invalidchild_cert.pem +15 -16
- data/test/rubygems/invalidchild_cert_32.pem +15 -16
- data/test/rubygems/invalidchild_key.pem +25 -25
- data/{lib → test}/rubygems/package/tar_test_case.rb +4 -6
- data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
- 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/standarderror/rubygems_plugin.rb +1 -1
- data/test/rubygems/private_ec_key.pem +9 -0
- data/test/rubygems/private_key.pem +25 -25
- data/test/rubygems/public_cert.pem +16 -16
- data/test/rubygems/public_cert_32.pem +15 -15
- data/test/rubygems/public_key.pem +7 -7
- 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 +12 -0
- data/test/rubygems/ssl_cert.pem +78 -17
- data/test/rubygems/ssl_key.pem +25 -13
- data/test/rubygems/test_bundled_ca.rb +44 -47
- data/test/rubygems/test_config.rb +5 -7
- data/test/rubygems/test_deprecate.rb +90 -10
- data/test/rubygems/test_exit.rb +17 -0
- data/test/rubygems/test_gem.rb +679 -885
- data/test/rubygems/test_gem_available_set.rb +24 -25
- data/test/rubygems/test_gem_bundler_version_finder.rb +42 -42
- data/test/rubygems/test_gem_command.rb +186 -39
- data/test/rubygems/test_gem_command_manager.rb +166 -36
- data/test/rubygems/test_gem_commands_build_command.rb +436 -52
- data/test/rubygems/test_gem_commands_cert_command.rb +193 -124
- data/test/rubygems/test_gem_commands_check_command.rb +9 -11
- data/test/rubygems/test_gem_commands_cleanup_command.rb +87 -62
- data/test/rubygems/test_gem_commands_contents_command.rb +73 -42
- data/test/rubygems/test_gem_commands_dependency_command.rb +39 -41
- data/test/rubygems/test_gem_commands_environment_command.rb +60 -48
- data/test/rubygems/test_gem_commands_fetch_command.rb +163 -32
- data/test/rubygems/test_gem_commands_generate_index_command.rb +39 -9
- data/test/rubygems/test_gem_commands_help_command.rb +34 -19
- data/test/rubygems/test_gem_commands_info_command.rb +34 -9
- data/test/rubygems/test_gem_commands_install_command.rb +600 -173
- 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 -4
- data/test/rubygems/test_gem_commands_open_command.rb +16 -19
- data/test/rubygems/test_gem_commands_outdated_command.rb +24 -7
- data/test/rubygems/test_gem_commands_owner_command.rb +183 -49
- data/test/rubygems/test_gem_commands_pristine_command.rb +222 -89
- data/test/rubygems/test_gem_commands_push_command.rb +178 -69
- data/test/rubygems/test_gem_commands_query_command.rb +114 -89
- data/test/rubygems/test_gem_commands_search_command.rb +2 -4
- data/test/rubygems/test_gem_commands_server_command.rb +6 -46
- data/test/rubygems/test_gem_commands_setup_command.rb +334 -157
- data/test/rubygems/test_gem_commands_signin_command.rb +187 -27
- data/test/rubygems/test_gem_commands_signout_command.rb +3 -10
- data/test/rubygems/test_gem_commands_sources_command.rb +266 -33
- 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 +230 -95
- data/test/rubygems/test_gem_commands_unpack_command.rb +32 -34
- data/test/rubygems/test_gem_commands_update_command.rb +412 -102
- data/test/rubygems/test_gem_commands_which_command.rb +12 -14
- data/test/rubygems/test_gem_commands_yank_command.rb +107 -26
- data/test/rubygems/test_gem_config_file.rb +120 -96
- data/test/rubygems/test_gem_dependency.rb +94 -86
- data/test/rubygems/test_gem_dependency_installer.rb +305 -388
- data/test/rubygems/test_gem_dependency_list.rb +66 -61
- 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 +116 -106
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +8 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +233 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +27 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +1 -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 +233 -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/rust_ruby_example.gemspec +8 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +51 -0
- data/test/rubygems/test_gem_ext_cargo_builder.rb +166 -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 +60 -0
- data/test/rubygems/test_gem_ext_cmake_builder.rb +32 -37
- data/test/rubygems/test_gem_ext_configure_builder.rb +23 -31
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +75 -79
- data/test/rubygems/test_gem_ext_rake_builder.rb +49 -30
- data/test/rubygems/test_gem_gem_runner.rb +52 -7
- data/test/rubygems/test_gem_gemcutter_utilities.rb +91 -76
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -6
- data/test/rubygems/test_gem_indexer.rb +120 -105
- data/test/rubygems/test_gem_install_update_options.rb +57 -33
- data/test/rubygems/test_gem_installer.rb +1230 -644
- 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 +396 -266
- data/test/rubygems/test_gem_package_old.rb +57 -56
- data/test/rubygems/test_gem_package_tar_header.rb +108 -50
- data/test/rubygems/test_gem_package_tar_reader.rb +8 -10
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +77 -20
- data/test/rubygems/test_gem_package_tar_writer.rb +107 -101
- data/test/rubygems/test_gem_package_task.rb +58 -25
- data/test/rubygems/test_gem_path_support.rb +29 -29
- data/test/rubygems/test_gem_platform.rb +388 -199
- data/test/rubygems/test_gem_rdoc.rb +20 -155
- data/test/rubygems/test_gem_remote_fetcher.rb +474 -303
- data/test/rubygems/test_gem_request.rb +128 -85
- data/test/rubygems/test_gem_request_connection_pools.rb +32 -32
- data/test/rubygems/test_gem_request_set.rb +186 -110
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +280 -261
- data/test/rubygems/test_gem_request_set_lockfile.rb +93 -94
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +68 -69
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +136 -136
- data/test/rubygems/test_gem_requirement.rb +140 -55
- data/test/rubygems/test_gem_resolver.rb +224 -115
- data/test/rubygems/test_gem_resolver_activation_request.rb +9 -40
- 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 -18
- 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 -22
- data/test/rubygems/test_gem_resolver_index_set.rb +14 -16
- data/test/rubygems/test_gem_resolver_index_specification.rb +21 -18
- data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -8
- data/test/rubygems/test_gem_resolver_installer_set.rb +106 -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 -10
- 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 +109 -79
- data/test/rubygems/test_gem_security_policy.rb +102 -107
- data/test/rubygems/test_gem_security_signer.rb +51 -52
- data/test/rubygems/test_gem_security_trust_dir.rb +14 -16
- data/test/rubygems/test_gem_silent_ui.rb +47 -42
- data/test/rubygems/test_gem_source.rb +66 -51
- data/test/rubygems/test_gem_source_fetch_problem.rb +17 -8
- data/test/rubygems/test_gem_source_git.rb +74 -74
- data/test/rubygems/test_gem_source_installed.rb +16 -18
- data/test/rubygems/test_gem_source_list.rb +5 -5
- data/test/rubygems/test_gem_source_local.rb +15 -16
- data/test/rubygems/test_gem_source_lock.rb +31 -33
- data/test/rubygems/test_gem_source_specific_file.rb +18 -19
- 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 +1051 -1071
- data/test/rubygems/test_gem_stream_ui.rb +25 -23
- data/test/rubygems/test_gem_stub_specification.rb +39 -56
- data/test/rubygems/test_gem_text.rb +8 -3
- data/test/rubygems/test_gem_uninstaller.rb +269 -100
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -5
- data/test/rubygems/test_gem_update_suggestion.rb +208 -0
- 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 +46 -34
- data/test/rubygems/test_gem_validator.rb +12 -15
- data/test/rubygems/test_gem_version.rb +49 -34
- data/test/rubygems/test_gem_version_option.rb +16 -18
- data/test/rubygems/test_kernel.rb +61 -53
- data/test/rubygems/test_project_sanity.rb +20 -0
- data/test/rubygems/test_remote_fetch_error.rb +7 -8
- data/test/rubygems/test_require.rb +415 -121
- data/test/rubygems/test_rubygems.rb +74 -0
- data/{lib/rubygems/test_utilities.rb → test/rubygems/utilities.rb} +74 -50
- data/test/rubygems/wrong_key_cert.pem +15 -15
- data/test/rubygems/wrong_key_cert_32.pem +15 -15
- data/test/test_changelog_generator.rb +17 -0
- metadata +218 -244
- data/.rubocop.yml +0 -66
- data/.travis.yml +0 -38
- data/History.txt +0 -3965
- data/Rakefile +0 -372
- 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/dep_proxy.rb +0 -48
- data/bundler/lib/bundler/gem_remote_fetcher.rb +0 -43
- data/bundler/lib/bundler/gemdeps.rb +0 -29
- data/bundler/lib/bundler/psyched_yaml.rb +0 -37
- 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/gems.rb +0 -8
- data/bundler/lib/bundler/templates/newgem/test/test_helper.rb.tt +0 -4
- data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -7
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -81
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -136
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -223
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -143
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -101
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -837
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -12
- 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/bundler/lib/bundler/version_ranges.rb +0 -76
- data/bundler/man/bundle-gem.1 +0 -80
- data/bundler/man/bundle-gem.ronn +0 -78
- data/bundler/man/bundle-package.1 +0 -55
- data/lib/rubygems/psych_additions.rb +0 -10
- data/lib/rubygems/server.rb +0 -878
- 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/rubygems/syck_hack.rb +0 -77
- 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 -607
- data/util/CL2notes +0 -55
- data/util/ci +0 -77
- data/util/create_certs.rb +0 -171
- 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
- /data/bundler/lib/bundler/{ssl_certs → man}/.document +0 -0
- /data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.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-lock.ronn → lib/bundler/man/bundle-lock.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
- /data/{bundler/lib/bundler/ssl_certs/index.rubygems.org → lib/rubygems/ssl_certs/rubygems.org}/GlobalSignRootCA.pem +0 -0
@@ -1,24 +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 "Skipping `gem cert` tests on jruby."
|
11
|
+
end
|
10
12
|
|
11
|
-
|
12
|
-
|
13
|
+
class TestGemCommandsCertCommand < Gem::TestCase
|
14
|
+
ALTERNATE_CERT = load_cert "alternate"
|
15
|
+
EXPIRED_PUBLIC_CERT = load_cert "expired"
|
13
16
|
|
14
|
-
ALTERNATE_KEY_FILE
|
15
|
-
PRIVATE_KEY_FILE
|
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
|
-
ALTERNATE_CERT_FILE = cert_path
|
19
|
-
CHILD_CERT_FILE = cert_path
|
20
|
-
PUBLIC_CERT_FILE = cert_path
|
21
|
-
EXPIRED_PUBLIC_CERT_FILE = cert_path
|
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
26
|
|
23
27
|
def setup
|
24
28
|
super
|
@@ -26,13 +30,21 @@ class TestGemCommandsCertCommand < Gem::TestCase
|
|
26
30
|
@cmd = Gem::Commands::CertCommand.new
|
27
31
|
|
28
32
|
@trust_dir = Gem::Security.trust_dir
|
33
|
+
|
34
|
+
@cleanup = []
|
35
|
+
end
|
36
|
+
|
37
|
+
def teardown
|
38
|
+
FileUtils.rm_f(@cleanup)
|
39
|
+
|
40
|
+
super
|
29
41
|
end
|
30
42
|
|
31
43
|
def test_certificates_matching
|
32
44
|
@trust_dir.trust_cert PUBLIC_CERT
|
33
45
|
@trust_dir.trust_cert ALTERNATE_CERT
|
34
46
|
|
35
|
-
matches = @cmd.certificates_matching
|
47
|
+
matches = @cmd.certificates_matching ""
|
36
48
|
|
37
49
|
# HACK OpenSSL::X509::Certificate#== is Object#==, so do this the hard way
|
38
50
|
match = matches.next
|
@@ -43,7 +55,7 @@ class TestGemCommandsCertCommand < Gem::TestCase
|
|
43
55
|
assert_equal PUBLIC_CERT.to_pem, match.first.to_pem
|
44
56
|
assert_equal @trust_dir.cert_path(PUBLIC_CERT), match.last
|
45
57
|
|
46
|
-
|
58
|
+
assert_raise StopIteration do
|
47
59
|
matches.next
|
48
60
|
end
|
49
61
|
end
|
@@ -52,13 +64,13 @@ class TestGemCommandsCertCommand < Gem::TestCase
|
|
52
64
|
@trust_dir.trust_cert PUBLIC_CERT
|
53
65
|
@trust_dir.trust_cert ALTERNATE_CERT
|
54
66
|
|
55
|
-
matches = @cmd.certificates_matching
|
67
|
+
matches = @cmd.certificates_matching "alternate"
|
56
68
|
|
57
69
|
match = matches.next
|
58
70
|
assert_equal ALTERNATE_CERT.to_pem, match.first.to_pem
|
59
71
|
assert_equal @trust_dir.cert_path(ALTERNATE_CERT), match.last
|
60
72
|
|
61
|
-
|
73
|
+
assert_raise StopIteration do
|
62
74
|
matches.next
|
63
75
|
end
|
64
76
|
end
|
@@ -72,14 +84,14 @@ class TestGemCommandsCertCommand < Gem::TestCase
|
|
72
84
|
|
73
85
|
cert_path = @trust_dir.cert_path PUBLIC_CERT
|
74
86
|
|
75
|
-
|
87
|
+
assert_path_exist cert_path
|
76
88
|
|
77
89
|
assert_equal "Added '/CN=nobody/DC=example'\n", @ui.output
|
78
90
|
assert_empty @ui.error
|
79
91
|
end
|
80
92
|
|
81
93
|
def test_execute_add_twice
|
82
|
-
self.class.cert_path
|
94
|
+
self.class.cert_path "alternate"
|
83
95
|
|
84
96
|
@cmd.handle_options %W[
|
85
97
|
--add #{PUBLIC_CERT_FILE}
|
@@ -100,7 +112,7 @@ Added '/CN=alternate/DC=example'
|
|
100
112
|
end
|
101
113
|
|
102
114
|
def test_execute_build
|
103
|
-
passphrase =
|
115
|
+
passphrase = "Foo bar"
|
104
116
|
|
105
117
|
@cmd.handle_options %W[--build nobody@example.com]
|
106
118
|
|
@@ -127,12 +139,48 @@ Added '/CN=alternate/DC=example'
|
|
127
139
|
assert_empty output
|
128
140
|
assert_empty @build_ui.error
|
129
141
|
|
130
|
-
|
131
|
-
|
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
|
132
180
|
end
|
133
181
|
|
134
182
|
def test_execute_build_bad_email_address
|
135
|
-
passphrase =
|
183
|
+
passphrase = "Foo bar"
|
136
184
|
email = "nobody@"
|
137
185
|
|
138
186
|
@cmd.handle_options %W[--build #{email}]
|
@@ -140,21 +188,20 @@ Added '/CN=alternate/DC=example'
|
|
140
188
|
@build_ui = Gem::MockGemUi.new "#{passphrase}\n#{passphrase}"
|
141
189
|
|
142
190
|
use_ui @build_ui do
|
143
|
-
|
144
|
-
e = assert_raises Gem::CommandLineError do
|
191
|
+
e = assert_raise Gem::CommandLineError do
|
145
192
|
@cmd.execute
|
146
193
|
end
|
147
194
|
|
148
195
|
assert_equal "Invalid email address #{email}",
|
149
196
|
e.message
|
150
197
|
|
151
|
-
|
152
|
-
|
198
|
+
assert_path_not_exist File.join(@tempdir, "gem-private_key.pem")
|
199
|
+
assert_path_not_exist File.join(@tempdir, "gem-public_cert.pem")
|
153
200
|
end
|
154
201
|
end
|
155
202
|
|
156
203
|
def test_execute_build_expiration_days
|
157
|
-
passphrase =
|
204
|
+
passphrase = "Foo bar"
|
158
205
|
|
159
206
|
@cmd.handle_options %W[
|
160
207
|
--build nobody@example.com
|
@@ -184,8 +231,8 @@ Added '/CN=alternate/DC=example'
|
|
184
231
|
assert_empty output
|
185
232
|
assert_empty @build_ui.error
|
186
233
|
|
187
|
-
|
188
|
-
|
234
|
+
assert_path_exist File.join(@tempdir, "gem-private_key.pem")
|
235
|
+
assert_path_exist File.join(@tempdir, "gem-public_cert.pem")
|
189
236
|
|
190
237
|
pem = File.read("#{@tempdir}/gem-public_cert.pem")
|
191
238
|
cert = OpenSSL::X509::Certificate.new(pem)
|
@@ -195,15 +242,15 @@ Added '/CN=alternate/DC=example'
|
|
195
242
|
end
|
196
243
|
|
197
244
|
def test_execute_build_bad_passphrase_confirmation
|
198
|
-
passphrase =
|
199
|
-
passphrase_confirmation =
|
245
|
+
passphrase = "Foo bar"
|
246
|
+
passphrase_confirmation = "Fu bar"
|
200
247
|
|
201
248
|
@cmd.handle_options %W[--build nobody@example.com]
|
202
249
|
|
203
250
|
@build_ui = Gem::MockGemUi.new "#{passphrase}\n#{passphrase_confirmation}"
|
204
251
|
|
205
252
|
use_ui @build_ui do
|
206
|
-
e =
|
253
|
+
e = assert_raise Gem::CommandLineError do
|
207
254
|
@cmd.execute
|
208
255
|
end
|
209
256
|
|
@@ -218,11 +265,10 @@ Added '/CN=alternate/DC=example'
|
|
218
265
|
|
219
266
|
assert_equal "Passphrase and passphrase confirmation don't match",
|
220
267
|
e.message
|
221
|
-
|
222
268
|
end
|
223
269
|
|
224
|
-
|
225
|
-
|
270
|
+
assert_path_not_exist File.join(@tempdir, "gem-private_key.pem")
|
271
|
+
assert_path_not_exist File.join(@tempdir, "gem-public_cert.pem")
|
226
272
|
end
|
227
273
|
|
228
274
|
def test_execute_build_key
|
@@ -243,8 +289,8 @@ Added '/CN=alternate/DC=example'
|
|
243
289
|
assert_empty output
|
244
290
|
assert_empty @ui.error
|
245
291
|
|
246
|
-
|
247
|
-
|
292
|
+
assert_path_exist File.join(@tempdir, "gem-public_cert.pem")
|
293
|
+
assert_path_not_exist File.join(@tempdir, "gem-private_key.pem")
|
248
294
|
end
|
249
295
|
|
250
296
|
def test_execute_build_encrypted_key
|
@@ -265,7 +311,29 @@ Added '/CN=alternate/DC=example'
|
|
265
311
|
assert_empty output
|
266
312
|
assert_empty @ui.error
|
267
313
|
|
268
|
-
|
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")
|
269
337
|
end
|
270
338
|
|
271
339
|
def test_execute_certificate
|
@@ -273,8 +341,8 @@ Added '/CN=alternate/DC=example'
|
|
273
341
|
@cmd.handle_options %W[--certificate #{PUBLIC_CERT_FILE}]
|
274
342
|
end
|
275
343
|
|
276
|
-
assert_equal
|
277
|
-
assert_equal
|
344
|
+
assert_equal "", @ui.output
|
345
|
+
assert_equal "", @ui.error
|
278
346
|
|
279
347
|
assert_equal PUBLIC_CERT.to_pem, @cmd.options[:issuer_cert].to_pem
|
280
348
|
end
|
@@ -313,8 +381,8 @@ Added '/CN=alternate/DC=example'
|
|
313
381
|
@cmd.send :handle_options, %W[--private-key #{PRIVATE_KEY_FILE}]
|
314
382
|
end
|
315
383
|
|
316
|
-
assert_equal
|
317
|
-
assert_equal
|
384
|
+
assert_equal "", @ui.output
|
385
|
+
assert_equal "", @ui.error
|
318
386
|
|
319
387
|
assert_equal PRIVATE_KEY.to_pem, @cmd.options[:key].to_pem
|
320
388
|
end
|
@@ -324,8 +392,8 @@ Added '/CN=alternate/DC=example'
|
|
324
392
|
@cmd.send :handle_options, %W[--private-key #{ENCRYPTED_PRIVATE_KEY_PATH}]
|
325
393
|
end
|
326
394
|
|
327
|
-
assert_equal
|
328
|
-
assert_equal
|
395
|
+
assert_equal "", @ui.output
|
396
|
+
assert_equal "", @ui.error
|
329
397
|
|
330
398
|
assert_equal ENCRYPTED_PRIVATE_KEY.to_pem, @cmd.options[:key].to_pem
|
331
399
|
end
|
@@ -335,7 +403,7 @@ Added '/CN=alternate/DC=example'
|
|
335
403
|
|
336
404
|
cert_path = @trust_dir.cert_path PUBLIC_CERT
|
337
405
|
|
338
|
-
|
406
|
+
assert_path_exist cert_path
|
339
407
|
|
340
408
|
@cmd.handle_options %W[--remove nobody]
|
341
409
|
|
@@ -344,9 +412,9 @@ Added '/CN=alternate/DC=example'
|
|
344
412
|
end
|
345
413
|
|
346
414
|
assert_equal "Removed '/CN=nobody/DC=example'\n", @ui.output
|
347
|
-
assert_equal
|
415
|
+
assert_equal "", @ui.error
|
348
416
|
|
349
|
-
|
417
|
+
assert_path_not_exist cert_path
|
350
418
|
end
|
351
419
|
|
352
420
|
def test_execute_remove_multiple
|
@@ -356,8 +424,8 @@ Added '/CN=alternate/DC=example'
|
|
356
424
|
public_path = @trust_dir.cert_path PUBLIC_CERT
|
357
425
|
alternate_path = @trust_dir.cert_path ALTERNATE_CERT
|
358
426
|
|
359
|
-
|
360
|
-
|
427
|
+
assert_path_exist public_path
|
428
|
+
assert_path_exist alternate_path
|
361
429
|
|
362
430
|
@cmd.handle_options %W[--remove example]
|
363
431
|
|
@@ -371,10 +439,10 @@ Removed '/CN=nobody/DC=example'
|
|
371
439
|
EXPECTED
|
372
440
|
|
373
441
|
assert_equal expected, @ui.output
|
374
|
-
assert_equal
|
442
|
+
assert_equal "", @ui.error
|
375
443
|
|
376
|
-
|
377
|
-
|
444
|
+
assert_path_not_exist public_path
|
445
|
+
assert_path_not_exist alternate_path
|
378
446
|
end
|
379
447
|
|
380
448
|
def test_execute_remove_twice
|
@@ -384,8 +452,8 @@ Removed '/CN=nobody/DC=example'
|
|
384
452
|
public_path = @trust_dir.cert_path PUBLIC_CERT
|
385
453
|
alternate_path = @trust_dir.cert_path ALTERNATE_CERT
|
386
454
|
|
387
|
-
|
388
|
-
|
455
|
+
assert_path_exist public_path
|
456
|
+
assert_path_exist alternate_path
|
389
457
|
|
390
458
|
@cmd.handle_options %W[--remove nobody --remove alternate]
|
391
459
|
|
@@ -399,17 +467,17 @@ Removed '/CN=alternate/DC=example'
|
|
399
467
|
EXPECTED
|
400
468
|
|
401
469
|
assert_equal expected, @ui.output
|
402
|
-
assert_equal
|
470
|
+
assert_equal "", @ui.error
|
403
471
|
|
404
|
-
|
405
|
-
|
472
|
+
assert_path_not_exist public_path
|
473
|
+
assert_path_not_exist alternate_path
|
406
474
|
end
|
407
475
|
|
408
476
|
def test_execute_sign
|
409
|
-
path = File.join @tempdir,
|
477
|
+
path = File.join @tempdir, "cert.pem"
|
410
478
|
Gem::Security.write ALTERNATE_CERT, path, 0600
|
411
479
|
|
412
|
-
assert_equal
|
480
|
+
assert_equal "/CN=alternate/DC=example", ALTERNATE_CERT.issuer.to_s
|
413
481
|
|
414
482
|
@cmd.handle_options %W[
|
415
483
|
--private-key #{PRIVATE_KEY_FILE}
|
@@ -422,12 +490,12 @@ Removed '/CN=alternate/DC=example'
|
|
422
490
|
@cmd.execute
|
423
491
|
end
|
424
492
|
|
425
|
-
assert_equal
|
426
|
-
assert_equal
|
493
|
+
assert_equal "", @ui.output
|
494
|
+
assert_equal "", @ui.error
|
427
495
|
|
428
496
|
cert = OpenSSL::X509::Certificate.new File.read path
|
429
497
|
|
430
|
-
assert_equal
|
498
|
+
assert_equal "/CN=nobody/DC=example", cert.issuer.to_s
|
431
499
|
|
432
500
|
mask = 0100600 & (~File.umask)
|
433
501
|
|
@@ -435,10 +503,10 @@ Removed '/CN=alternate/DC=example'
|
|
435
503
|
end
|
436
504
|
|
437
505
|
def test_execute_sign_encrypted_key
|
438
|
-
path = File.join @tempdir,
|
506
|
+
path = File.join @tempdir, "cert.pem"
|
439
507
|
Gem::Security.write ALTERNATE_CERT, path, 0600
|
440
508
|
|
441
|
-
assert_equal
|
509
|
+
assert_equal "/CN=alternate/DC=example", ALTERNATE_CERT.issuer.to_s
|
442
510
|
|
443
511
|
@cmd.handle_options %W[
|
444
512
|
--private-key #{ENCRYPTED_PRIVATE_KEY_PATH}
|
@@ -451,12 +519,12 @@ Removed '/CN=alternate/DC=example'
|
|
451
519
|
@cmd.execute
|
452
520
|
end
|
453
521
|
|
454
|
-
assert_equal
|
455
|
-
assert_equal
|
522
|
+
assert_equal "", @ui.output
|
523
|
+
assert_equal "", @ui.error
|
456
524
|
|
457
525
|
cert = OpenSSL::X509::Certificate.new File.read path
|
458
526
|
|
459
|
-
assert_equal
|
527
|
+
assert_equal "/CN=nobody/DC=example", cert.issuer.to_s
|
460
528
|
|
461
529
|
mask = 0100600 & (~File.umask)
|
462
530
|
|
@@ -464,18 +532,18 @@ Removed '/CN=alternate/DC=example'
|
|
464
532
|
end
|
465
533
|
|
466
534
|
def test_execute_sign_default
|
467
|
-
FileUtils.mkdir_p File.join Gem.user_home,
|
535
|
+
FileUtils.mkdir_p File.join Gem.user_home, ".gem"
|
468
536
|
|
469
|
-
private_key_path = File.join Gem.user_home,
|
537
|
+
private_key_path = File.join Gem.user_home, ".gem", "gem-private_key.pem"
|
470
538
|
Gem::Security.write PRIVATE_KEY, private_key_path
|
471
539
|
|
472
|
-
public_cert_path = File.join Gem.user_home,
|
540
|
+
public_cert_path = File.join Gem.user_home, ".gem", "gem-public_cert.pem"
|
473
541
|
Gem::Security.write PUBLIC_CERT, public_cert_path
|
474
542
|
|
475
|
-
path = File.join @tempdir,
|
543
|
+
path = File.join @tempdir, "cert.pem"
|
476
544
|
Gem::Security.write ALTERNATE_CERT, path, 0600
|
477
545
|
|
478
|
-
assert_equal
|
546
|
+
assert_equal "/CN=alternate/DC=example", ALTERNATE_CERT.issuer.to_s
|
479
547
|
|
480
548
|
@cmd.handle_options %W[--sign #{path}]
|
481
549
|
|
@@ -483,12 +551,12 @@ Removed '/CN=alternate/DC=example'
|
|
483
551
|
@cmd.execute
|
484
552
|
end
|
485
553
|
|
486
|
-
assert_equal
|
487
|
-
assert_equal
|
554
|
+
assert_equal "", @ui.output
|
555
|
+
assert_equal "", @ui.error
|
488
556
|
|
489
557
|
cert = OpenSSL::X509::Certificate.new File.read path
|
490
558
|
|
491
|
-
assert_equal
|
559
|
+
assert_equal "/CN=nobody/DC=example", cert.issuer.to_s
|
492
560
|
|
493
561
|
mask = 0100600 & (~File.umask)
|
494
562
|
|
@@ -496,18 +564,18 @@ Removed '/CN=alternate/DC=example'
|
|
496
564
|
end
|
497
565
|
|
498
566
|
def test_execute_sign_default_encrypted_key
|
499
|
-
FileUtils.mkdir_p File.join(Gem.user_home,
|
567
|
+
FileUtils.mkdir_p File.join(Gem.user_home, ".gem")
|
500
568
|
|
501
|
-
private_key_path = File.join Gem.user_home,
|
569
|
+
private_key_path = File.join Gem.user_home, ".gem", "gem-private_key.pem"
|
502
570
|
Gem::Security.write ENCRYPTED_PRIVATE_KEY, private_key_path, 0600, PRIVATE_KEY_PASSPHRASE
|
503
571
|
|
504
|
-
public_cert_path = File.join Gem.user_home,
|
572
|
+
public_cert_path = File.join Gem.user_home, ".gem", "gem-public_cert.pem"
|
505
573
|
Gem::Security.write PUBLIC_CERT, public_cert_path
|
506
574
|
|
507
|
-
path = File.join @tempdir,
|
575
|
+
path = File.join @tempdir, "cert.pem"
|
508
576
|
Gem::Security.write ALTERNATE_CERT, path, 0600
|
509
577
|
|
510
|
-
assert_equal
|
578
|
+
assert_equal "/CN=alternate/DC=example", ALTERNATE_CERT.issuer.to_s
|
511
579
|
|
512
580
|
@cmd.handle_options %W[--sign #{path}]
|
513
581
|
|
@@ -515,12 +583,12 @@ Removed '/CN=alternate/DC=example'
|
|
515
583
|
@cmd.execute
|
516
584
|
end
|
517
585
|
|
518
|
-
assert_equal
|
519
|
-
assert_equal
|
586
|
+
assert_equal "", @ui.output
|
587
|
+
assert_equal "", @ui.error
|
520
588
|
|
521
589
|
cert = OpenSSL::X509::Certificate.new File.read path
|
522
590
|
|
523
|
-
assert_equal
|
591
|
+
assert_equal "/CN=nobody/DC=example", cert.issuer.to_s
|
524
592
|
|
525
593
|
mask = 0100600 & (~File.umask)
|
526
594
|
|
@@ -528,25 +596,25 @@ Removed '/CN=alternate/DC=example'
|
|
528
596
|
end
|
529
597
|
|
530
598
|
def test_execute_sign_no_cert
|
531
|
-
FileUtils.mkdir_p File.join Gem.user_home,
|
599
|
+
FileUtils.mkdir_p File.join Gem.user_home, ".gem"
|
532
600
|
|
533
|
-
private_key_path = File.join Gem.user_home,
|
601
|
+
private_key_path = File.join Gem.user_home, ".gem", "gem-private_key.pem"
|
534
602
|
Gem::Security.write PRIVATE_KEY, private_key_path
|
535
603
|
|
536
|
-
path = File.join @tempdir,
|
604
|
+
path = File.join @tempdir, "cert.pem"
|
537
605
|
Gem::Security.write ALTERNATE_CERT, path, 0600
|
538
606
|
|
539
|
-
assert_equal
|
607
|
+
assert_equal "/CN=alternate/DC=example", ALTERNATE_CERT.issuer.to_s
|
540
608
|
|
541
609
|
@cmd.handle_options %W[--sign #{path}]
|
542
610
|
|
543
611
|
use_ui @ui do
|
544
|
-
|
612
|
+
assert_raise Gem::MockGemUi::TermError do
|
545
613
|
@cmd.execute
|
546
614
|
end
|
547
615
|
end
|
548
616
|
|
549
|
-
assert_equal
|
617
|
+
assert_equal "", @ui.output
|
550
618
|
|
551
619
|
expected = <<-EXPECTED
|
552
620
|
ERROR: --certificate not specified and ~/.gem/gem-public_cert.pem does not exist
|
@@ -556,25 +624,25 @@ ERROR: --certificate not specified and ~/.gem/gem-public_cert.pem does not exis
|
|
556
624
|
end
|
557
625
|
|
558
626
|
def test_execute_sign_no_key
|
559
|
-
FileUtils.mkdir_p File.join Gem.user_home,
|
627
|
+
FileUtils.mkdir_p File.join Gem.user_home, ".gem"
|
560
628
|
|
561
|
-
public_cert_path = File.join Gem.user_home,
|
629
|
+
public_cert_path = File.join Gem.user_home, ".gem", "gem-public_cert.pem"
|
562
630
|
Gem::Security.write PUBLIC_CERT, public_cert_path
|
563
631
|
|
564
|
-
path = File.join @tempdir,
|
632
|
+
path = File.join @tempdir, "cert.pem"
|
565
633
|
Gem::Security.write ALTERNATE_CERT, path, 0600
|
566
634
|
|
567
|
-
assert_equal
|
635
|
+
assert_equal "/CN=alternate/DC=example", ALTERNATE_CERT.issuer.to_s
|
568
636
|
|
569
637
|
@cmd.handle_options %W[--sign #{path}]
|
570
638
|
|
571
639
|
use_ui @ui do
|
572
|
-
|
640
|
+
assert_raise Gem::MockGemUi::TermError do
|
573
641
|
@cmd.execute
|
574
642
|
end
|
575
643
|
end
|
576
644
|
|
577
|
-
assert_equal
|
645
|
+
assert_equal "", @ui.output
|
578
646
|
|
579
647
|
expected = <<-EXPECTED
|
580
648
|
ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exist
|
@@ -587,12 +655,13 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
587
655
|
gem_path = File.join Gem.user_home, ".gem"
|
588
656
|
Dir.mkdir gem_path
|
589
657
|
|
590
|
-
path = File.join @tempdir,
|
658
|
+
path = File.join @tempdir, "cert.pem"
|
591
659
|
Gem::Security.write EXPIRED_PUBLIC_CERT, path, 0600
|
592
660
|
|
593
|
-
assert_equal
|
661
|
+
assert_equal "/CN=nobody/DC=example", EXPIRED_PUBLIC_CERT.issuer.to_s
|
594
662
|
|
595
663
|
tmp_expired_cert_file = File.join(Dir.tmpdir, File.basename(EXPIRED_PUBLIC_CERT_FILE))
|
664
|
+
@cleanup << tmp_expired_cert_file
|
596
665
|
File.write(tmp_expired_cert_file, File.read(EXPIRED_PUBLIC_CERT_FILE))
|
597
666
|
|
598
667
|
@cmd.handle_options %W[
|
@@ -611,19 +680,20 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
611
680
|
/INFO: Your certificate #{tmp_expired_cert_file} has been re-signed\nINFO: Your expired certificate will be located at: #{expected_path}\.[0-9]+/,
|
612
681
|
@ui.output
|
613
682
|
)
|
614
|
-
assert_equal
|
683
|
+
assert_equal "", @ui.error
|
615
684
|
end
|
616
685
|
|
617
686
|
def test_execute_re_sign_with_cert_expiration_length_days
|
618
687
|
gem_path = File.join Gem.user_home, ".gem"
|
619
688
|
Dir.mkdir gem_path
|
620
689
|
|
621
|
-
path = File.join @tempdir,
|
690
|
+
path = File.join @tempdir, "cert.pem"
|
622
691
|
Gem::Security.write EXPIRED_PUBLIC_CERT, path, 0600
|
623
692
|
|
624
|
-
assert_equal
|
693
|
+
assert_equal "/CN=nobody/DC=example", EXPIRED_PUBLIC_CERT.issuer.to_s
|
625
694
|
|
626
695
|
tmp_expired_cert_file = File.join(Dir.tmpdir, File.basename(EXPIRED_PUBLIC_CERT_FILE))
|
696
|
+
@cleanup << tmp_expired_cert_file
|
627
697
|
File.write(tmp_expired_cert_file, File.read(EXPIRED_PUBLIC_CERT_FILE))
|
628
698
|
|
629
699
|
@cmd.handle_options %W[
|
@@ -642,7 +712,7 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
642
712
|
cert_days_to_expire = (re_signed_cert.not_after - re_signed_cert.not_before).to_i / (24 * 60 * 60)
|
643
713
|
|
644
714
|
assert_equal(28, cert_days_to_expire)
|
645
|
-
assert_equal
|
715
|
+
assert_equal "", @ui.error
|
646
716
|
end
|
647
717
|
|
648
718
|
def test_handle_options
|
@@ -661,29 +731,29 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
661
731
|
]
|
662
732
|
|
663
733
|
assert_equal [PUBLIC_CERT.to_pem, ALTERNATE_CERT.to_pem],
|
664
|
-
@cmd.options[:add].map {
|
734
|
+
@cmd.options[:add].map {|cert| cert.to_pem }
|
665
735
|
|
666
736
|
assert_equal %w[nobody example], @cmd.options[:remove]
|
667
737
|
|
668
738
|
assert_equal %w[nobody@example other@example],
|
669
|
-
@cmd.options[:build].map {
|
739
|
+
@cmd.options[:build].map {|name| name.to_s }
|
670
740
|
|
671
|
-
assert_equal [
|
741
|
+
assert_equal ["", "example"], @cmd.options[:list]
|
672
742
|
end
|
673
743
|
|
674
744
|
def test_handle_options_add_bad
|
675
|
-
nonexistent = File.join @tempdir,
|
676
|
-
e =
|
745
|
+
nonexistent = File.join @tempdir, "nonexistent"
|
746
|
+
e = assert_raise Gem::OptionParser::InvalidArgument do
|
677
747
|
@cmd.handle_options %W[--add #{nonexistent}]
|
678
748
|
end
|
679
749
|
|
680
750
|
assert_equal "invalid argument: --add #{nonexistent}: does not exist",
|
681
751
|
e.message
|
682
752
|
|
683
|
-
bad = File.join @tempdir,
|
753
|
+
bad = File.join @tempdir, "bad"
|
684
754
|
FileUtils.touch bad
|
685
755
|
|
686
|
-
e =
|
756
|
+
e = assert_raise Gem::OptionParser::InvalidArgument do
|
687
757
|
@cmd.handle_options %W[--add #{bad}]
|
688
758
|
end
|
689
759
|
|
@@ -692,18 +762,18 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
692
762
|
end
|
693
763
|
|
694
764
|
def test_handle_options_certificate
|
695
|
-
nonexistent = File.join @tempdir,
|
696
|
-
e =
|
765
|
+
nonexistent = File.join @tempdir, "nonexistent"
|
766
|
+
e = assert_raise Gem::OptionParser::InvalidArgument do
|
697
767
|
@cmd.handle_options %W[--certificate #{nonexistent}]
|
698
768
|
end
|
699
769
|
|
700
770
|
assert_equal "invalid argument: --certificate #{nonexistent}: does not exist",
|
701
771
|
e.message
|
702
772
|
|
703
|
-
bad = File.join @tempdir,
|
773
|
+
bad = File.join @tempdir, "bad"
|
704
774
|
FileUtils.touch bad
|
705
775
|
|
706
|
-
e =
|
776
|
+
e = assert_raise Gem::OptionParser::InvalidArgument do
|
707
777
|
@cmd.handle_options %W[--certificate #{bad}]
|
708
778
|
end
|
709
779
|
|
@@ -713,8 +783,8 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
713
783
|
end
|
714
784
|
|
715
785
|
def test_handle_options_key_bad
|
716
|
-
nonexistent = File.join @tempdir,
|
717
|
-
e =
|
786
|
+
nonexistent = File.join @tempdir, "nonexistent"
|
787
|
+
e = assert_raise Gem::OptionParser::InvalidArgument do
|
718
788
|
@cmd.handle_options %W[--private-key #{nonexistent}]
|
719
789
|
end
|
720
790
|
|
@@ -722,17 +792,17 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
722
792
|
"--private-key #{nonexistent}: does not exist",
|
723
793
|
e.message
|
724
794
|
|
725
|
-
bad = File.join @tempdir,
|
795
|
+
bad = File.join @tempdir, "bad"
|
726
796
|
FileUtils.touch bad
|
727
797
|
|
728
|
-
e =
|
798
|
+
e = assert_raise Gem::OptionParser::InvalidArgument do
|
729
799
|
@cmd.handle_options %W[--private-key #{bad}]
|
730
800
|
end
|
731
801
|
|
732
|
-
assert_equal "invalid argument: --private-key #{bad}: invalid RSA key",
|
802
|
+
assert_equal "invalid argument: --private-key #{bad}: invalid RSA, DSA, or EC key",
|
733
803
|
e.message
|
734
804
|
|
735
|
-
e =
|
805
|
+
e = assert_raise Gem::OptionParser::InvalidArgument do
|
736
806
|
@cmd.handle_options %W[--private-key #{PUBLIC_KEY_FILE}]
|
737
807
|
end
|
738
808
|
|
@@ -778,8 +848,8 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
778
848
|
end
|
779
849
|
|
780
850
|
def test_handle_options_sign_nonexistent
|
781
|
-
nonexistent = File.join @tempdir,
|
782
|
-
e =
|
851
|
+
nonexistent = File.join @tempdir, "nonexistent"
|
852
|
+
e = assert_raise Gem::OptionParser::InvalidArgument do
|
783
853
|
@cmd.handle_options %W[
|
784
854
|
--private-key #{ALTERNATE_KEY_FILE}
|
785
855
|
|
@@ -792,5 +862,4 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
|
|
792
862
|
assert_equal "invalid argument: --sign #{nonexistent}: does not exist",
|
793
863
|
e.message
|
794
864
|
end
|
795
|
-
|
796
|
-
end if defined?(OpenSSL::SSL)
|
865
|
+
end if Gem::HAVE_OPENSSL && !Gem.java_platform?
|