rubygems-update 3.0.6 → 3.2.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/{History.txt → CHANGELOG.md} +1100 -436
- data/CODE_OF_CONDUCT.md +55 -19
- data/CONTRIBUTING.md +37 -10
- data/MAINTAINERS.txt +1 -6
- data/Manifest.txt +104 -64
- data/POLICIES.md +6 -12
- data/README.md +6 -6
- data/Rakefile +121 -111
- data/bin/gem +0 -6
- data/bin/update_rubygems +2 -2
- data/bundler/CHANGELOG.md +1788 -1251
- data/bundler/LICENSE.md +18 -19
- data/bundler/README.md +9 -10
- data/bundler/UPGRADING.md +215 -0
- data/bundler/bundler.gemspec +9 -26
- data/bundler/exe/bundle +22 -3
- data/bundler/lib/bundler.rb +233 -94
- data/bundler/lib/bundler/build_metadata.rb +5 -13
- data/bundler/lib/bundler/capistrano.rb +4 -4
- data/bundler/lib/bundler/cli.rb +221 -148
- data/bundler/lib/bundler/cli/add.rb +28 -16
- data/bundler/lib/bundler/cli/binstubs.rb +6 -2
- data/bundler/lib/bundler/cli/cache.rb +24 -17
- data/bundler/lib/bundler/cli/clean.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +25 -12
- data/bundler/lib/bundler/cli/config.rb +161 -86
- data/bundler/lib/bundler/cli/console.rb +1 -1
- data/bundler/lib/bundler/cli/doctor.rb +5 -5
- data/bundler/lib/bundler/cli/exec.rb +8 -20
- data/bundler/lib/bundler/cli/fund.rb +36 -0
- data/bundler/lib/bundler/cli/gem.rb +125 -32
- data/bundler/lib/bundler/cli/info.rb +29 -6
- data/bundler/lib/bundler/cli/init.rb +2 -2
- data/bundler/lib/bundler/cli/inject.rb +1 -1
- data/bundler/lib/bundler/cli/install.rb +27 -23
- data/bundler/lib/bundler/cli/issue.rb +5 -5
- data/bundler/lib/bundler/cli/list.rb +12 -10
- data/bundler/lib/bundler/cli/open.rb +10 -6
- data/bundler/lib/bundler/cli/outdated.rb +134 -109
- data/bundler/lib/bundler/cli/plugin.rb +19 -2
- data/bundler/lib/bundler/cli/pristine.rb +6 -1
- data/bundler/lib/bundler/cli/show.rb +2 -2
- data/bundler/lib/bundler/cli/update.rb +34 -12
- data/bundler/lib/bundler/compact_index_client.rb +26 -10
- data/bundler/lib/bundler/compact_index_client/cache.rb +6 -14
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
- data/bundler/lib/bundler/compact_index_client/updater.rb +8 -20
- data/bundler/lib/bundler/current_ruby.rb +9 -7
- data/bundler/lib/bundler/definition.rb +133 -132
- data/bundler/lib/bundler/dep_proxy.rb +16 -9
- data/bundler/lib/bundler/dependency.rb +19 -14
- data/bundler/lib/bundler/deployment.rb +1 -1
- data/bundler/lib/bundler/dsl.rb +54 -71
- data/bundler/lib/bundler/endpoint_specification.rb +1 -1
- data/bundler/lib/bundler/env.rb +9 -14
- data/bundler/lib/bundler/environment_preserver.rb +26 -3
- data/bundler/lib/bundler/errors.rb +1 -0
- data/bundler/lib/bundler/feature_flag.rb +19 -34
- data/bundler/lib/bundler/fetcher.rb +19 -16
- data/bundler/lib/bundler/fetcher/base.rb +1 -1
- data/bundler/lib/bundler/fetcher/compact_index.rb +27 -13
- data/bundler/lib/bundler/fetcher/dependency.rb +1 -1
- data/bundler/lib/bundler/fetcher/downloader.rb +6 -3
- data/bundler/lib/bundler/fetcher/index.rb +8 -7
- data/bundler/lib/bundler/friendly_errors.rb +27 -19
- data/bundler/lib/bundler/gem_helper.rb +68 -37
- data/bundler/lib/bundler/gem_helpers.rb +38 -29
- data/bundler/lib/bundler/gem_tasks.rb +1 -1
- data/bundler/lib/bundler/gem_version_promoter.rb +5 -5
- data/bundler/lib/bundler/graph.rb +3 -3
- data/bundler/lib/bundler/index.rb +12 -7
- data/bundler/lib/bundler/injector.rb +32 -12
- data/bundler/lib/bundler/inline.rb +41 -30
- data/bundler/lib/bundler/installer.rb +41 -60
- data/bundler/lib/bundler/installer/gem_installer.rb +8 -4
- data/bundler/lib/bundler/installer/parallel_installer.rb +20 -26
- data/bundler/lib/bundler/installer/standalone.rb +18 -4
- data/bundler/lib/bundler/lazy_specification.rb +41 -27
- data/bundler/lib/bundler/lockfile_generator.rb +1 -1
- data/bundler/lib/bundler/lockfile_parser.rb +16 -33
- data/bundler/lib/bundler/{ssl_certs → man}/.document +0 -0
- data/bundler/lib/bundler/man/bundle-add.1 +66 -0
- data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +7 -1
- data/bundler/lib/bundler/man/bundle-binstubs.1 +42 -0
- data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +3 -5
- data/bundler/lib/bundler/man/bundle-cache.1 +55 -0
- data/bundler/{man/bundle-package.ronn → lib/bundler/man/bundle-cache.1.ronn} +15 -15
- data/bundler/lib/bundler/man/bundle-check.1 +31 -0
- data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-clean.1 +24 -0
- data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-config.1 +488 -0
- data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +59 -67
- data/bundler/lib/bundler/man/bundle-doctor.1 +44 -0
- data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-exec.1 +165 -0
- data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +1 -1
- data/bundler/lib/bundler/man/bundle-gem.1 +102 -0
- data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
- data/bundler/lib/bundler/man/bundle-info.1 +20 -0
- data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-init.1 +25 -0
- data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +1 -1
- data/bundler/lib/bundler/man/bundle-inject.1 +33 -0
- data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-install.1 +338 -0
- data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +34 -7
- data/bundler/lib/bundler/man/bundle-list.1 +50 -0
- data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
- data/bundler/lib/bundler/man/bundle-lock.1 +84 -0
- data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-open.1 +32 -0
- data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-outdated.1 +155 -0
- data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-platform.1 +61 -0
- data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-pristine.1 +34 -0
- data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-remove.1 +31 -0
- data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-show.1 +23 -0
- data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-update.1 +394 -0
- data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +3 -3
- data/bundler/lib/bundler/man/bundle-viz.1 +39 -0
- data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle.1 +136 -0
- data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +2 -2
- data/bundler/lib/bundler/man/gemfile.5 +686 -0
- data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +16 -20
- data/bundler/lib/bundler/man/index.txt +25 -0
- data/bundler/lib/bundler/match_platform.rb +1 -1
- data/bundler/lib/bundler/mirror.rb +5 -5
- data/bundler/lib/bundler/plugin.rb +75 -36
- data/bundler/lib/bundler/plugin/api.rb +1 -1
- data/bundler/lib/bundler/plugin/api/source.rb +12 -7
- data/bundler/lib/bundler/plugin/dsl.rb +1 -1
- data/bundler/lib/bundler/plugin/index.rb +24 -4
- data/bundler/lib/bundler/plugin/installer.rb +33 -22
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -1
- data/bundler/lib/bundler/plugin/source_list.rb +5 -1
- data/bundler/lib/bundler/psyched_yaml.rb +0 -15
- data/bundler/lib/bundler/remote_specification.rb +5 -4
- data/bundler/lib/bundler/resolver.rb +191 -87
- data/bundler/lib/bundler/resolver/spec_group.rb +76 -48
- data/bundler/lib/bundler/retry.rb +3 -3
- data/bundler/lib/bundler/ruby_version.rb +5 -20
- data/bundler/lib/bundler/rubygems_ext.rb +76 -72
- data/bundler/lib/bundler/rubygems_gem_installer.rb +47 -13
- data/bundler/lib/bundler/rubygems_integration.rb +159 -444
- data/bundler/lib/bundler/runtime.rb +6 -23
- data/bundler/lib/bundler/settings.rb +67 -93
- data/bundler/lib/bundler/setup.rb +11 -12
- data/bundler/lib/bundler/shared_helpers.rb +54 -80
- data/bundler/lib/bundler/similarity_detector.rb +3 -3
- data/bundler/lib/bundler/source.rb +12 -6
- data/bundler/lib/bundler/source/git.rb +47 -38
- data/bundler/lib/bundler/source/git/git_proxy.rb +101 -102
- data/bundler/lib/bundler/source/metadata.rb +7 -6
- data/bundler/lib/bundler/source/path.rb +20 -11
- data/bundler/lib/bundler/source/path/installer.rb +10 -10
- data/bundler/lib/bundler/source/rubygems.rb +56 -29
- data/bundler/lib/bundler/source/rubygems/remote.rb +3 -4
- data/bundler/lib/bundler/source_list.rb +32 -30
- data/bundler/lib/bundler/spec_set.rb +37 -25
- data/bundler/lib/bundler/stub_specification.rb +40 -34
- data/bundler/lib/bundler/templates/Executable.bundler +23 -14
- data/bundler/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
- data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +16 -2
- data/bundler/lib/bundler/templates/newgem/README.md.tt +7 -5
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +19 -5
- data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
- data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
- data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +18 -31
- data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
- data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
- data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
- data/bundler/lib/bundler/templates/newgem/test/minitest/test_helper.rb.tt +6 -0
- data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
- data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -1
- data/bundler/lib/bundler/ui.rb +3 -3
- data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
- data/bundler/lib/bundler/ui/shell.rb +7 -11
- data/bundler/lib/bundler/uri_credentials_filter.rb +10 -4
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +161 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +66 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +176 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +273 -147
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +5 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +7 -0
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +36 -4
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +6 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +3 -3
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +39 -11
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +4 -4
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +11 -0
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +53 -51
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +2 -2
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +302 -462
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +40 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +53 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor.rb +16 -9
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +28 -13
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +3 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +7 -17
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +20 -9
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +19 -8
- data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +63 -43
- data/bundler/lib/bundler/vendor/thor/lib/thor/command.rb +21 -14
- data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +78 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +3 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor.rb +2 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +6 -6
- data/bundler/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +7 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +20 -7
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +21 -5
- data/bundler/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +1 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +15 -14
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +4 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +65 -8
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +10 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +3 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +18 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +104 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +744 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +94 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1568 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +88 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +23 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +261 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +21 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +294 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +546 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +125 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
- data/bundler/lib/bundler/vendored_fileutils.rb +1 -6
- data/bundler/lib/bundler/vendored_molinillo.rb +1 -1
- data/bundler/lib/bundler/vendored_persistent.rb +7 -12
- data/bundler/lib/bundler/vendored_thor.rb +2 -2
- data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
- data/bundler/lib/bundler/vendored_uri.rb +4 -0
- data/bundler/lib/bundler/version.rb +1 -20
- data/bundler/lib/bundler/version_ranges.rb +51 -5
- data/bundler/lib/bundler/vlad.rb +2 -2
- data/bundler/lib/bundler/worker.rb +2 -4
- data/bundler/lib/bundler/yaml_serializer.rb +3 -4
- data/lib/rubygems.rb +198 -222
- data/lib/rubygems/available_set.rb +4 -5
- data/lib/rubygems/basic_specification.rb +32 -19
- data/lib/rubygems/bundler_version_finder.rb +19 -9
- data/lib/rubygems/command.rb +73 -21
- data/lib/rubygems/command_manager.rb +5 -12
- data/lib/rubygems/commands/build_command.rb +51 -18
- data/lib/rubygems/commands/cert_command.rb +2 -11
- data/lib/rubygems/commands/check_command.rb +0 -2
- data/lib/rubygems/commands/cleanup_command.rb +17 -13
- data/lib/rubygems/commands/contents_command.rb +7 -9
- data/lib/rubygems/commands/dependency_command.rb +9 -10
- data/lib/rubygems/commands/environment_command.rb +1 -6
- data/lib/rubygems/commands/fetch_command.rb +2 -4
- data/lib/rubygems/commands/generate_index_command.rb +3 -2
- data/lib/rubygems/commands/help_command.rb +4 -4
- data/lib/rubygems/commands/info_command.rb +9 -4
- data/lib/rubygems/commands/install_command.rb +12 -54
- data/lib/rubygems/commands/list_command.rb +8 -7
- data/lib/rubygems/commands/lock_command.rb +3 -5
- data/lib/rubygems/commands/mirror_command.rb +0 -1
- data/lib/rubygems/commands/open_command.rb +1 -4
- data/lib/rubygems/commands/outdated_command.rb +0 -1
- data/lib/rubygems/commands/owner_command.rb +10 -10
- data/lib/rubygems/commands/pristine_command.rb +13 -9
- data/lib/rubygems/commands/push_command.rb +12 -51
- data/lib/rubygems/commands/query_command.rb +14 -330
- data/lib/rubygems/commands/rdoc_command.rb +0 -1
- data/lib/rubygems/commands/search_command.rb +7 -7
- data/lib/rubygems/commands/server_command.rb +3 -1
- data/lib/rubygems/commands/setup_command.rb +143 -101
- data/lib/rubygems/commands/signin_command.rb +0 -1
- data/lib/rubygems/commands/signout_command.rb +0 -2
- data/lib/rubygems/commands/sources_command.rb +22 -6
- data/lib/rubygems/commands/specification_command.rb +8 -3
- data/lib/rubygems/commands/stale_command.rb +1 -1
- data/lib/rubygems/commands/uninstall_command.rb +2 -3
- data/lib/rubygems/commands/unpack_command.rb +3 -32
- data/lib/rubygems/commands/update_command.rb +73 -28
- data/lib/rubygems/commands/which_command.rb +0 -1
- data/lib/rubygems/commands/yank_command.rb +10 -7
- data/lib/rubygems/compatibility.rb +4 -4
- data/lib/rubygems/config_file.rb +48 -27
- data/lib/rubygems/core_ext/kernel_gem.rb +7 -6
- data/lib/rubygems/core_ext/kernel_require.rb +44 -6
- data/lib/rubygems/core_ext/kernel_warn.rb +22 -13
- data/lib/rubygems/core_ext/tcpsocket_init.rb +52 -0
- data/lib/rubygems/defaults.rb +110 -23
- data/lib/rubygems/dependency.rb +28 -14
- data/lib/rubygems/dependency_installer.rb +11 -166
- data/lib/rubygems/dependency_list.rb +17 -18
- data/lib/rubygems/deprecate.rb +51 -6
- data/lib/rubygems/doctor.rb +4 -4
- data/lib/rubygems/errors.rb +5 -7
- data/lib/rubygems/exceptions.rb +2 -24
- data/lib/rubygems/ext.rb +6 -6
- data/lib/rubygems/ext/build_error.rb +2 -0
- data/lib/rubygems/ext/builder.rb +45 -82
- data/lib/rubygems/ext/cmake_builder.rb +6 -7
- data/lib/rubygems/ext/configure_builder.rb +5 -8
- data/lib/rubygems/ext/ext_conf_builder.rb +27 -23
- data/lib/rubygems/ext/rake_builder.rb +4 -6
- data/lib/rubygems/gem_runner.rb +3 -10
- data/lib/rubygems/gemcutter_utilities.rb +111 -37
- data/lib/rubygems/indexer.rb +9 -26
- data/lib/rubygems/install_update_options.rb +7 -7
- data/lib/rubygems/installer.rb +91 -98
- data/lib/rubygems/installer_test_case.rb +104 -42
- data/lib/rubygems/installer_uninstaller_utils.rb +29 -0
- data/lib/rubygems/local_remote_options.rb +1 -1
- data/lib/rubygems/mock_gem_ui.rb +1 -4
- data/lib/rubygems/name_tuple.rb +4 -7
- data/lib/rubygems/openssl.rb +7 -0
- data/lib/rubygems/package.rb +49 -32
- data/lib/rubygems/package/digest_io.rb +0 -2
- data/lib/rubygems/package/file_source.rb +0 -2
- data/lib/rubygems/package/io_source.rb +0 -2
- data/lib/rubygems/package/old.rb +1 -3
- data/lib/rubygems/package/tar_header.rb +4 -6
- data/lib/rubygems/package/tar_reader.rb +15 -12
- data/lib/rubygems/package/tar_reader/entry.rb +0 -3
- data/lib/rubygems/package/tar_test_case.rb +2 -4
- data/lib/rubygems/package/tar_writer.rb +6 -16
- data/lib/rubygems/package_task.rb +1 -7
- data/lib/rubygems/path_support.rb +2 -2
- data/lib/rubygems/platform.rb +22 -16
- data/lib/rubygems/query_utils.rb +353 -0
- data/lib/rubygems/rdoc.rb +0 -12
- data/lib/rubygems/remote_fetcher.rb +33 -59
- data/lib/rubygems/request.rb +11 -14
- data/lib/rubygems/request/connection_pools.rb +3 -7
- data/lib/rubygems/request/http_pool.rb +0 -1
- data/lib/rubygems/request_set.rb +10 -23
- data/lib/rubygems/request_set/gem_dependency_api.rb +9 -11
- data/lib/rubygems/request_set/lockfile.rb +13 -12
- data/lib/rubygems/request_set/lockfile/parser.rb +2 -2
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -1
- data/lib/rubygems/requirement.rb +36 -35
- data/lib/rubygems/resolver.rb +20 -16
- data/lib/rubygems/resolver/activation_request.rb +27 -51
- data/lib/rubygems/resolver/api_set.rb +31 -24
- data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
- data/lib/rubygems/resolver/api_specification.rb +24 -10
- data/lib/rubygems/resolver/best_set.rb +4 -6
- data/lib/rubygems/resolver/composed_set.rb +3 -5
- data/lib/rubygems/resolver/conflict.rb +2 -9
- data/lib/rubygems/resolver/current_set.rb +0 -2
- data/lib/rubygems/resolver/dependency_request.rb +1 -3
- data/lib/rubygems/resolver/git_set.rb +0 -2
- data/lib/rubygems/resolver/git_specification.rb +0 -2
- data/lib/rubygems/resolver/index_set.rb +1 -3
- data/lib/rubygems/resolver/index_specification.rb +32 -2
- data/lib/rubygems/resolver/installed_specification.rb +0 -2
- data/lib/rubygems/resolver/installer_set.rb +63 -16
- data/lib/rubygems/resolver/local_specification.rb +0 -2
- data/lib/rubygems/resolver/lock_set.rb +3 -5
- data/lib/rubygems/resolver/lock_specification.rb +2 -4
- data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +8 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +39 -6
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +51 -12
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +76 -8
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +12 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +510 -165
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
- data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
- data/lib/rubygems/resolver/requirement_list.rb +0 -1
- data/lib/rubygems/resolver/set.rb +0 -2
- data/lib/rubygems/resolver/source_set.rb +0 -2
- data/lib/rubygems/resolver/spec_specification.rb +14 -2
- data/lib/rubygems/resolver/specification.rb +13 -2
- data/lib/rubygems/resolver/vendor_set.rb +0 -2
- data/lib/rubygems/resolver/vendor_specification.rb +0 -2
- data/lib/rubygems/s3_uri_signer.rb +15 -13
- data/lib/rubygems/safe_yaml.rb +4 -4
- data/lib/rubygems/security.rb +27 -34
- data/lib/rubygems/security/policy.rb +4 -8
- data/lib/rubygems/security/signer.rb +8 -9
- data/lib/rubygems/security/trust_dir.rb +1 -3
- data/lib/rubygems/server.rb +20 -16
- data/lib/rubygems/source.rb +30 -13
- data/lib/rubygems/source/git.rb +7 -8
- data/lib/rubygems/source/installed.rb +0 -2
- data/lib/rubygems/source/local.rb +2 -4
- data/lib/rubygems/source/lock.rb +0 -2
- data/lib/rubygems/source/specific_file.rb +0 -2
- data/lib/rubygems/source/vendor.rb +0 -2
- data/lib/rubygems/source_list.rb +6 -6
- data/lib/rubygems/spec_fetcher.rb +22 -34
- data/lib/rubygems/specification.rb +207 -278
- data/lib/rubygems/specification_policy.rb +135 -57
- data/{bundler/lib/bundler/ssl_certs/index.rubygems.org → lib/rubygems/ssl_certs/rubygems.org}/GlobalSignRootCA.pem +0 -0
- data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
- data/lib/rubygems/stub_specification.rb +4 -5
- data/lib/rubygems/test_case.rb +221 -341
- data/lib/rubygems/test_utilities.rb +22 -18
- data/lib/rubygems/text.rb +2 -3
- data/lib/rubygems/uninstaller.rb +49 -30
- data/lib/rubygems/uri_formatter.rb +2 -4
- data/lib/rubygems/uri_parser.rb +34 -0
- data/lib/rubygems/uri_parsing.rb +23 -0
- data/lib/rubygems/user_interaction.rb +3 -20
- data/lib/rubygems/util.rb +20 -44
- data/lib/rubygems/util/licenses.rb +400 -400
- data/lib/rubygems/validator.rb +9 -31
- data/lib/rubygems/version.rb +29 -21
- data/lib/rubygems/version_option.rb +6 -0
- data/rubygems-update.gemspec +4 -11
- data/setup.rb +2 -7
- data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
- data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
- data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
- data/test/rubygems/rubygems_plugin.rb +0 -2
- data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
- data/test/rubygems/test_bundled_ca.rb +42 -45
- data/test/rubygems/test_config.rb +0 -2
- data/test/rubygems/test_deprecate.rb +41 -5
- data/test/rubygems/test_gem.rb +405 -236
- data/test/rubygems/test_gem_available_set.rb +5 -6
- data/test/rubygems/test_gem_bundler_version_finder.rb +20 -2
- data/test/rubygems/test_gem_command.rb +144 -9
- data/test/rubygems/test_gem_command_manager.rb +40 -17
- data/test/rubygems/test_gem_commands_build_command.rb +386 -13
- data/test/rubygems/test_gem_commands_cert_command.rb +18 -6
- data/test/rubygems/test_gem_commands_check_command.rb +0 -2
- data/test/rubygems/test_gem_commands_cleanup_command.rb +35 -10
- data/test/rubygems/test_gem_commands_contents_command.rb +50 -19
- data/test/rubygems/test_gem_commands_dependency_command.rb +1 -3
- data/test/rubygems/test_gem_commands_environment_command.rb +21 -33
- data/test/rubygems/test_gem_commands_fetch_command.rb +0 -2
- data/test/rubygems/test_gem_commands_generate_index_command.rb +32 -2
- data/test/rubygems/test_gem_commands_help_command.rb +16 -8
- data/test/rubygems/test_gem_commands_info_command.rb +6 -7
- data/test/rubygems/test_gem_commands_install_command.rb +368 -34
- data/test/rubygems/test_gem_commands_list_command.rb +0 -2
- data/test/rubygems/test_gem_commands_lock_command.rb +0 -2
- data/test/rubygems/test_gem_commands_mirror.rb +1 -2
- data/test/rubygems/test_gem_commands_open_command.rb +4 -6
- data/test/rubygems/test_gem_commands_outdated_command.rb +18 -1
- data/test/rubygems/test_gem_commands_owner_command.rb +62 -9
- data/test/rubygems/test_gem_commands_pristine_command.rb +148 -16
- data/test/rubygems/test_gem_commands_push_command.rb +94 -21
- data/test/rubygems/test_gem_commands_query_command.rb +35 -10
- data/test/rubygems/test_gem_commands_search_command.rb +0 -2
- data/test/rubygems/test_gem_commands_server_command.rb +6 -4
- data/test/rubygems/test_gem_commands_setup_command.rb +228 -128
- data/test/rubygems/test_gem_commands_signin_command.rb +36 -11
- data/test/rubygems/test_gem_commands_signout_command.rb +0 -7
- data/test/rubygems/test_gem_commands_sources_command.rb +193 -9
- data/test/rubygems/test_gem_commands_specification_command.rb +46 -20
- data/test/rubygems/test_gem_commands_stale_command.rb +0 -2
- data/test/rubygems/test_gem_commands_uninstall_command.rb +108 -52
- data/test/rubygems/test_gem_commands_unpack_command.rb +0 -2
- data/test/rubygems/test_gem_commands_update_command.rb +201 -29
- data/test/rubygems/test_gem_commands_which_command.rb +3 -5
- data/test/rubygems/test_gem_commands_yank_command.rb +86 -5
- data/test/rubygems/test_gem_config_file.rb +25 -13
- data/test/rubygems/test_gem_dependency.rb +6 -2
- data/test/rubygems/test_gem_dependency_installer.rb +169 -252
- data/test/rubygems/test_gem_dependency_list.rb +31 -26
- data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -3
- data/test/rubygems/test_gem_doctor.rb +28 -2
- data/test/rubygems/test_gem_ext_builder.rb +51 -44
- data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -23
- data/test/rubygems/test_gem_ext_configure_builder.rb +6 -14
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +21 -29
- data/test/rubygems/test_gem_ext_rake_builder.rb +39 -22
- data/test/rubygems/test_gem_gem_runner.rb +47 -2
- data/test/rubygems/test_gem_gemcutter_utilities.rb +16 -13
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -2
- data/test/rubygems/test_gem_indexer.rb +40 -55
- data/test/rubygems/test_gem_install_update_options.rb +45 -21
- data/test/rubygems/test_gem_installer.rb +661 -338
- data/test/rubygems/test_gem_local_remote_options.rb +0 -2
- data/test/rubygems/test_gem_name_tuple.rb +0 -2
- data/test/rubygems/test_gem_package.rb +132 -45
- data/test/rubygems/test_gem_package_old.rb +56 -55
- data/test/rubygems/test_gem_package_tar_header.rb +18 -1
- data/test/rubygems/test_gem_package_tar_reader.rb +0 -2
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +6 -7
- data/test/rubygems/test_gem_package_tar_writer.rb +20 -12
- data/test/rubygems/test_gem_package_task.rb +46 -13
- data/test/rubygems/test_gem_path_support.rb +17 -13
- data/test/rubygems/test_gem_platform.rb +74 -7
- data/test/rubygems/test_gem_rdoc.rb +0 -1
- data/test/rubygems/test_gem_remote_fetcher.rb +223 -209
- data/test/rubygems/test_gem_request.rb +30 -19
- data/test/rubygems/test_gem_request_connection_pools.rb +2 -2
- data/test/rubygems/test_gem_request_set.rb +104 -29
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +4 -6
- data/test/rubygems/test_gem_request_set_lockfile.rb +4 -5
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -10
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -118
- data/test/rubygems/test_gem_requirement.rb +50 -4
- data/test/rubygems/test_gem_resolver.rb +73 -31
- data/test/rubygems/test_gem_resolver_activation_request.rb +3 -34
- data/test/rubygems/test_gem_resolver_api_set.rb +60 -59
- data/test/rubygems/test_gem_resolver_api_specification.rb +3 -5
- data/test/rubygems/test_gem_resolver_best_set.rb +27 -6
- data/test/rubygems/test_gem_resolver_composed_set.rb +0 -2
- data/test/rubygems/test_gem_resolver_conflict.rb +1 -7
- data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -2
- data/test/rubygems/test_gem_resolver_git_set.rb +0 -2
- data/test/rubygems/test_gem_resolver_git_specification.rb +1 -2
- data/test/rubygems/test_gem_resolver_index_set.rb +2 -4
- data/test/rubygems/test_gem_resolver_index_specification.rb +7 -4
- data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -3
- data/test/rubygems/test_gem_resolver_installer_set.rb +10 -10
- data/test/rubygems/test_gem_resolver_local_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_lock_set.rb +3 -5
- data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -2
- data/test/rubygems/test_gem_resolver_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_vendor_set.rb +1 -3
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -2
- data/test/rubygems/test_gem_security.rb +27 -25
- data/test/rubygems/test_gem_security_policy.rb +7 -12
- data/test/rubygems/test_gem_security_signer.rb +11 -12
- data/test/rubygems/test_gem_security_trust_dir.rb +4 -6
- data/test/rubygems/test_gem_server.rb +13 -12
- data/test/rubygems/test_gem_silent_ui.rb +0 -1
- data/test/rubygems/test_gem_source.rb +32 -17
- data/test/rubygems/test_gem_source_fetch_problem.rb +0 -1
- data/test/rubygems/test_gem_source_git.rb +12 -18
- data/test/rubygems/test_gem_source_installed.rb +11 -13
- data/test/rubygems/test_gem_source_list.rb +1 -1
- data/test/rubygems/test_gem_source_local.rb +8 -9
- data/test/rubygems/test_gem_source_lock.rb +17 -19
- data/test/rubygems/test_gem_source_specific_file.rb +9 -10
- data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
- data/test/rubygems/test_gem_source_vendor.rb +7 -9
- data/test/rubygems/test_gem_spec_fetcher.rb +11 -4
- data/test/rubygems/test_gem_specification.rb +363 -245
- data/test/rubygems/test_gem_stream_ui.rb +3 -1
- data/test/rubygems/test_gem_stub_specification.rb +6 -7
- data/test/rubygems/test_gem_text.rb +1 -2
- data/test/rubygems/test_gem_uninstaller.rb +165 -22
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -2
- data/test/rubygems/test_gem_uri_formatter.rb +0 -2
- data/test/rubygems/test_gem_util.rb +17 -15
- data/test/rubygems/test_gem_validator.rb +4 -7
- data/test/rubygems/test_gem_version.rb +23 -10
- data/test/rubygems/test_gem_version_option.rb +1 -3
- data/test/rubygems/test_kernel.rb +25 -9
- data/test/rubygems/test_project_sanity.rb +20 -0
- data/test/rubygems/test_remote_fetch_error.rb +1 -2
- data/test/rubygems/test_require.rb +394 -56
- data/test/test_changelog_generator.rb +17 -0
- metadata +109 -155
- data/.rubocop.yml +0 -67
- data/.travis.yml +0 -38
- data/appveyor.yml +0 -43
- data/bundler/CODE_OF_CONDUCT.md +0 -42
- data/bundler/CONTRIBUTING.md +0 -17
- data/bundler/exe/bundle_ruby +0 -60
- data/bundler/lib/bundler/cli/package.rb +0 -49
- data/bundler/lib/bundler/compatibility_guard.rb +0 -14
- data/bundler/lib/bundler/gem_remote_fetcher.rb +0 -43
- data/bundler/lib/bundler/ssl_certs/certificate_manager.rb +0 -66
- data/bundler/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
- data/bundler/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
- data/bundler/lib/bundler/templates/newgem/test/test_helper.rb.tt +0 -4
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb +0 -27
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb +0 -129
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb +0 -12
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb +0 -129
- data/lib/rubygems/source_local.rb +0 -7
- data/lib/rubygems/source_specific_file.rb +0 -6
- data/lib/rubygems/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +0 -21
- data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
- data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
- data/lib/ubygems.rb +0 -14
- data/util/CL2notes +0 -55
- data/util/ci +0 -82
- data/util/cops/deprecations.rb +0 -52
- data/util/create_certs.rb +0 -171
- data/util/create_certs.sh +0 -27
- data/util/create_encrypted_key.rb +0 -16
- data/util/generate_spdx_license_list.rb +0 -61
- data/util/patch_with_prs.rb +0 -77
- data/util/rubocop +0 -8
- data/util/update_bundled_ca_certificates.rb +0 -139
- data/util/update_changelog.rb +0 -67
@@ -4,7 +4,6 @@ require 'rubygems/local_remote_options'
|
|
4
4
|
require 'rubygems/command'
|
5
5
|
|
6
6
|
class TestGemLocalRemoteOptions < Gem::TestCase
|
7
|
-
|
8
7
|
def setup
|
9
8
|
super
|
10
9
|
|
@@ -130,5 +129,4 @@ class TestGemLocalRemoteOptions < Gem::TestCase
|
|
130
129
|
|
131
130
|
assert_equal [@gem_repo], Gem.sources
|
132
131
|
end
|
133
|
-
|
134
132
|
end
|
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
|
|
3
3
|
require 'rubygems/name_tuple'
|
4
4
|
|
5
5
|
class TestGemNameTuple < Gem::TestCase
|
6
|
-
|
7
6
|
def test_full_name
|
8
7
|
n = Gem::NameTuple.new "a", Gem::Version.new(0), "ruby"
|
9
8
|
assert_equal "a-0", n.full_name
|
@@ -40,5 +39,4 @@ class TestGemNameTuple < Gem::TestCase
|
|
40
39
|
|
41
40
|
assert_equal 1, a_p.<=>(a)
|
42
41
|
end
|
43
|
-
|
44
42
|
end
|
@@ -1,11 +1,9 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
3
|
require 'rubygems/package/tar_test_case'
|
5
|
-
require '
|
4
|
+
require 'digest'
|
6
5
|
|
7
6
|
class TestGemPackage < Gem::Package::TarTestCase
|
8
|
-
|
9
7
|
def setup
|
10
8
|
super
|
11
9
|
|
@@ -24,6 +22,8 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
24
22
|
end
|
25
23
|
|
26
24
|
def test_class_new_old_format
|
25
|
+
skip "jruby can't require the simple_gem file" if Gem.java_platform?
|
26
|
+
require_relative "simple_gem"
|
27
27
|
File.open 'old_format.gem', 'wb' do |io|
|
28
28
|
io.write SIMPLE_GEM
|
29
29
|
end
|
@@ -91,20 +91,17 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
91
91
|
'SHA512' => {
|
92
92
|
'metadata.gz' => metadata_sha512,
|
93
93
|
'data.tar.gz' => Digest::SHA512.hexdigest(tar),
|
94
|
-
}
|
95
|
-
|
96
|
-
|
97
|
-
if defined?(OpenSSL::Digest)
|
98
|
-
expected['SHA256'] = {
|
94
|
+
},
|
95
|
+
'SHA256' => {
|
99
96
|
'metadata.gz' => metadata_sha256,
|
100
97
|
'data.tar.gz' => Digest::SHA256.hexdigest(tar),
|
101
|
-
}
|
102
|
-
|
98
|
+
},
|
99
|
+
}
|
103
100
|
|
104
101
|
assert_equal expected, YAML.load(checksums)
|
105
102
|
end
|
106
103
|
|
107
|
-
def
|
104
|
+
def test_build_time_uses_source_date_epoch
|
108
105
|
epoch = ENV["SOURCE_DATE_EPOCH"]
|
109
106
|
ENV["SOURCE_DATE_EPOCH"] = "123456789"
|
110
107
|
|
@@ -115,7 +112,6 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
115
112
|
spec.date = Time.at 0
|
116
113
|
spec.rubygems_version = Gem::Version.new '0'
|
117
114
|
|
118
|
-
|
119
115
|
package = Gem::Package.new spec.file_name
|
120
116
|
|
121
117
|
assert_equal Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc, package.build_time
|
@@ -123,14 +119,40 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
123
119
|
ENV["SOURCE_DATE_EPOCH"] = epoch
|
124
120
|
end
|
125
121
|
|
122
|
+
def test_build_time_without_source_date_epoch
|
123
|
+
epoch = ENV["SOURCE_DATE_EPOCH"]
|
124
|
+
ENV["SOURCE_DATE_EPOCH"] = nil
|
125
|
+
|
126
|
+
spec = Gem::Specification.new 'build', '1'
|
127
|
+
spec.summary = 'build'
|
128
|
+
spec.authors = 'build'
|
129
|
+
spec.files = ['lib/code.rb']
|
130
|
+
spec.rubygems_version = Gem::Version.new '0'
|
131
|
+
|
132
|
+
package = Gem::Package.new spec.file_name
|
133
|
+
|
134
|
+
assert_kind_of Time, package.build_time
|
135
|
+
|
136
|
+
build_time = package.build_time.to_i
|
137
|
+
|
138
|
+
assert_equal Gem.source_date_epoch.to_i, build_time
|
139
|
+
ensure
|
140
|
+
ENV["SOURCE_DATE_EPOCH"] = epoch
|
141
|
+
end
|
142
|
+
|
126
143
|
def test_add_files
|
127
144
|
spec = Gem::Specification.new
|
128
145
|
spec.files = %w[lib/code.rb lib/empty]
|
129
146
|
|
130
147
|
FileUtils.mkdir_p 'lib/empty'
|
131
148
|
|
132
|
-
File.open 'lib/code.rb',
|
133
|
-
|
149
|
+
File.open 'lib/code.rb', 'w' do |io|
|
150
|
+
io.write '# lib/code.rb'
|
151
|
+
end
|
152
|
+
|
153
|
+
File.open 'lib/extra.rb', 'w' do |io|
|
154
|
+
io.write '# lib/extra.rb'
|
155
|
+
end
|
134
156
|
|
135
157
|
package = Gem::Package.new 'bogus.gem'
|
136
158
|
package.spec = spec
|
@@ -157,7 +179,10 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
157
179
|
spec.files = %w[lib/code.rb lib/code_sym.rb lib/code_sym2.rb]
|
158
180
|
|
159
181
|
FileUtils.mkdir_p 'lib'
|
160
|
-
|
182
|
+
|
183
|
+
File.open 'lib/code.rb', 'w' do |io|
|
184
|
+
io.write '# lib/code.rb'
|
185
|
+
end
|
161
186
|
|
162
187
|
# NOTE: 'code.rb' is correct, because it's relative to lib/code_sym.rb
|
163
188
|
begin
|
@@ -227,7 +252,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
227
252
|
end
|
228
253
|
|
229
254
|
def test_build_auto_signed
|
230
|
-
skip 'openssl is missing' unless
|
255
|
+
skip 'openssl is missing' unless Gem::HAVE_OPENSSL
|
231
256
|
|
232
257
|
FileUtils.mkdir_p File.join(Gem.user_home, '.gem')
|
233
258
|
|
@@ -270,7 +295,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
270
295
|
end
|
271
296
|
|
272
297
|
def test_build_auto_signed_encrypted_key
|
273
|
-
skip 'openssl is missing' unless
|
298
|
+
skip 'openssl is missing' unless Gem::HAVE_OPENSSL
|
274
299
|
|
275
300
|
FileUtils.mkdir_p File.join(Gem.user_home, '.gem')
|
276
301
|
|
@@ -339,7 +364,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
339
364
|
end
|
340
365
|
|
341
366
|
def test_build_signed
|
342
|
-
skip 'openssl is missing' unless
|
367
|
+
skip 'openssl is missing' unless Gem::HAVE_OPENSSL
|
343
368
|
|
344
369
|
spec = Gem::Specification.new 'build', '1'
|
345
370
|
spec.summary = 'build'
|
@@ -376,7 +401,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
376
401
|
end
|
377
402
|
|
378
403
|
def test_build_signed_encrypted_key
|
379
|
-
skip 'openssl is missing' unless
|
404
|
+
skip 'openssl is missing' unless Gem::HAVE_OPENSSL
|
380
405
|
|
381
406
|
spec = Gem::Specification.new 'build', '1'
|
382
407
|
spec.summary = 'build'
|
@@ -412,6 +437,33 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
412
437
|
assert_equal %w[lib/code.rb], reader.contents
|
413
438
|
end
|
414
439
|
|
440
|
+
def test_raw_spec
|
441
|
+
data_tgz = util_tar_gz {}
|
442
|
+
|
443
|
+
gem = util_tar do |tar|
|
444
|
+
tar.add_file 'data.tar.gz', 0644 do |io|
|
445
|
+
io.write data_tgz.string
|
446
|
+
end
|
447
|
+
|
448
|
+
tar.add_file 'metadata.gz', 0644 do |io|
|
449
|
+
Zlib::GzipWriter.wrap io do |gzio|
|
450
|
+
gzio.write @spec.to_yaml
|
451
|
+
end
|
452
|
+
end
|
453
|
+
end
|
454
|
+
|
455
|
+
gem_path = "#{@destination}/test.gem"
|
456
|
+
|
457
|
+
File.open gem_path, "wb" do |io|
|
458
|
+
io.write gem.string
|
459
|
+
end
|
460
|
+
|
461
|
+
spec, metadata = Gem::Package.raw_spec(gem_path)
|
462
|
+
|
463
|
+
assert_equal @spec, spec
|
464
|
+
assert_match @spec.to_yaml, metadata.force_encoding("UTF-8")
|
465
|
+
end
|
466
|
+
|
415
467
|
def test_contents
|
416
468
|
package = Gem::Package.new @gem
|
417
469
|
|
@@ -433,7 +485,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
433
485
|
end
|
434
486
|
|
435
487
|
def test_extract_files_empty
|
436
|
-
data_tgz = util_tar_gz
|
488
|
+
data_tgz = util_tar_gz {}
|
437
489
|
|
438
490
|
gem = util_tar do |tar|
|
439
491
|
tar.add_file 'data.tar.gz', 0644 do |io|
|
@@ -462,7 +514,9 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
462
514
|
package = Gem::Package.new @gem
|
463
515
|
|
464
516
|
tgz_io = util_tar_gz do |tar|
|
465
|
-
tar.add_file '/absolute.rb', 0644 do |io|
|
517
|
+
tar.add_file '/absolute.rb', 0644 do |io|
|
518
|
+
io.write 'hi'
|
519
|
+
end
|
466
520
|
end
|
467
521
|
|
468
522
|
e = assert_raises Gem::Package::PathError do
|
@@ -477,8 +531,11 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
477
531
|
package = Gem::Package.new @gem
|
478
532
|
|
479
533
|
tgz_io = util_tar_gz do |tar|
|
480
|
-
tar.add_file
|
481
|
-
|
534
|
+
tar.add_file 'relative.rb', 0644 do |io|
|
535
|
+
io.write 'hi'
|
536
|
+
end
|
537
|
+
|
538
|
+
tar.mkdir 'lib', 0755
|
482
539
|
tar.add_symlink 'lib/foo.rb', '../relative.rb', 0644
|
483
540
|
end
|
484
541
|
|
@@ -506,7 +563,9 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
506
563
|
tgz_io = util_tar_gz do |tar|
|
507
564
|
tar.mkdir 'lib', 0755
|
508
565
|
tar.add_symlink 'lib/link', '../..', 0644
|
509
|
-
tar.add_file 'lib/link/outside.txt', 0644 do |io|
|
566
|
+
tar.add_file 'lib/link/outside.txt', 0644 do |io|
|
567
|
+
io.write 'hi'
|
568
|
+
end
|
510
569
|
end
|
511
570
|
|
512
571
|
# Extract into a subdirectory of @destination; if this test fails it writes
|
@@ -542,6 +601,8 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
542
601
|
destination_user_subdir = File.join destination_user_dir, 'dir'
|
543
602
|
FileUtils.mkdir_p destination_user_subdir
|
544
603
|
|
604
|
+
skip "TMPDIR seems too long to add it as symlink into tar" if destination_user_dir.size > 90
|
605
|
+
|
545
606
|
tgz_io = util_tar_gz do |tar|
|
546
607
|
tar.add_symlink 'link', destination_user_dir, 16877
|
547
608
|
tar.add_symlink 'link/dir', '.', 16877
|
@@ -568,8 +629,10 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
568
629
|
|
569
630
|
tgz_io = util_tar_gz do |tar|
|
570
631
|
tar.mkdir 'lib', 0755
|
571
|
-
tar.add_file 'lib/foo.rb', 0644 do |io|
|
572
|
-
|
632
|
+
tar.add_file 'lib/foo.rb', 0644 do |io|
|
633
|
+
io.write 'hi'
|
634
|
+
end
|
635
|
+
tar.mkdir 'lib/foo', 0755
|
573
636
|
end
|
574
637
|
|
575
638
|
package.extract_tar_gz tgz_io, @destination
|
@@ -585,7 +648,9 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
585
648
|
package = Gem::Package.new @gem
|
586
649
|
|
587
650
|
tgz_io = util_tar_gz do |tar|
|
588
|
-
tar.add_file './dot_slash.rb', 0644 do |io|
|
651
|
+
tar.add_file './dot_slash.rb', 0644 do |io|
|
652
|
+
io.write 'hi'
|
653
|
+
end
|
589
654
|
end
|
590
655
|
|
591
656
|
package.extract_tar_gz tgz_io, @destination
|
@@ -598,7 +663,9 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
598
663
|
package = Gem::Package.new @gem
|
599
664
|
|
600
665
|
tgz_io = util_tar_gz do |tar|
|
601
|
-
tar.add_file '.dot_file.rb', 0644 do |io|
|
666
|
+
tar.add_file '.dot_file.rb', 0644 do |io|
|
667
|
+
io.write 'hi'
|
668
|
+
end
|
602
669
|
end
|
603
670
|
|
604
671
|
package.extract_tar_gz tgz_io, @destination
|
@@ -612,7 +679,9 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
612
679
|
package = Gem::Package.new @gem
|
613
680
|
|
614
681
|
tgz_io = util_tar_gz do |tar|
|
615
|
-
tar.add_file 'foo/file.rb', 0644 do |io|
|
682
|
+
tar.add_file 'foo/file.rb', 0644 do |io|
|
683
|
+
io.write 'hi'
|
684
|
+
end
|
616
685
|
end
|
617
686
|
|
618
687
|
package.extract_tar_gz tgz_io, @destination.upcase
|
@@ -626,12 +695,12 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
626
695
|
package = Gem::Package.new @gem
|
627
696
|
|
628
697
|
file = 'file.rb'.dup
|
629
|
-
file.taint
|
698
|
+
file.taint if RUBY_VERSION < '2.7'
|
630
699
|
|
631
700
|
destination = package.install_location file, @destination
|
632
701
|
|
633
702
|
assert_equal File.join(@destination, 'file.rb'), destination
|
634
|
-
refute destination.tainted?
|
703
|
+
refute destination.tainted? if RUBY_VERSION < '2.7'
|
635
704
|
end
|
636
705
|
|
637
706
|
def test_install_location_absolute
|
@@ -665,14 +734,14 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
665
734
|
package = Gem::Package.new @gem
|
666
735
|
|
667
736
|
file = 'foo//file.rb'.dup
|
668
|
-
file.taint
|
737
|
+
file.taint if RUBY_VERSION < '2.7'
|
669
738
|
|
670
739
|
destination = @destination.sub '/', '//'
|
671
740
|
|
672
741
|
destination = package.install_location file, destination
|
673
742
|
|
674
743
|
assert_equal File.join(@destination, 'foo', 'file.rb'), destination
|
675
|
-
refute destination.tainted?
|
744
|
+
refute destination.tainted? if RUBY_VERSION < '2.7'
|
676
745
|
end
|
677
746
|
|
678
747
|
def test_install_location_relative
|
@@ -817,6 +886,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
817
886
|
end
|
818
887
|
|
819
888
|
def test_verify_corrupt
|
889
|
+
skip "jruby strips the null byte and does not think it's corrupt" if Gem.java_platform?
|
820
890
|
tf = Tempfile.open 'corrupt' do |io|
|
821
891
|
data = Gem::Util.gzip 'a' * 10
|
822
892
|
io.write \
|
@@ -856,8 +926,8 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
856
926
|
package.verify
|
857
927
|
end
|
858
928
|
|
859
|
-
assert_match %r
|
860
|
-
assert_match %r
|
929
|
+
assert_match %r{^No such file or directory}, e.message
|
930
|
+
assert_match %r{nonexistent.gem$}, e.message
|
861
931
|
end
|
862
932
|
|
863
933
|
def test_verify_duplicate_file
|
@@ -887,7 +957,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
887
957
|
end
|
888
958
|
|
889
959
|
def test_verify_security_policy
|
890
|
-
skip 'openssl is missing' unless
|
960
|
+
skip 'openssl is missing' unless Gem::HAVE_OPENSSL
|
891
961
|
|
892
962
|
package = Gem::Package.new @gem
|
893
963
|
package.security_policy = Gem::Security::HighSecurity
|
@@ -904,7 +974,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
904
974
|
end
|
905
975
|
|
906
976
|
def test_verify_security_policy_low_security
|
907
|
-
skip 'openssl is missing' unless
|
977
|
+
skip 'openssl is missing' unless Gem::HAVE_OPENSSL
|
908
978
|
|
909
979
|
@spec.cert_chain = [PUBLIC_CERT.to_pem]
|
910
980
|
@spec.signing_key = PRIVATE_KEY
|
@@ -924,7 +994,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
924
994
|
end
|
925
995
|
|
926
996
|
def test_verify_security_policy_checksum_missing
|
927
|
-
skip 'openssl is missing' unless
|
997
|
+
skip 'openssl is missing' unless Gem::HAVE_OPENSSL
|
928
998
|
|
929
999
|
@spec.cert_chain = [PUBLIC_CERT.to_pem]
|
930
1000
|
@spec.signing_key = PRIVATE_KEY
|
@@ -945,7 +1015,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
945
1015
|
bogus_data = Gem::Util.gzip 'hello'
|
946
1016
|
fake_signer = Class.new do
|
947
1017
|
def digest_name; 'SHA512'; end
|
948
|
-
def digest_algorithm; Digest(:SHA512); end
|
1018
|
+
def digest_algorithm; Digest(:SHA512).new; end
|
949
1019
|
def key; 'key'; end
|
950
1020
|
def sign(*); 'fake_sig'; end
|
951
1021
|
end
|
@@ -995,11 +1065,22 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
995
1065
|
|
996
1066
|
package = Gem::Package.new @gem
|
997
1067
|
|
998
|
-
|
999
|
-
|
1068
|
+
_, err = use_ui @ui do
|
1069
|
+
e = nil
|
1070
|
+
|
1071
|
+
out_err = capture_io do
|
1072
|
+
e = assert_raises ArgumentError do
|
1073
|
+
package.verify_entry entry
|
1074
|
+
end
|
1075
|
+
end
|
1076
|
+
|
1077
|
+
assert_equal "whatever", e.message
|
1078
|
+
assert_equal "full_name", e.backtrace_locations.first.label
|
1079
|
+
|
1080
|
+
out_err
|
1000
1081
|
end
|
1001
1082
|
|
1002
|
-
assert_equal "
|
1083
|
+
assert_equal "Exception while verifying #{@gem}\n", err
|
1003
1084
|
|
1004
1085
|
valid_metadata = ["metadata", "metadata.gz"]
|
1005
1086
|
valid_metadata.each do |vm|
|
@@ -1024,7 +1105,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
1024
1105
|
$bad_name = vm
|
1025
1106
|
|
1026
1107
|
entry = Object.new
|
1027
|
-
def entry.full_name() $bad_name
|
1108
|
+
def entry.full_name() $bad_name end
|
1028
1109
|
|
1029
1110
|
package = Gem::Package.new(@gem)
|
1030
1111
|
package.instance_variable_set(:@files, [])
|
@@ -1042,6 +1123,11 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
1042
1123
|
assert_equal @spec, package.spec
|
1043
1124
|
end
|
1044
1125
|
|
1126
|
+
def test_gem_attr
|
1127
|
+
package = Gem::Package.new(@gem)
|
1128
|
+
assert_equal(@gem, package.gem.path)
|
1129
|
+
end
|
1130
|
+
|
1045
1131
|
def test_spec_from_io
|
1046
1132
|
# This functionality is used by rubygems.org to extract spec data from an
|
1047
1133
|
# uploaded gem before it is written to storage.
|
@@ -1077,9 +1163,10 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
1077
1163
|
tgz_io = StringIO.new
|
1078
1164
|
|
1079
1165
|
# can't wrap TarWriter because it seeks
|
1080
|
-
Zlib::GzipWriter.wrap tgz_io do |io|
|
1166
|
+
Zlib::GzipWriter.wrap tgz_io do |io|
|
1167
|
+
io.write tar_io.string
|
1168
|
+
end
|
1081
1169
|
|
1082
1170
|
StringIO.new tgz_io.string
|
1083
1171
|
end
|
1084
|
-
|
1085
1172
|
end
|
@@ -1,89 +1,90 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
require 'rubygems/test_case'
|
3
|
-
require 'rubygems/simple_gem'
|
4
3
|
|
5
|
-
|
4
|
+
unless Gem.java_platform? # jruby can't require the simple_gem file
|
5
|
+
require 'rubygems/simple_gem'
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
class TestGemPackageOld < Gem::TestCase
|
8
|
+
def setup
|
9
|
+
super
|
9
10
|
|
10
|
-
|
11
|
-
|
12
|
-
|
11
|
+
File.open 'old_format.gem', 'wb' do |io|
|
12
|
+
io.write SIMPLE_GEM
|
13
|
+
end
|
13
14
|
|
14
|
-
|
15
|
-
|
15
|
+
@package = Gem::Package::Old.new 'old_format.gem'
|
16
|
+
@destination = File.join @tempdir, 'extract'
|
16
17
|
|
17
|
-
|
18
|
-
|
18
|
+
FileUtils.mkdir_p @destination
|
19
|
+
end
|
19
20
|
|
20
|
-
|
21
|
-
|
22
|
-
|
21
|
+
def test_contents
|
22
|
+
assert_equal %w[lib/foo.rb lib/test.rb lib/test/wow.rb], @package.contents
|
23
|
+
end
|
23
24
|
|
24
|
-
|
25
|
-
|
25
|
+
def test_contents_security_policy
|
26
|
+
skip 'openssl is missing' unless Gem::HAVE_OPENSSL
|
26
27
|
|
27
|
-
|
28
|
+
@package.security_policy = Gem::Security::AlmostNoSecurity
|
28
29
|
|
29
|
-
|
30
|
-
|
30
|
+
assert_raises Gem::Security::Exception do
|
31
|
+
@package.contents
|
32
|
+
end
|
31
33
|
end
|
32
|
-
end
|
33
34
|
|
34
|
-
|
35
|
-
|
35
|
+
def test_extract_files
|
36
|
+
@package.extract_files @destination
|
36
37
|
|
37
|
-
|
38
|
-
|
38
|
+
extracted = File.join @destination, 'lib/foo.rb'
|
39
|
+
assert_path_exists extracted
|
39
40
|
|
40
|
-
|
41
|
+
mask = 0100644 & (~File.umask)
|
41
42
|
|
42
|
-
|
43
|
-
|
43
|
+
assert_equal mask, File.stat(extracted).mode unless win_platform?
|
44
|
+
end
|
44
45
|
|
45
|
-
|
46
|
-
|
46
|
+
def test_extract_files_security_policy
|
47
|
+
skip 'openssl is missing' unless Gem::HAVE_OPENSSL
|
47
48
|
|
48
|
-
|
49
|
+
@package.security_policy = Gem::Security::AlmostNoSecurity
|
49
50
|
|
50
|
-
|
51
|
-
|
51
|
+
assert_raises Gem::Security::Exception do
|
52
|
+
@package.extract_files @destination
|
53
|
+
end
|
52
54
|
end
|
53
|
-
end
|
54
55
|
|
55
|
-
|
56
|
-
|
57
|
-
|
56
|
+
def test_spec
|
57
|
+
assert_equal 'testing', @package.spec.name
|
58
|
+
end
|
58
59
|
|
59
|
-
|
60
|
-
|
60
|
+
def test_spec_security_policy
|
61
|
+
skip 'openssl is missing' unless Gem::HAVE_OPENSSL
|
61
62
|
|
62
|
-
|
63
|
+
@package.security_policy = Gem::Security::AlmostNoSecurity
|
63
64
|
|
64
|
-
|
65
|
-
|
65
|
+
assert_raises Gem::Security::Exception do
|
66
|
+
@package.spec
|
67
|
+
end
|
66
68
|
end
|
67
|
-
end
|
68
69
|
|
69
|
-
|
70
|
-
|
70
|
+
def test_verify
|
71
|
+
skip 'openssl is missing' unless Gem::HAVE_OPENSSL
|
71
72
|
|
72
|
-
|
73
|
+
assert @package.verify
|
73
74
|
|
74
|
-
|
75
|
+
@package.security_policy = Gem::Security::NoSecurity
|
75
76
|
|
76
|
-
|
77
|
+
assert @package.verify
|
77
78
|
|
78
|
-
|
79
|
+
@package.security_policy = Gem::Security::AlmostNoSecurity
|
79
80
|
|
80
|
-
|
81
|
-
|
82
|
-
|
81
|
+
e = assert_raises Gem::Security::Exception do
|
82
|
+
@package.verify
|
83
|
+
end
|
83
84
|
|
84
|
-
|
85
|
-
|
86
|
-
|
85
|
+
assert_equal 'old format gems do not contain signatures ' +
|
86
|
+
'and cannot be verified',
|
87
|
+
e.message
|
88
|
+
end
|
87
89
|
end
|
88
|
-
|
89
90
|
end
|