rubygems-update 3.0.6 → 3.2.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/{History.txt → CHANGELOG.md} +1100 -436
- data/CODE_OF_CONDUCT.md +55 -19
- data/CONTRIBUTING.md +37 -10
- data/MAINTAINERS.txt +1 -6
- data/Manifest.txt +104 -64
- data/POLICIES.md +6 -12
- data/README.md +6 -6
- data/Rakefile +121 -111
- data/bin/gem +0 -6
- data/bin/update_rubygems +2 -2
- data/bundler/CHANGELOG.md +1788 -1251
- data/bundler/LICENSE.md +18 -19
- data/bundler/README.md +9 -10
- data/bundler/UPGRADING.md +215 -0
- data/bundler/bundler.gemspec +9 -26
- data/bundler/exe/bundle +22 -3
- data/bundler/lib/bundler.rb +233 -94
- data/bundler/lib/bundler/build_metadata.rb +5 -13
- data/bundler/lib/bundler/capistrano.rb +4 -4
- data/bundler/lib/bundler/cli.rb +221 -148
- data/bundler/lib/bundler/cli/add.rb +28 -16
- data/bundler/lib/bundler/cli/binstubs.rb +6 -2
- data/bundler/lib/bundler/cli/cache.rb +24 -17
- data/bundler/lib/bundler/cli/clean.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +25 -12
- data/bundler/lib/bundler/cli/config.rb +161 -86
- data/bundler/lib/bundler/cli/console.rb +1 -1
- data/bundler/lib/bundler/cli/doctor.rb +5 -5
- data/bundler/lib/bundler/cli/exec.rb +8 -20
- data/bundler/lib/bundler/cli/fund.rb +36 -0
- data/bundler/lib/bundler/cli/gem.rb +125 -32
- data/bundler/lib/bundler/cli/info.rb +29 -6
- data/bundler/lib/bundler/cli/init.rb +2 -2
- data/bundler/lib/bundler/cli/inject.rb +1 -1
- data/bundler/lib/bundler/cli/install.rb +27 -23
- data/bundler/lib/bundler/cli/issue.rb +5 -5
- data/bundler/lib/bundler/cli/list.rb +12 -10
- data/bundler/lib/bundler/cli/open.rb +10 -6
- data/bundler/lib/bundler/cli/outdated.rb +134 -109
- data/bundler/lib/bundler/cli/plugin.rb +19 -2
- data/bundler/lib/bundler/cli/pristine.rb +6 -1
- data/bundler/lib/bundler/cli/show.rb +2 -2
- data/bundler/lib/bundler/cli/update.rb +34 -12
- data/bundler/lib/bundler/compact_index_client.rb +26 -10
- data/bundler/lib/bundler/compact_index_client/cache.rb +6 -14
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
- data/bundler/lib/bundler/compact_index_client/updater.rb +8 -20
- data/bundler/lib/bundler/current_ruby.rb +9 -7
- data/bundler/lib/bundler/definition.rb +133 -132
- data/bundler/lib/bundler/dep_proxy.rb +16 -9
- data/bundler/lib/bundler/dependency.rb +19 -14
- data/bundler/lib/bundler/deployment.rb +1 -1
- data/bundler/lib/bundler/dsl.rb +54 -71
- data/bundler/lib/bundler/endpoint_specification.rb +1 -1
- data/bundler/lib/bundler/env.rb +9 -14
- data/bundler/lib/bundler/environment_preserver.rb +26 -3
- data/bundler/lib/bundler/errors.rb +1 -0
- data/bundler/lib/bundler/feature_flag.rb +19 -34
- data/bundler/lib/bundler/fetcher.rb +19 -16
- data/bundler/lib/bundler/fetcher/base.rb +1 -1
- data/bundler/lib/bundler/fetcher/compact_index.rb +27 -13
- data/bundler/lib/bundler/fetcher/dependency.rb +1 -1
- data/bundler/lib/bundler/fetcher/downloader.rb +6 -3
- data/bundler/lib/bundler/fetcher/index.rb +8 -7
- data/bundler/lib/bundler/friendly_errors.rb +27 -19
- data/bundler/lib/bundler/gem_helper.rb +68 -37
- data/bundler/lib/bundler/gem_helpers.rb +38 -29
- data/bundler/lib/bundler/gem_tasks.rb +1 -1
- data/bundler/lib/bundler/gem_version_promoter.rb +5 -5
- data/bundler/lib/bundler/graph.rb +3 -3
- data/bundler/lib/bundler/index.rb +12 -7
- data/bundler/lib/bundler/injector.rb +32 -12
- data/bundler/lib/bundler/inline.rb +41 -30
- data/bundler/lib/bundler/installer.rb +41 -60
- data/bundler/lib/bundler/installer/gem_installer.rb +8 -4
- data/bundler/lib/bundler/installer/parallel_installer.rb +20 -26
- data/bundler/lib/bundler/installer/standalone.rb +18 -4
- data/bundler/lib/bundler/lazy_specification.rb +41 -27
- data/bundler/lib/bundler/lockfile_generator.rb +1 -1
- data/bundler/lib/bundler/lockfile_parser.rb +16 -33
- data/bundler/lib/bundler/{ssl_certs → man}/.document +0 -0
- data/bundler/lib/bundler/man/bundle-add.1 +66 -0
- data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +7 -1
- data/bundler/lib/bundler/man/bundle-binstubs.1 +42 -0
- data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +3 -5
- data/bundler/lib/bundler/man/bundle-cache.1 +55 -0
- data/bundler/{man/bundle-package.ronn → lib/bundler/man/bundle-cache.1.ronn} +15 -15
- data/bundler/lib/bundler/man/bundle-check.1 +31 -0
- data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-clean.1 +24 -0
- data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-config.1 +488 -0
- data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +59 -67
- data/bundler/lib/bundler/man/bundle-doctor.1 +44 -0
- data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-exec.1 +165 -0
- data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +1 -1
- data/bundler/lib/bundler/man/bundle-gem.1 +102 -0
- data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
- data/bundler/lib/bundler/man/bundle-info.1 +20 -0
- data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-init.1 +25 -0
- data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +1 -1
- data/bundler/lib/bundler/man/bundle-inject.1 +33 -0
- data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-install.1 +338 -0
- data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +34 -7
- data/bundler/lib/bundler/man/bundle-list.1 +50 -0
- data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
- data/bundler/lib/bundler/man/bundle-lock.1 +84 -0
- data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-open.1 +32 -0
- data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-outdated.1 +155 -0
- data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-platform.1 +61 -0
- data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-pristine.1 +34 -0
- data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-remove.1 +31 -0
- data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-show.1 +23 -0
- data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-update.1 +394 -0
- data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +3 -3
- data/bundler/lib/bundler/man/bundle-viz.1 +39 -0
- data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle.1 +136 -0
- data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +2 -2
- data/bundler/lib/bundler/man/gemfile.5 +686 -0
- data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +16 -20
- data/bundler/lib/bundler/man/index.txt +25 -0
- data/bundler/lib/bundler/match_platform.rb +1 -1
- data/bundler/lib/bundler/mirror.rb +5 -5
- data/bundler/lib/bundler/plugin.rb +75 -36
- data/bundler/lib/bundler/plugin/api.rb +1 -1
- data/bundler/lib/bundler/plugin/api/source.rb +12 -7
- data/bundler/lib/bundler/plugin/dsl.rb +1 -1
- data/bundler/lib/bundler/plugin/index.rb +24 -4
- data/bundler/lib/bundler/plugin/installer.rb +33 -22
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -1
- data/bundler/lib/bundler/plugin/source_list.rb +5 -1
- data/bundler/lib/bundler/psyched_yaml.rb +0 -15
- data/bundler/lib/bundler/remote_specification.rb +5 -4
- data/bundler/lib/bundler/resolver.rb +191 -87
- data/bundler/lib/bundler/resolver/spec_group.rb +76 -48
- data/bundler/lib/bundler/retry.rb +3 -3
- data/bundler/lib/bundler/ruby_version.rb +5 -20
- data/bundler/lib/bundler/rubygems_ext.rb +76 -72
- data/bundler/lib/bundler/rubygems_gem_installer.rb +47 -13
- data/bundler/lib/bundler/rubygems_integration.rb +159 -444
- data/bundler/lib/bundler/runtime.rb +6 -23
- data/bundler/lib/bundler/settings.rb +67 -93
- data/bundler/lib/bundler/setup.rb +11 -12
- data/bundler/lib/bundler/shared_helpers.rb +54 -80
- data/bundler/lib/bundler/similarity_detector.rb +3 -3
- data/bundler/lib/bundler/source.rb +12 -6
- data/bundler/lib/bundler/source/git.rb +47 -38
- data/bundler/lib/bundler/source/git/git_proxy.rb +101 -102
- data/bundler/lib/bundler/source/metadata.rb +7 -6
- data/bundler/lib/bundler/source/path.rb +20 -11
- data/bundler/lib/bundler/source/path/installer.rb +10 -10
- data/bundler/lib/bundler/source/rubygems.rb +56 -29
- data/bundler/lib/bundler/source/rubygems/remote.rb +3 -4
- data/bundler/lib/bundler/source_list.rb +32 -30
- data/bundler/lib/bundler/spec_set.rb +37 -25
- data/bundler/lib/bundler/stub_specification.rb +40 -34
- data/bundler/lib/bundler/templates/Executable.bundler +23 -14
- data/bundler/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
- data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +16 -2
- data/bundler/lib/bundler/templates/newgem/README.md.tt +7 -5
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +19 -5
- data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
- data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
- data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +18 -31
- data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
- data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
- data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
- data/bundler/lib/bundler/templates/newgem/test/minitest/test_helper.rb.tt +6 -0
- data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
- data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -1
- data/bundler/lib/bundler/ui.rb +3 -3
- data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
- data/bundler/lib/bundler/ui/shell.rb +7 -11
- data/bundler/lib/bundler/uri_credentials_filter.rb +10 -4
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +161 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +66 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +176 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +273 -147
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +5 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +7 -0
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +36 -4
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +6 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +3 -3
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +39 -11
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +4 -4
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +11 -0
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +53 -51
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +2 -2
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +302 -462
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +40 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +53 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor.rb +16 -9
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +28 -13
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +3 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +7 -17
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +20 -9
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +19 -8
- data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +63 -43
- data/bundler/lib/bundler/vendor/thor/lib/thor/command.rb +21 -14
- data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +78 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +3 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor.rb +2 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +6 -6
- data/bundler/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +7 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +20 -7
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +21 -5
- data/bundler/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +1 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +15 -14
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +4 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +65 -8
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +10 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +3 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +18 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +104 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +744 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +94 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1568 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +88 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +23 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +261 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +21 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +294 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +546 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +125 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
- data/bundler/lib/bundler/vendored_fileutils.rb +1 -6
- data/bundler/lib/bundler/vendored_molinillo.rb +1 -1
- data/bundler/lib/bundler/vendored_persistent.rb +7 -12
- data/bundler/lib/bundler/vendored_thor.rb +2 -2
- data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
- data/bundler/lib/bundler/vendored_uri.rb +4 -0
- data/bundler/lib/bundler/version.rb +1 -20
- data/bundler/lib/bundler/version_ranges.rb +51 -5
- data/bundler/lib/bundler/vlad.rb +2 -2
- data/bundler/lib/bundler/worker.rb +2 -4
- data/bundler/lib/bundler/yaml_serializer.rb +3 -4
- data/lib/rubygems.rb +198 -222
- data/lib/rubygems/available_set.rb +4 -5
- data/lib/rubygems/basic_specification.rb +32 -19
- data/lib/rubygems/bundler_version_finder.rb +19 -9
- data/lib/rubygems/command.rb +73 -21
- data/lib/rubygems/command_manager.rb +5 -12
- data/lib/rubygems/commands/build_command.rb +51 -18
- data/lib/rubygems/commands/cert_command.rb +2 -11
- data/lib/rubygems/commands/check_command.rb +0 -2
- data/lib/rubygems/commands/cleanup_command.rb +17 -13
- data/lib/rubygems/commands/contents_command.rb +7 -9
- data/lib/rubygems/commands/dependency_command.rb +9 -10
- data/lib/rubygems/commands/environment_command.rb +1 -6
- data/lib/rubygems/commands/fetch_command.rb +2 -4
- data/lib/rubygems/commands/generate_index_command.rb +3 -2
- data/lib/rubygems/commands/help_command.rb +4 -4
- data/lib/rubygems/commands/info_command.rb +9 -4
- data/lib/rubygems/commands/install_command.rb +12 -54
- data/lib/rubygems/commands/list_command.rb +8 -7
- data/lib/rubygems/commands/lock_command.rb +3 -5
- data/lib/rubygems/commands/mirror_command.rb +0 -1
- data/lib/rubygems/commands/open_command.rb +1 -4
- data/lib/rubygems/commands/outdated_command.rb +0 -1
- data/lib/rubygems/commands/owner_command.rb +10 -10
- data/lib/rubygems/commands/pristine_command.rb +13 -9
- data/lib/rubygems/commands/push_command.rb +12 -51
- data/lib/rubygems/commands/query_command.rb +14 -330
- data/lib/rubygems/commands/rdoc_command.rb +0 -1
- data/lib/rubygems/commands/search_command.rb +7 -7
- data/lib/rubygems/commands/server_command.rb +3 -1
- data/lib/rubygems/commands/setup_command.rb +143 -101
- data/lib/rubygems/commands/signin_command.rb +0 -1
- data/lib/rubygems/commands/signout_command.rb +0 -2
- data/lib/rubygems/commands/sources_command.rb +22 -6
- data/lib/rubygems/commands/specification_command.rb +8 -3
- data/lib/rubygems/commands/stale_command.rb +1 -1
- data/lib/rubygems/commands/uninstall_command.rb +2 -3
- data/lib/rubygems/commands/unpack_command.rb +3 -32
- data/lib/rubygems/commands/update_command.rb +73 -28
- data/lib/rubygems/commands/which_command.rb +0 -1
- data/lib/rubygems/commands/yank_command.rb +10 -7
- data/lib/rubygems/compatibility.rb +4 -4
- data/lib/rubygems/config_file.rb +48 -27
- data/lib/rubygems/core_ext/kernel_gem.rb +7 -6
- data/lib/rubygems/core_ext/kernel_require.rb +44 -6
- data/lib/rubygems/core_ext/kernel_warn.rb +22 -13
- data/lib/rubygems/core_ext/tcpsocket_init.rb +52 -0
- data/lib/rubygems/defaults.rb +110 -23
- data/lib/rubygems/dependency.rb +28 -14
- data/lib/rubygems/dependency_installer.rb +11 -166
- data/lib/rubygems/dependency_list.rb +17 -18
- data/lib/rubygems/deprecate.rb +51 -6
- data/lib/rubygems/doctor.rb +4 -4
- data/lib/rubygems/errors.rb +5 -7
- data/lib/rubygems/exceptions.rb +2 -24
- data/lib/rubygems/ext.rb +6 -6
- data/lib/rubygems/ext/build_error.rb +2 -0
- data/lib/rubygems/ext/builder.rb +45 -82
- data/lib/rubygems/ext/cmake_builder.rb +6 -7
- data/lib/rubygems/ext/configure_builder.rb +5 -8
- data/lib/rubygems/ext/ext_conf_builder.rb +27 -23
- data/lib/rubygems/ext/rake_builder.rb +4 -6
- data/lib/rubygems/gem_runner.rb +3 -10
- data/lib/rubygems/gemcutter_utilities.rb +111 -37
- data/lib/rubygems/indexer.rb +9 -26
- data/lib/rubygems/install_update_options.rb +7 -7
- data/lib/rubygems/installer.rb +91 -98
- data/lib/rubygems/installer_test_case.rb +104 -42
- data/lib/rubygems/installer_uninstaller_utils.rb +29 -0
- data/lib/rubygems/local_remote_options.rb +1 -1
- data/lib/rubygems/mock_gem_ui.rb +1 -4
- data/lib/rubygems/name_tuple.rb +4 -7
- data/lib/rubygems/openssl.rb +7 -0
- data/lib/rubygems/package.rb +49 -32
- data/lib/rubygems/package/digest_io.rb +0 -2
- data/lib/rubygems/package/file_source.rb +0 -2
- data/lib/rubygems/package/io_source.rb +0 -2
- data/lib/rubygems/package/old.rb +1 -3
- data/lib/rubygems/package/tar_header.rb +4 -6
- data/lib/rubygems/package/tar_reader.rb +15 -12
- data/lib/rubygems/package/tar_reader/entry.rb +0 -3
- data/lib/rubygems/package/tar_test_case.rb +2 -4
- data/lib/rubygems/package/tar_writer.rb +6 -16
- data/lib/rubygems/package_task.rb +1 -7
- data/lib/rubygems/path_support.rb +2 -2
- data/lib/rubygems/platform.rb +22 -16
- data/lib/rubygems/query_utils.rb +353 -0
- data/lib/rubygems/rdoc.rb +0 -12
- data/lib/rubygems/remote_fetcher.rb +33 -59
- data/lib/rubygems/request.rb +11 -14
- data/lib/rubygems/request/connection_pools.rb +3 -7
- data/lib/rubygems/request/http_pool.rb +0 -1
- data/lib/rubygems/request_set.rb +10 -23
- data/lib/rubygems/request_set/gem_dependency_api.rb +9 -11
- data/lib/rubygems/request_set/lockfile.rb +13 -12
- data/lib/rubygems/request_set/lockfile/parser.rb +2 -2
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -1
- data/lib/rubygems/requirement.rb +36 -35
- data/lib/rubygems/resolver.rb +20 -16
- data/lib/rubygems/resolver/activation_request.rb +27 -51
- data/lib/rubygems/resolver/api_set.rb +31 -24
- data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
- data/lib/rubygems/resolver/api_specification.rb +24 -10
- data/lib/rubygems/resolver/best_set.rb +4 -6
- data/lib/rubygems/resolver/composed_set.rb +3 -5
- data/lib/rubygems/resolver/conflict.rb +2 -9
- data/lib/rubygems/resolver/current_set.rb +0 -2
- data/lib/rubygems/resolver/dependency_request.rb +1 -3
- data/lib/rubygems/resolver/git_set.rb +0 -2
- data/lib/rubygems/resolver/git_specification.rb +0 -2
- data/lib/rubygems/resolver/index_set.rb +1 -3
- data/lib/rubygems/resolver/index_specification.rb +32 -2
- data/lib/rubygems/resolver/installed_specification.rb +0 -2
- data/lib/rubygems/resolver/installer_set.rb +63 -16
- data/lib/rubygems/resolver/local_specification.rb +0 -2
- data/lib/rubygems/resolver/lock_set.rb +3 -5
- data/lib/rubygems/resolver/lock_specification.rb +2 -4
- data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +8 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +39 -6
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +51 -12
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +76 -8
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +12 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +510 -165
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
- data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
- data/lib/rubygems/resolver/requirement_list.rb +0 -1
- data/lib/rubygems/resolver/set.rb +0 -2
- data/lib/rubygems/resolver/source_set.rb +0 -2
- data/lib/rubygems/resolver/spec_specification.rb +14 -2
- data/lib/rubygems/resolver/specification.rb +13 -2
- data/lib/rubygems/resolver/vendor_set.rb +0 -2
- data/lib/rubygems/resolver/vendor_specification.rb +0 -2
- data/lib/rubygems/s3_uri_signer.rb +15 -13
- data/lib/rubygems/safe_yaml.rb +4 -4
- data/lib/rubygems/security.rb +27 -34
- data/lib/rubygems/security/policy.rb +4 -8
- data/lib/rubygems/security/signer.rb +8 -9
- data/lib/rubygems/security/trust_dir.rb +1 -3
- data/lib/rubygems/server.rb +20 -16
- data/lib/rubygems/source.rb +30 -13
- data/lib/rubygems/source/git.rb +7 -8
- data/lib/rubygems/source/installed.rb +0 -2
- data/lib/rubygems/source/local.rb +2 -4
- data/lib/rubygems/source/lock.rb +0 -2
- data/lib/rubygems/source/specific_file.rb +0 -2
- data/lib/rubygems/source/vendor.rb +0 -2
- data/lib/rubygems/source_list.rb +6 -6
- data/lib/rubygems/spec_fetcher.rb +22 -34
- data/lib/rubygems/specification.rb +207 -278
- data/lib/rubygems/specification_policy.rb +135 -57
- data/{bundler/lib/bundler/ssl_certs/index.rubygems.org → lib/rubygems/ssl_certs/rubygems.org}/GlobalSignRootCA.pem +0 -0
- data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
- data/lib/rubygems/stub_specification.rb +4 -5
- data/lib/rubygems/test_case.rb +221 -341
- data/lib/rubygems/test_utilities.rb +22 -18
- data/lib/rubygems/text.rb +2 -3
- data/lib/rubygems/uninstaller.rb +49 -30
- data/lib/rubygems/uri_formatter.rb +2 -4
- data/lib/rubygems/uri_parser.rb +34 -0
- data/lib/rubygems/uri_parsing.rb +23 -0
- data/lib/rubygems/user_interaction.rb +3 -20
- data/lib/rubygems/util.rb +20 -44
- data/lib/rubygems/util/licenses.rb +400 -400
- data/lib/rubygems/validator.rb +9 -31
- data/lib/rubygems/version.rb +29 -21
- data/lib/rubygems/version_option.rb +6 -0
- data/rubygems-update.gemspec +4 -11
- data/setup.rb +2 -7
- data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
- data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
- data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
- data/test/rubygems/rubygems_plugin.rb +0 -2
- data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
- data/test/rubygems/test_bundled_ca.rb +42 -45
- data/test/rubygems/test_config.rb +0 -2
- data/test/rubygems/test_deprecate.rb +41 -5
- data/test/rubygems/test_gem.rb +405 -236
- data/test/rubygems/test_gem_available_set.rb +5 -6
- data/test/rubygems/test_gem_bundler_version_finder.rb +20 -2
- data/test/rubygems/test_gem_command.rb +144 -9
- data/test/rubygems/test_gem_command_manager.rb +40 -17
- data/test/rubygems/test_gem_commands_build_command.rb +386 -13
- data/test/rubygems/test_gem_commands_cert_command.rb +18 -6
- data/test/rubygems/test_gem_commands_check_command.rb +0 -2
- data/test/rubygems/test_gem_commands_cleanup_command.rb +35 -10
- data/test/rubygems/test_gem_commands_contents_command.rb +50 -19
- data/test/rubygems/test_gem_commands_dependency_command.rb +1 -3
- data/test/rubygems/test_gem_commands_environment_command.rb +21 -33
- data/test/rubygems/test_gem_commands_fetch_command.rb +0 -2
- data/test/rubygems/test_gem_commands_generate_index_command.rb +32 -2
- data/test/rubygems/test_gem_commands_help_command.rb +16 -8
- data/test/rubygems/test_gem_commands_info_command.rb +6 -7
- data/test/rubygems/test_gem_commands_install_command.rb +368 -34
- data/test/rubygems/test_gem_commands_list_command.rb +0 -2
- data/test/rubygems/test_gem_commands_lock_command.rb +0 -2
- data/test/rubygems/test_gem_commands_mirror.rb +1 -2
- data/test/rubygems/test_gem_commands_open_command.rb +4 -6
- data/test/rubygems/test_gem_commands_outdated_command.rb +18 -1
- data/test/rubygems/test_gem_commands_owner_command.rb +62 -9
- data/test/rubygems/test_gem_commands_pristine_command.rb +148 -16
- data/test/rubygems/test_gem_commands_push_command.rb +94 -21
- data/test/rubygems/test_gem_commands_query_command.rb +35 -10
- data/test/rubygems/test_gem_commands_search_command.rb +0 -2
- data/test/rubygems/test_gem_commands_server_command.rb +6 -4
- data/test/rubygems/test_gem_commands_setup_command.rb +228 -128
- data/test/rubygems/test_gem_commands_signin_command.rb +36 -11
- data/test/rubygems/test_gem_commands_signout_command.rb +0 -7
- data/test/rubygems/test_gem_commands_sources_command.rb +193 -9
- data/test/rubygems/test_gem_commands_specification_command.rb +46 -20
- data/test/rubygems/test_gem_commands_stale_command.rb +0 -2
- data/test/rubygems/test_gem_commands_uninstall_command.rb +108 -52
- data/test/rubygems/test_gem_commands_unpack_command.rb +0 -2
- data/test/rubygems/test_gem_commands_update_command.rb +201 -29
- data/test/rubygems/test_gem_commands_which_command.rb +3 -5
- data/test/rubygems/test_gem_commands_yank_command.rb +86 -5
- data/test/rubygems/test_gem_config_file.rb +25 -13
- data/test/rubygems/test_gem_dependency.rb +6 -2
- data/test/rubygems/test_gem_dependency_installer.rb +169 -252
- data/test/rubygems/test_gem_dependency_list.rb +31 -26
- data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -3
- data/test/rubygems/test_gem_doctor.rb +28 -2
- data/test/rubygems/test_gem_ext_builder.rb +51 -44
- data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -23
- data/test/rubygems/test_gem_ext_configure_builder.rb +6 -14
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +21 -29
- data/test/rubygems/test_gem_ext_rake_builder.rb +39 -22
- data/test/rubygems/test_gem_gem_runner.rb +47 -2
- data/test/rubygems/test_gem_gemcutter_utilities.rb +16 -13
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -2
- data/test/rubygems/test_gem_indexer.rb +40 -55
- data/test/rubygems/test_gem_install_update_options.rb +45 -21
- data/test/rubygems/test_gem_installer.rb +661 -338
- data/test/rubygems/test_gem_local_remote_options.rb +0 -2
- data/test/rubygems/test_gem_name_tuple.rb +0 -2
- data/test/rubygems/test_gem_package.rb +132 -45
- data/test/rubygems/test_gem_package_old.rb +56 -55
- data/test/rubygems/test_gem_package_tar_header.rb +18 -1
- data/test/rubygems/test_gem_package_tar_reader.rb +0 -2
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +6 -7
- data/test/rubygems/test_gem_package_tar_writer.rb +20 -12
- data/test/rubygems/test_gem_package_task.rb +46 -13
- data/test/rubygems/test_gem_path_support.rb +17 -13
- data/test/rubygems/test_gem_platform.rb +74 -7
- data/test/rubygems/test_gem_rdoc.rb +0 -1
- data/test/rubygems/test_gem_remote_fetcher.rb +223 -209
- data/test/rubygems/test_gem_request.rb +30 -19
- data/test/rubygems/test_gem_request_connection_pools.rb +2 -2
- data/test/rubygems/test_gem_request_set.rb +104 -29
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +4 -6
- data/test/rubygems/test_gem_request_set_lockfile.rb +4 -5
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -10
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -118
- data/test/rubygems/test_gem_requirement.rb +50 -4
- data/test/rubygems/test_gem_resolver.rb +73 -31
- data/test/rubygems/test_gem_resolver_activation_request.rb +3 -34
- data/test/rubygems/test_gem_resolver_api_set.rb +60 -59
- data/test/rubygems/test_gem_resolver_api_specification.rb +3 -5
- data/test/rubygems/test_gem_resolver_best_set.rb +27 -6
- data/test/rubygems/test_gem_resolver_composed_set.rb +0 -2
- data/test/rubygems/test_gem_resolver_conflict.rb +1 -7
- data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -2
- data/test/rubygems/test_gem_resolver_git_set.rb +0 -2
- data/test/rubygems/test_gem_resolver_git_specification.rb +1 -2
- data/test/rubygems/test_gem_resolver_index_set.rb +2 -4
- data/test/rubygems/test_gem_resolver_index_specification.rb +7 -4
- data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -3
- data/test/rubygems/test_gem_resolver_installer_set.rb +10 -10
- data/test/rubygems/test_gem_resolver_local_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_lock_set.rb +3 -5
- data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -2
- data/test/rubygems/test_gem_resolver_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_vendor_set.rb +1 -3
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -2
- data/test/rubygems/test_gem_security.rb +27 -25
- data/test/rubygems/test_gem_security_policy.rb +7 -12
- data/test/rubygems/test_gem_security_signer.rb +11 -12
- data/test/rubygems/test_gem_security_trust_dir.rb +4 -6
- data/test/rubygems/test_gem_server.rb +13 -12
- data/test/rubygems/test_gem_silent_ui.rb +0 -1
- data/test/rubygems/test_gem_source.rb +32 -17
- data/test/rubygems/test_gem_source_fetch_problem.rb +0 -1
- data/test/rubygems/test_gem_source_git.rb +12 -18
- data/test/rubygems/test_gem_source_installed.rb +11 -13
- data/test/rubygems/test_gem_source_list.rb +1 -1
- data/test/rubygems/test_gem_source_local.rb +8 -9
- data/test/rubygems/test_gem_source_lock.rb +17 -19
- data/test/rubygems/test_gem_source_specific_file.rb +9 -10
- data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
- data/test/rubygems/test_gem_source_vendor.rb +7 -9
- data/test/rubygems/test_gem_spec_fetcher.rb +11 -4
- data/test/rubygems/test_gem_specification.rb +363 -245
- data/test/rubygems/test_gem_stream_ui.rb +3 -1
- data/test/rubygems/test_gem_stub_specification.rb +6 -7
- data/test/rubygems/test_gem_text.rb +1 -2
- data/test/rubygems/test_gem_uninstaller.rb +165 -22
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -2
- data/test/rubygems/test_gem_uri_formatter.rb +0 -2
- data/test/rubygems/test_gem_util.rb +17 -15
- data/test/rubygems/test_gem_validator.rb +4 -7
- data/test/rubygems/test_gem_version.rb +23 -10
- data/test/rubygems/test_gem_version_option.rb +1 -3
- data/test/rubygems/test_kernel.rb +25 -9
- data/test/rubygems/test_project_sanity.rb +20 -0
- data/test/rubygems/test_remote_fetch_error.rb +1 -2
- data/test/rubygems/test_require.rb +394 -56
- data/test/test_changelog_generator.rb +17 -0
- metadata +109 -155
- data/.rubocop.yml +0 -67
- data/.travis.yml +0 -38
- data/appveyor.yml +0 -43
- data/bundler/CODE_OF_CONDUCT.md +0 -42
- data/bundler/CONTRIBUTING.md +0 -17
- data/bundler/exe/bundle_ruby +0 -60
- data/bundler/lib/bundler/cli/package.rb +0 -49
- data/bundler/lib/bundler/compatibility_guard.rb +0 -14
- data/bundler/lib/bundler/gem_remote_fetcher.rb +0 -43
- data/bundler/lib/bundler/ssl_certs/certificate_manager.rb +0 -66
- data/bundler/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
- data/bundler/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
- data/bundler/lib/bundler/templates/newgem/test/test_helper.rb.tt +0 -4
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb +0 -27
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb +0 -129
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb +0 -12
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb +0 -129
- data/lib/rubygems/source_local.rb +0 -7
- data/lib/rubygems/source_specific_file.rb +0 -6
- data/lib/rubygems/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +0 -21
- data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
- data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
- data/lib/ubygems.rb +0 -14
- data/util/CL2notes +0 -55
- data/util/ci +0 -82
- data/util/cops/deprecations.rb +0 -52
- data/util/create_certs.rb +0 -171
- data/util/create_certs.sh +0 -27
- data/util/create_encrypted_key.rb +0 -16
- data/util/generate_spdx_license_list.rb +0 -61
- data/util/patch_with_prs.rb +0 -77
- data/util/rubocop +0 -8
- data/util/update_bundled_ca_certificates.rb +0 -139
- data/util/update_changelog.rb +0 -67
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
|
|
3
3
|
require 'rubygems/commands/which_command'
|
4
4
|
|
5
5
|
class TestGemCommandsWhichCommand < Gem::TestCase
|
6
|
-
|
7
6
|
def setup
|
8
7
|
super
|
9
8
|
Gem::Specification.reset
|
@@ -33,7 +32,7 @@ class TestGemCommandsWhichCommand < Gem::TestCase
|
|
33
32
|
end
|
34
33
|
|
35
34
|
assert_equal '', @ui.output
|
36
|
-
assert_match %r
|
35
|
+
assert_match %r{Can.t find Ruby library file or shared library directory\n},
|
37
36
|
@ui.error
|
38
37
|
end
|
39
38
|
|
@@ -51,7 +50,7 @@ class TestGemCommandsWhichCommand < Gem::TestCase
|
|
51
50
|
end
|
52
51
|
|
53
52
|
assert_equal "#{@foo_bar.full_gem_path}/lib/foo_bar.rb\n", @ui.output
|
54
|
-
assert_match %r
|
53
|
+
assert_match %r{Can.t find Ruby library file or shared library missinglib\n},
|
55
54
|
@ui.error
|
56
55
|
end
|
57
56
|
|
@@ -65,7 +64,7 @@ class TestGemCommandsWhichCommand < Gem::TestCase
|
|
65
64
|
end
|
66
65
|
|
67
66
|
assert_equal '', @ui.output
|
68
|
-
assert_match %r
|
67
|
+
assert_match %r{Can.t find Ruby library file or shared library missinglib\n},
|
69
68
|
@ui.error
|
70
69
|
end
|
71
70
|
|
@@ -82,5 +81,4 @@ class TestGemCommandsWhichCommand < Gem::TestCase
|
|
82
81
|
FileUtils.touch filename
|
83
82
|
end
|
84
83
|
end
|
85
|
-
|
86
84
|
end
|
@@ -6,13 +6,21 @@ class TestGemCommandsYankCommand < Gem::TestCase
|
|
6
6
|
def setup
|
7
7
|
super
|
8
8
|
|
9
|
+
credential_setup
|
10
|
+
|
9
11
|
@cmd = Gem::Commands::YankCommand.new
|
10
12
|
@cmd.options[:host] = 'http://example'
|
11
13
|
|
12
14
|
@fetcher = Gem::RemoteFetcher.fetcher
|
13
15
|
|
14
16
|
Gem.configuration.rubygems_api_key = 'key'
|
15
|
-
Gem.configuration.api_keys[:KEY]
|
17
|
+
Gem.configuration.api_keys[:KEY] = 'other'
|
18
|
+
end
|
19
|
+
|
20
|
+
def teardown
|
21
|
+
credential_teardown
|
22
|
+
|
23
|
+
super
|
16
24
|
end
|
17
25
|
|
18
26
|
def test_handle_options
|
@@ -45,8 +53,8 @@ class TestGemCommandsYankCommand < Gem::TestCase
|
|
45
53
|
@cmd.execute
|
46
54
|
end
|
47
55
|
|
48
|
-
assert_match %r
|
49
|
-
assert_match %r
|
56
|
+
assert_match %r{Yanking gem from http://example}, @ui.output
|
57
|
+
assert_match %r{Successfully yanked}, @ui.output
|
50
58
|
|
51
59
|
platform = Gem.platforms[1]
|
52
60
|
body = @fetcher.last_request.body.split('&').sort
|
@@ -57,6 +65,50 @@ class TestGemCommandsYankCommand < Gem::TestCase
|
|
57
65
|
assert_equal [yank_uri], @fetcher.paths
|
58
66
|
end
|
59
67
|
|
68
|
+
def test_execute_with_otp_success
|
69
|
+
response_fail = 'You have enabled multifactor authentication but your request doesn\'t have the correct OTP code. Please check it and retry.'
|
70
|
+
yank_uri = 'http://example/api/v1/gems/yank'
|
71
|
+
@fetcher.data[yank_uri] = [
|
72
|
+
[response_fail, 401, 'Unauthorized'],
|
73
|
+
['Successfully yanked', 200, 'OK'],
|
74
|
+
]
|
75
|
+
|
76
|
+
@cmd.options[:args] = %w[a]
|
77
|
+
@cmd.options[:added_platform] = true
|
78
|
+
@cmd.options[:version] = req('= 1.0')
|
79
|
+
|
80
|
+
@otp_ui = Gem::MockGemUi.new "111111\n"
|
81
|
+
use_ui @otp_ui do
|
82
|
+
@cmd.execute
|
83
|
+
end
|
84
|
+
|
85
|
+
assert_match 'You have enabled multi-factor authentication. Please enter OTP code.', @otp_ui.output
|
86
|
+
assert_match 'Code: ', @otp_ui.output
|
87
|
+
assert_match %r{Yanking gem from http://example}, @otp_ui.output
|
88
|
+
assert_match %r{Successfully yanked}, @otp_ui.output
|
89
|
+
assert_equal '111111', @fetcher.last_request['OTP']
|
90
|
+
end
|
91
|
+
|
92
|
+
def test_execute_with_otp_failure
|
93
|
+
response = 'You have enabled multifactor authentication but your request doesn\'t have the correct OTP code. Please check it and retry.'
|
94
|
+
yank_uri = 'http://example/api/v1/gems/yank'
|
95
|
+
@fetcher.data[yank_uri] = [response, 401, 'Unauthorized']
|
96
|
+
|
97
|
+
@cmd.options[:args] = %w[a]
|
98
|
+
@cmd.options[:added_platform] = true
|
99
|
+
@cmd.options[:version] = req('= 1.0')
|
100
|
+
|
101
|
+
@otp_ui = Gem::MockGemUi.new "111111\n"
|
102
|
+
use_ui @otp_ui do
|
103
|
+
@cmd.execute
|
104
|
+
end
|
105
|
+
|
106
|
+
assert_match 'You have enabled multi-factor authentication. Please enter OTP code.', @otp_ui.output
|
107
|
+
assert_match response, @otp_ui.output
|
108
|
+
assert_match 'Code: ', @otp_ui.output
|
109
|
+
assert_equal '111111', @fetcher.last_request['OTP']
|
110
|
+
end
|
111
|
+
|
60
112
|
def test_execute_key
|
61
113
|
yank_uri = 'http://example/api/v1/gems/yank'
|
62
114
|
@fetcher.data[yank_uri] = ['Successfully yanked', 200, 'OK']
|
@@ -87,8 +139,8 @@ class TestGemCommandsYankCommand < Gem::TestCase
|
|
87
139
|
@cmd.execute
|
88
140
|
end
|
89
141
|
|
90
|
-
assert_match %r
|
91
|
-
assert_match %r
|
142
|
+
assert_match %r{Yanking gem from https://other.example}, @ui.output
|
143
|
+
assert_match %r{Successfully yanked}, @ui.output
|
92
144
|
|
93
145
|
body = @fetcher.last_request.body.split('&').sort
|
94
146
|
assert_equal %w[gem_name=a version=1.0], body
|
@@ -96,4 +148,33 @@ class TestGemCommandsYankCommand < Gem::TestCase
|
|
96
148
|
assert_equal [yank_uri], @fetcher.paths
|
97
149
|
end
|
98
150
|
|
151
|
+
def test_yank_gem_unathorized_api_key
|
152
|
+
response_forbidden = "The API key doesn't have access"
|
153
|
+
response_success = 'Successfully yanked'
|
154
|
+
host = 'http://example'
|
155
|
+
|
156
|
+
@fetcher.data["#{host}/api/v1/gems/yank"] = [
|
157
|
+
[response_forbidden, 403, 'Forbidden'],
|
158
|
+
[response_success, 200, "OK"],
|
159
|
+
]
|
160
|
+
|
161
|
+
@fetcher.data["#{host}/api/v1/api_key"] = ["", 200, "OK"]
|
162
|
+
@cmd.options[:args] = %w[a]
|
163
|
+
@cmd.options[:added_platform] = true
|
164
|
+
@cmd.options[:version] = req('= 1.0')
|
165
|
+
@cmd.instance_variable_set :@host, host
|
166
|
+
@cmd.instance_variable_set :@scope, :yank_rubygem
|
167
|
+
|
168
|
+
@ui = Gem::MockGemUi.new "some@mail.com\npass\n"
|
169
|
+
use_ui @ui do
|
170
|
+
@cmd.execute
|
171
|
+
end
|
172
|
+
|
173
|
+
access_notice = "The existing key doesn't have access of yank_rubygem on http://example. Please sign in to update access."
|
174
|
+
assert_match access_notice, @ui.output
|
175
|
+
assert_match "Email:", @ui.output
|
176
|
+
assert_match "Password:", @ui.output
|
177
|
+
assert_match "Added yank_rubygem scope to the existing API key", @ui.output
|
178
|
+
assert_match response_success, @ui.output
|
179
|
+
end
|
99
180
|
end
|
@@ -3,18 +3,15 @@ require 'rubygems/test_case'
|
|
3
3
|
require 'rubygems/config_file'
|
4
4
|
|
5
5
|
class TestGemConfigFile < Gem::TestCase
|
6
|
-
|
7
6
|
def setup
|
8
7
|
super
|
9
8
|
|
9
|
+
credential_setup
|
10
|
+
|
10
11
|
@temp_conf = File.join @tempdir, '.gemrc'
|
11
12
|
|
12
13
|
@cfg_args = %W[--config-file #{@temp_conf}]
|
13
14
|
|
14
|
-
@orig_SYSTEM_WIDE_CONFIG_FILE = Gem::ConfigFile::SYSTEM_WIDE_CONFIG_FILE
|
15
|
-
Gem::ConfigFile.send :remove_const, :SYSTEM_WIDE_CONFIG_FILE
|
16
|
-
Gem::ConfigFile.send :const_set, :SYSTEM_WIDE_CONFIG_FILE,
|
17
|
-
File.join(@tempdir, 'system-gemrc')
|
18
15
|
Gem::ConfigFile::OPERATING_SYSTEM_DEFAULTS.clear
|
19
16
|
Gem::ConfigFile::PLATFORM_DEFAULTS.clear
|
20
17
|
|
@@ -27,12 +24,11 @@ class TestGemConfigFile < Gem::TestCase
|
|
27
24
|
def teardown
|
28
25
|
Gem::ConfigFile::OPERATING_SYSTEM_DEFAULTS.clear
|
29
26
|
Gem::ConfigFile::PLATFORM_DEFAULTS.clear
|
30
|
-
Gem::ConfigFile.send :remove_const, :SYSTEM_WIDE_CONFIG_FILE
|
31
|
-
Gem::ConfigFile.send :const_set, :SYSTEM_WIDE_CONFIG_FILE,
|
32
|
-
@orig_SYSTEM_WIDE_CONFIG_FILE
|
33
27
|
|
34
28
|
ENV['GEMRC'] = @env_gemrc
|
35
29
|
|
30
|
+
credential_teardown
|
31
|
+
|
36
32
|
super
|
37
33
|
end
|
38
34
|
|
@@ -45,6 +41,7 @@ class TestGemConfigFile < Gem::TestCase
|
|
45
41
|
assert_equal true, @cfg.verbose
|
46
42
|
assert_equal [@gem_repo], Gem.sources
|
47
43
|
assert_equal 365, @cfg.cert_expiration_length_days
|
44
|
+
assert_equal false, @cfg.ipv4_fallback_enabled
|
48
45
|
|
49
46
|
File.open @temp_conf, 'w' do |fp|
|
50
47
|
fp.puts ":backtrace: true"
|
@@ -60,6 +57,7 @@ class TestGemConfigFile < Gem::TestCase
|
|
60
57
|
fp.puts ":ssl_verify_mode: 0"
|
61
58
|
fp.puts ":ssl_ca_cert: /etc/ssl/certs"
|
62
59
|
fp.puts ":cert_expiration_length_days: 28"
|
60
|
+
fp.puts ":ipv4_fallback_enabled: true"
|
63
61
|
end
|
64
62
|
|
65
63
|
util_config_file
|
@@ -74,6 +72,14 @@ class TestGemConfigFile < Gem::TestCase
|
|
74
72
|
assert_equal 0, @cfg.ssl_verify_mode
|
75
73
|
assert_equal '/etc/ssl/certs', @cfg.ssl_ca_cert
|
76
74
|
assert_equal 28, @cfg.cert_expiration_length_days
|
75
|
+
assert_equal true, @cfg.ipv4_fallback_enabled
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_initialize_ipv4_fallback_enabled_env
|
79
|
+
ENV['IPV4_FALLBACK_ENABLED'] = 'true'
|
80
|
+
util_config_file %W[--config-file #{@temp_conf}]
|
81
|
+
|
82
|
+
assert_equal true, @cfg.ipv4_fallback_enabled
|
77
83
|
end
|
78
84
|
|
79
85
|
def test_initialize_handle_arguments_config_file
|
@@ -157,8 +163,8 @@ class TestGemConfigFile < Gem::TestCase
|
|
157
163
|
File.open conf3, 'w' do |fp|
|
158
164
|
fp.puts ':verbose: :loud'
|
159
165
|
end
|
160
|
-
|
161
|
-
ENV['GEMRC'] = conf1 +
|
166
|
+
ps = File::PATH_SEPARATOR
|
167
|
+
ENV['GEMRC'] = conf1 + ps + conf2 + ps + conf3
|
162
168
|
|
163
169
|
util_config_file
|
164
170
|
|
@@ -167,11 +173,17 @@ class TestGemConfigFile < Gem::TestCase
|
|
167
173
|
assert_equal 2048, @cfg.bulk_threshold
|
168
174
|
end
|
169
175
|
|
176
|
+
def test_set_config_file_name_from_environment_variable
|
177
|
+
ENV['GEMRC'] = "/tmp/.gemrc"
|
178
|
+
cfg = Gem::ConfigFile.new([])
|
179
|
+
assert_equal cfg.config_file_name, "/tmp/.gemrc"
|
180
|
+
end
|
181
|
+
|
170
182
|
def test_api_keys
|
171
183
|
assert_nil @cfg.instance_variable_get :@api_keys
|
172
184
|
|
173
185
|
temp_cred = File.join Gem.user_home, '.gem', 'credentials'
|
174
|
-
FileUtils.
|
186
|
+
FileUtils.mkdir_p File.dirname(temp_cred)
|
175
187
|
File.open temp_cred, 'w', 0600 do |fp|
|
176
188
|
fp.puts ':rubygems_api_key: 701229f217cdf23b1344c7b4b54ca97'
|
177
189
|
end
|
@@ -297,7 +309,7 @@ if you believe they were disclosed to a third party.
|
|
297
309
|
|
298
310
|
def test_load_api_keys
|
299
311
|
temp_cred = File.join Gem.user_home, '.gem', 'credentials'
|
300
|
-
FileUtils.
|
312
|
+
FileUtils.mkdir_p File.dirname(temp_cred)
|
301
313
|
File.open temp_cred, 'w', 0600 do |fp|
|
302
314
|
fp.puts ":rubygems_api_key: 701229f217cdf23b1344c7b4b54ca97"
|
303
315
|
fp.puts ":other: a5fdbb6ba150cbb83aad2bb2fede64c"
|
@@ -386,7 +398,7 @@ if you believe they were disclosed to a third party.
|
|
386
398
|
util_config_file
|
387
399
|
|
388
400
|
# These should not be written out to the config file.
|
389
|
-
assert_equal false, @cfg.backtrace,
|
401
|
+
assert_equal false, @cfg.backtrace, 'backtrace'
|
390
402
|
assert_equal Gem::ConfigFile::DEFAULT_BULK_THRESHOLD, @cfg.bulk_threshold,
|
391
403
|
'bulk_threshold'
|
392
404
|
assert_equal true, @cfg.update_sources, 'update_sources'
|
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
|
|
3
3
|
require 'rubygems/dependency'
|
4
4
|
|
5
5
|
class TestGemDependency < Gem::TestCase
|
6
|
-
|
7
6
|
def test_initialize
|
8
7
|
d = dep "pkg", "> 1.0"
|
9
8
|
|
@@ -385,5 +384,10 @@ class TestGemDependency < Gem::TestCase
|
|
385
384
|
assert_match "Could not find 'b' (= 2.0) among 1 total gem(s)", e.message
|
386
385
|
end
|
387
386
|
|
388
|
-
|
387
|
+
def test_identity
|
388
|
+
assert_equal dep("a", "= 1").identity, :released
|
389
|
+
assert_equal dep("a", "= 1.a").identity, :complete
|
390
|
+
assert_equal dep("a", " >= 1.a").identity, :abs_latest
|
391
|
+
assert_equal dep("a").identity, :latest
|
392
|
+
end
|
389
393
|
end
|
@@ -4,7 +4,6 @@ require 'rubygems/dependency_installer'
|
|
4
4
|
require 'rubygems/security'
|
5
5
|
|
6
6
|
class TestGemDependencyInstaller < Gem::TestCase
|
7
|
-
|
8
7
|
def setup
|
9
8
|
super
|
10
9
|
common_installer_setup
|
@@ -26,78 +25,26 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
26
25
|
end
|
27
26
|
|
28
27
|
def util_setup_gems
|
29
|
-
@a1, @a1_gem
|
28
|
+
@a1, @a1_gem = util_gem 'a', '1' do |s|
|
29
|
+
s.executables << 'a_bin'
|
30
|
+
end
|
31
|
+
|
30
32
|
@a1_pre, @a1_pre_gem = util_gem 'a', '1.a'
|
31
|
-
|
33
|
+
|
34
|
+
@b1, @b1_gem = util_gem 'b', '1' do |s|
|
32
35
|
s.add_dependency 'a'
|
33
36
|
s.add_development_dependency 'aa'
|
34
37
|
end
|
35
38
|
|
36
|
-
@c1, @c1_gem
|
39
|
+
@c1, @c1_gem = util_gem 'c', '1' do |s|
|
37
40
|
s.add_development_dependency 'b'
|
38
41
|
end
|
39
42
|
|
40
|
-
@d1, @d1_gem
|
43
|
+
@d1, @d1_gem = util_gem 'd', '1' do |s|
|
41
44
|
s.add_development_dependency 'c'
|
42
45
|
end
|
43
46
|
|
44
|
-
|
45
|
-
util_reset_gems
|
46
|
-
end
|
47
|
-
|
48
|
-
def test_available_set_for_name
|
49
|
-
util_setup_gems
|
50
|
-
p1a, = util_gem 'a', '10.a'
|
51
|
-
util_setup_spec_fetcher p1a, @a1, @a1_pre
|
52
|
-
|
53
|
-
inst = Gem::DependencyInstaller.new
|
54
|
-
|
55
|
-
available = inst.available_set_for 'a', Gem::Requirement.default
|
56
|
-
|
57
|
-
assert_equal %w[a-1], available.set.map { |s| s.spec.full_name }
|
58
|
-
end
|
59
|
-
|
60
|
-
def test_available_set_for_name_prerelease
|
61
|
-
util_setup_gems
|
62
|
-
p1a, = util_gem 'a', '10.a'
|
63
|
-
util_setup_spec_fetcher p1a, @a1, @a1_pre
|
64
|
-
|
65
|
-
inst = Gem::DependencyInstaller.new :prerelease => true
|
66
|
-
|
67
|
-
available = inst.available_set_for 'a', Gem::Requirement.default
|
68
|
-
|
69
|
-
assert_equal %w[a-10.a],
|
70
|
-
available.sorted.map { |s| s.spec.full_name }
|
71
|
-
end
|
72
|
-
|
73
|
-
def test_available_set_for_dep
|
74
|
-
util_setup_gems
|
75
|
-
p1a, = util_gem 'a', '10.a'
|
76
|
-
util_setup_spec_fetcher p1a, @a1, @a1_pre
|
77
|
-
|
78
|
-
inst = Gem::DependencyInstaller.new
|
79
|
-
|
80
|
-
dep = Gem::Dependency.new 'a', Gem::Requirement.default
|
81
|
-
|
82
|
-
available = inst.available_set_for dep, Gem::Requirement.default
|
83
|
-
|
84
|
-
assert_equal %w[a-1], available.set.map { |s| s.spec.full_name }
|
85
|
-
end
|
86
|
-
|
87
|
-
def test_available_set_for_dep_prerelease
|
88
|
-
util_setup_gems
|
89
|
-
p1a, = util_gem 'a', '10.a'
|
90
|
-
util_setup_spec_fetcher p1a, @a1, @a1_pre
|
91
|
-
|
92
|
-
inst = Gem::DependencyInstaller.new :prerelease => true
|
93
|
-
|
94
|
-
dep = Gem::Dependency.new 'a', Gem::Requirement.default
|
95
|
-
dep.prerelease = true
|
96
|
-
|
97
|
-
available = inst.available_set_for dep, Gem::Requirement.default
|
98
|
-
|
99
|
-
assert_equal %w[a-10.a],
|
100
|
-
available.sorted.map { |s| s.spec.full_name }
|
47
|
+
util_setup_spec_fetcher(@a1, @a1_pre, @b1, @d1)
|
101
48
|
end
|
102
49
|
|
103
50
|
def test_install
|
@@ -121,7 +68,6 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
121
68
|
p1a, gem = util_gem 'a', '10.a'
|
122
69
|
|
123
70
|
util_setup_spec_fetcher(p1a, @a1, @a1_pre)
|
124
|
-
util_clear_gems
|
125
71
|
|
126
72
|
p1a_data = Gem.read_binary(gem)
|
127
73
|
|
@@ -160,7 +106,6 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
160
106
|
p1a, gem = util_gem 'p', '1.a'
|
161
107
|
|
162
108
|
util_setup_spec_fetcher(p1a)
|
163
|
-
util_clear_gems
|
164
109
|
|
165
110
|
p1a_data = Gem.read_binary(gem)
|
166
111
|
|
@@ -180,7 +125,6 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
180
125
|
util_setup_gems
|
181
126
|
|
182
127
|
util_setup_spec_fetcher(@a1, @a1_pre)
|
183
|
-
util_clear_gems
|
184
128
|
|
185
129
|
p1a_data = Gem.read_binary(@a1_gem)
|
186
130
|
|
@@ -201,11 +145,9 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
201
145
|
s.add_dependency 'b'
|
202
146
|
end
|
203
147
|
|
204
|
-
util_clear_gems
|
205
|
-
|
206
148
|
FileUtils.mv @a1_gem, @tempdir
|
207
149
|
FileUtils.mv @b1_gem, @tempdir
|
208
|
-
FileUtils.mv
|
150
|
+
FileUtils.mv e1_gem, @tempdir
|
209
151
|
|
210
152
|
inst = nil
|
211
153
|
|
@@ -214,7 +156,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
214
156
|
inst.install 'b'
|
215
157
|
end
|
216
158
|
|
217
|
-
assert_equal %w[b-1], inst.installed_gems.map {
|
159
|
+
assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name },
|
218
160
|
'sanity check'
|
219
161
|
|
220
162
|
Dir.chdir @tempdir do
|
@@ -222,7 +164,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
222
164
|
inst.install 'e'
|
223
165
|
end
|
224
166
|
|
225
|
-
assert_equal %w[a-1 e-1], inst.installed_gems.map {
|
167
|
+
assert_equal %w[a-1 e-1], inst.installed_gems.map {|s| s.full_name }
|
226
168
|
end
|
227
169
|
|
228
170
|
def test_install_cache_dir
|
@@ -239,7 +181,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
239
181
|
inst.install 'b'
|
240
182
|
end
|
241
183
|
|
242
|
-
assert_equal %w[a-1 b-1], inst.installed_gems.map {
|
184
|
+
assert_equal %w[a-1 b-1], inst.installed_gems.map {|s| s.full_name }
|
243
185
|
|
244
186
|
assert File.exist? File.join(@gemhome, "cache", @a1.file_name)
|
245
187
|
assert File.exist? File.join(@gemhome, "cache", @b1.file_name)
|
@@ -264,7 +206,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
264
206
|
inst.install 'a', req("= 2")
|
265
207
|
end
|
266
208
|
|
267
|
-
assert_equal %w[a-2], inst.installed_gems.map {
|
209
|
+
assert_equal %w[a-2], inst.installed_gems.map {|s| s.full_name },
|
268
210
|
'sanity check'
|
269
211
|
|
270
212
|
FileUtils.rm File.join(@tempdir, a2.file_name)
|
@@ -275,7 +217,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
275
217
|
end
|
276
218
|
|
277
219
|
assert_equal %w[a-2 b-1], Gem::Specification.map(&:full_name)
|
278
|
-
assert_equal %w[b-1], inst.installed_gems.map {
|
220
|
+
assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name }
|
279
221
|
end
|
280
222
|
|
281
223
|
# This asserts that if a gem's dependency is satisfied by an
|
@@ -296,7 +238,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
296
238
|
FileUtils.mv @a1_gem, @tempdir
|
297
239
|
FileUtils.mv a2_gem, @tempdir # not in index
|
298
240
|
FileUtils.mv @b1_gem, @tempdir
|
299
|
-
FileUtils.mv
|
241
|
+
FileUtils.mv a3_gem, @tempdir
|
300
242
|
|
301
243
|
Dir.chdir @tempdir do
|
302
244
|
Gem::DependencyInstaller.new.install 'a', req("= 2")
|
@@ -312,7 +254,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
312
254
|
end
|
313
255
|
|
314
256
|
assert_equal %w[a-2 b-1], Gem::Specification.map(&:full_name)
|
315
|
-
assert_equal %w[b-1], inst.installed_gems.map {
|
257
|
+
assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name }
|
316
258
|
end
|
317
259
|
|
318
260
|
def test_install_dependency
|
@@ -335,7 +277,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
335
277
|
inst.install 'b'
|
336
278
|
end
|
337
279
|
|
338
|
-
assert_equal %w[a-1 b-1], inst.installed_gems.map {
|
280
|
+
assert_equal %w[a-1 b-1], inst.installed_gems.map {|s| s.full_name }
|
339
281
|
|
340
282
|
assert done_installing_ran, 'post installs hook was not run'
|
341
283
|
end
|
@@ -345,8 +287,6 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
345
287
|
|
346
288
|
@aa1, @aa1_gem = util_gem 'aa', '1'
|
347
289
|
|
348
|
-
util_reset_gems
|
349
|
-
|
350
290
|
FileUtils.mv @a1_gem, @tempdir
|
351
291
|
FileUtils.mv @aa1_gem, @tempdir
|
352
292
|
FileUtils.mv @b1_gem, @tempdir
|
@@ -357,7 +297,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
357
297
|
inst.install 'b'
|
358
298
|
end
|
359
299
|
|
360
|
-
assert_equal %w[a-1 aa-1 b-1], inst.installed_gems.map {
|
300
|
+
assert_equal %w[a-1 aa-1 b-1], inst.installed_gems.map {|s| s.full_name }
|
361
301
|
end
|
362
302
|
|
363
303
|
def test_install_dependency_development_deep
|
@@ -365,8 +305,6 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
365
305
|
|
366
306
|
@aa1, @aa1_gem = util_gem 'aa', '1'
|
367
307
|
|
368
|
-
util_reset_gems
|
369
|
-
|
370
308
|
FileUtils.mv @a1_gem, @tempdir
|
371
309
|
FileUtils.mv @aa1_gem, @tempdir
|
372
310
|
FileUtils.mv @b1_gem, @tempdir
|
@@ -379,7 +317,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
379
317
|
inst.install 'd'
|
380
318
|
end
|
381
319
|
|
382
|
-
assert_equal %w[a-1 aa-1 b-1 c-1 d-1], inst.installed_gems.map {
|
320
|
+
assert_equal %w[a-1 aa-1 b-1 c-1 d-1], inst.installed_gems.map {|s| s.full_name }
|
383
321
|
end
|
384
322
|
|
385
323
|
def test_install_dependency_development_shallow
|
@@ -387,8 +325,6 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
387
325
|
|
388
326
|
@aa1, @aa1_gem = util_gem 'aa', '1'
|
389
327
|
|
390
|
-
util_reset_gems
|
391
|
-
|
392
328
|
FileUtils.mv @a1_gem, @tempdir
|
393
329
|
FileUtils.mv @aa1_gem, @tempdir
|
394
330
|
FileUtils.mv @b1_gem, @tempdir
|
@@ -401,7 +337,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
401
337
|
inst.install 'd'
|
402
338
|
end
|
403
339
|
|
404
|
-
assert_equal %w[c-1 d-1], inst.installed_gems.map {
|
340
|
+
assert_equal %w[c-1 d-1], inst.installed_gems.map {|s| s.full_name }
|
405
341
|
end
|
406
342
|
|
407
343
|
def test_install_dependency_existing
|
@@ -417,7 +353,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
417
353
|
inst.install 'b'
|
418
354
|
end
|
419
355
|
|
420
|
-
assert_equal %w[b-1], inst.installed_gems.map {
|
356
|
+
assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name }
|
421
357
|
end
|
422
358
|
|
423
359
|
def test_install_dependency_existing_extension
|
@@ -434,7 +370,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
434
370
|
e1 = util_spec 'e', '1', nil, 'extconf.rb' do |s|
|
435
371
|
s.extensions << 'extconf.rb'
|
436
372
|
end
|
437
|
-
e1_gem =
|
373
|
+
e1_gem = e1.cache_file
|
438
374
|
|
439
375
|
_, f1_gem = util_gem 'f', '1', 'e' => nil
|
440
376
|
|
@@ -454,7 +390,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
454
390
|
Dir.chdir pwd
|
455
391
|
end
|
456
392
|
|
457
|
-
assert_equal %w[f-1], inst.installed_gems.map {
|
393
|
+
assert_equal %w[f-1], inst.installed_gems.map {|s| s.full_name }
|
458
394
|
|
459
395
|
assert_path_exists e1.extension_dir
|
460
396
|
end
|
@@ -474,7 +410,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
474
410
|
inst.install 'f'
|
475
411
|
end
|
476
412
|
|
477
|
-
assert_equal %w[f-2], inst.installed_gems.map {
|
413
|
+
assert_equal %w[f-2], inst.installed_gems.map {|s| s.full_name }
|
478
414
|
end
|
479
415
|
|
480
416
|
def test_install_local
|
@@ -488,7 +424,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
488
424
|
inst.install 'a-1.gem'
|
489
425
|
end
|
490
426
|
|
491
|
-
assert_equal %w[a-1], inst.installed_gems.map {
|
427
|
+
assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name }
|
492
428
|
end
|
493
429
|
|
494
430
|
def test_install_local_prerelease
|
@@ -502,7 +438,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
502
438
|
inst.install 'a-1.a.gem'
|
503
439
|
end
|
504
440
|
|
505
|
-
assert_equal %w[a-1.a], inst.installed_gems.map {
|
441
|
+
assert_equal %w[a-1.a], inst.installed_gems.map {|s| s.full_name }
|
506
442
|
end
|
507
443
|
|
508
444
|
def test_install_local_dependency
|
@@ -518,7 +454,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
518
454
|
inst.install 'b-1.gem'
|
519
455
|
end
|
520
456
|
|
521
|
-
assert_equal %w[a-1 b-1], inst.installed_gems.map {
|
457
|
+
assert_equal %w[a-1 b-1], inst.installed_gems.map {|s| s.full_name }
|
522
458
|
end
|
523
459
|
|
524
460
|
def test_install_local_dependency_installed
|
@@ -536,7 +472,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
536
472
|
inst.install 'b-1.gem'
|
537
473
|
end
|
538
474
|
|
539
|
-
assert_equal %w[b-1], inst.installed_gems.map {
|
475
|
+
assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name }
|
540
476
|
end
|
541
477
|
|
542
478
|
def test_install_local_subdir
|
@@ -549,7 +485,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
549
485
|
inst.install 'gems/a-1.gem'
|
550
486
|
end
|
551
487
|
|
552
|
-
assert_equal %w[a-1], inst.installed_gems.map {
|
488
|
+
assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name }
|
553
489
|
end
|
554
490
|
|
555
491
|
def test_install_minimal_deps
|
@@ -563,8 +499,6 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
563
499
|
s.add_dependency 'a'
|
564
500
|
end
|
565
501
|
|
566
|
-
util_clear_gems
|
567
|
-
|
568
502
|
FileUtils.mv @a1_gem, @tempdir
|
569
503
|
FileUtils.mv @b1_gem, @tempdir
|
570
504
|
FileUtils.mv b2_gem, @tempdir
|
@@ -577,7 +511,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
577
511
|
inst.install 'b', req('= 1')
|
578
512
|
end
|
579
513
|
|
580
|
-
assert_equal %w[b-1], inst.installed_gems.map {
|
514
|
+
assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name },
|
581
515
|
'sanity check'
|
582
516
|
|
583
517
|
Dir.chdir @tempdir do
|
@@ -585,7 +519,41 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
585
519
|
inst.install 'e'
|
586
520
|
end
|
587
521
|
|
588
|
-
assert_equal %w[a-1 e-1], inst.installed_gems.map {
|
522
|
+
assert_equal %w[a-1 e-1], inst.installed_gems.map {|s| s.full_name }
|
523
|
+
end
|
524
|
+
|
525
|
+
def test_install_no_minimal_deps
|
526
|
+
util_setup_gems
|
527
|
+
|
528
|
+
_, e1_gem = util_gem 'e', '1' do |s|
|
529
|
+
s.add_dependency 'b'
|
530
|
+
end
|
531
|
+
|
532
|
+
_, b2_gem = util_gem 'b', '2' do |s|
|
533
|
+
s.add_dependency 'a'
|
534
|
+
end
|
535
|
+
|
536
|
+
FileUtils.mv @a1_gem, @tempdir
|
537
|
+
FileUtils.mv @b1_gem, @tempdir
|
538
|
+
FileUtils.mv b2_gem, @tempdir
|
539
|
+
FileUtils.mv e1_gem, @tempdir
|
540
|
+
|
541
|
+
inst = nil
|
542
|
+
|
543
|
+
Dir.chdir @tempdir do
|
544
|
+
inst = Gem::DependencyInstaller.new :ignore_dependencies => true
|
545
|
+
inst.install 'b', req('= 1')
|
546
|
+
end
|
547
|
+
|
548
|
+
assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name },
|
549
|
+
'sanity check'
|
550
|
+
|
551
|
+
Dir.chdir @tempdir do
|
552
|
+
inst = Gem::DependencyInstaller.new :minimal_deps => false
|
553
|
+
inst.install 'e'
|
554
|
+
end
|
555
|
+
|
556
|
+
assert_equal %w[a-1 b-2 e-1], inst.installed_gems.map {|s| s.full_name }
|
589
557
|
end
|
590
558
|
|
591
559
|
def test_install_no_document
|
@@ -618,7 +586,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
618
586
|
|
619
587
|
env = "/\\S+/env" unless Gem.win_platform?
|
620
588
|
|
621
|
-
assert_match %r
|
589
|
+
assert_match %r{\A#!#{env} #{RbConfig::CONFIG['ruby_install_name']}\n},
|
622
590
|
File.read(File.join(@gemhome, 'bin', 'a_bin'))
|
623
591
|
end
|
624
592
|
|
@@ -635,7 +603,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
635
603
|
inst.install 'b'
|
636
604
|
end
|
637
605
|
|
638
|
-
assert_equal %w[b-1], inst.installed_gems.map {
|
606
|
+
assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name }
|
639
607
|
end
|
640
608
|
|
641
609
|
def test_install_build_args
|
@@ -665,7 +633,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
665
633
|
inst.install 'b'
|
666
634
|
end
|
667
635
|
|
668
|
-
assert_equal %w[b-1], inst.installed_gems.map {
|
636
|
+
assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name }
|
669
637
|
end
|
670
638
|
|
671
639
|
def test_install_install_dir
|
@@ -686,7 +654,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
686
654
|
inst.install 'b'
|
687
655
|
end
|
688
656
|
|
689
|
-
assert_equal %w[a-1 b-1], inst.installed_gems.map {
|
657
|
+
assert_equal %w[a-1 b-1], inst.installed_gems.map {|s| s.full_name }
|
690
658
|
|
691
659
|
assert File.exist?(File.join(gemhome2, 'specifications', @a1.spec_name))
|
692
660
|
assert File.exist?(File.join(gemhome2, 'cache', @a1.file_name))
|
@@ -710,7 +678,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
710
678
|
inst.install 'b'
|
711
679
|
end
|
712
680
|
|
713
|
-
assert_equal %w[a-1 b-1], inst.installed_gems.map {
|
681
|
+
assert_equal %w[a-1 b-1], inst.installed_gems.map {|s| s.full_name }
|
714
682
|
a1, b1 = inst.installed_gems
|
715
683
|
|
716
684
|
assert_equal a1.spec_file, a1.loaded_from
|
@@ -734,7 +702,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
734
702
|
inst.install 'b'
|
735
703
|
end
|
736
704
|
|
737
|
-
assert_equal %w[a-1 b-1], inst.installed_gems.map {
|
705
|
+
assert_equal %w[a-1 b-1], inst.installed_gems.map {|s| s.full_name }
|
738
706
|
end
|
739
707
|
|
740
708
|
def test_install_domain_local
|
@@ -753,7 +721,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
753
721
|
assert_equal expected, e.message
|
754
722
|
end
|
755
723
|
|
756
|
-
assert_equal [], inst.installed_gems.map {
|
724
|
+
assert_equal [], inst.installed_gems.map {|s| s.full_name }
|
757
725
|
end
|
758
726
|
|
759
727
|
def test_install_domain_remote
|
@@ -769,7 +737,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
769
737
|
inst = Gem::DependencyInstaller.new :domain => :remote
|
770
738
|
inst.install 'a'
|
771
739
|
|
772
|
-
assert_equal %w[a-1], inst.installed_gems.map {
|
740
|
+
assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name }
|
773
741
|
end
|
774
742
|
|
775
743
|
def test_install_dual_repository
|
@@ -786,7 +754,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
786
754
|
inst.install 'a'
|
787
755
|
end
|
788
756
|
|
789
|
-
assert_equal %w[a-1], inst.installed_gems.map {
|
757
|
+
assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name },
|
790
758
|
'sanity check'
|
791
759
|
|
792
760
|
ENV['GEM_HOME'] = @gemhome
|
@@ -798,7 +766,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
798
766
|
inst.install 'b'
|
799
767
|
end
|
800
768
|
|
801
|
-
assert_equal %w[b-1], inst.installed_gems.map {
|
769
|
+
assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name }
|
802
770
|
end
|
803
771
|
|
804
772
|
def test_install_reinstall
|
@@ -809,7 +777,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
809
777
|
inst = nil
|
810
778
|
|
811
779
|
Dir.chdir @tempdir do
|
812
|
-
inst = Gem::DependencyInstaller.new
|
780
|
+
inst = Gem::DependencyInstaller.new :force => true
|
813
781
|
inst.install 'a'
|
814
782
|
end
|
815
783
|
|
@@ -833,7 +801,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
833
801
|
inst.install 'a'
|
834
802
|
end
|
835
803
|
|
836
|
-
assert_equal %w[a-1], inst.installed_gems.map {
|
804
|
+
assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name }
|
837
805
|
end
|
838
806
|
|
839
807
|
def test_install_remote_dep
|
@@ -853,7 +821,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
853
821
|
inst.install dep
|
854
822
|
end
|
855
823
|
|
856
|
-
assert_equal %w[a-1], inst.installed_gems.map {
|
824
|
+
assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name }
|
857
825
|
end
|
858
826
|
|
859
827
|
def test_install_remote_platform_newer
|
@@ -865,15 +833,18 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
865
833
|
|
866
834
|
si = util_setup_spec_fetcher @a1, a2_o
|
867
835
|
|
868
|
-
util_clear_gems
|
869
|
-
|
870
836
|
@fetcher.data['http://gems.example.com/gems/yaml'] = si.to_yaml
|
871
837
|
|
872
838
|
a1_data = nil
|
873
839
|
a2_o_data = nil
|
874
840
|
|
875
|
-
File.open @a1_gem, 'rb' do |fp|
|
876
|
-
|
841
|
+
File.open @a1_gem, 'rb' do |fp|
|
842
|
+
a1_data = fp.read
|
843
|
+
end
|
844
|
+
|
845
|
+
File.open a2_o_gem, 'rb' do |fp|
|
846
|
+
a2_o_data = fp.read
|
847
|
+
end
|
877
848
|
|
878
849
|
@fetcher.data["http://gems.example.com/gems/#{@a1.file_name}"] =
|
879
850
|
a1_data
|
@@ -883,7 +854,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
883
854
|
inst = Gem::DependencyInstaller.new :domain => :remote
|
884
855
|
inst.install 'a'
|
885
856
|
|
886
|
-
assert_equal %w[a-1], inst.installed_gems.map {
|
857
|
+
assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name }
|
887
858
|
end
|
888
859
|
|
889
860
|
def test_install_platform_is_ignored_when_a_file_is_specified
|
@@ -894,17 +865,19 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
894
865
|
inst = Gem::DependencyInstaller.new :domain => :local
|
895
866
|
inst.install a_gem
|
896
867
|
|
897
|
-
assert_equal %w[a-1-cpu-other_platform-1], inst.installed_gems.map {
|
868
|
+
assert_equal %w[a-1-cpu-other_platform-1], inst.installed_gems.map {|s| s.full_name }
|
898
869
|
end
|
899
870
|
|
900
|
-
|
871
|
+
require 'rubygems/openssl'
|
872
|
+
|
873
|
+
if Gem::HAVE_OPENSSL
|
901
874
|
def test_install_security_policy
|
902
875
|
util_setup_gems
|
903
876
|
|
904
|
-
data = File.open(@a1_gem, 'rb') {
|
877
|
+
data = File.open(@a1_gem, 'rb') {|f| f.read }
|
905
878
|
@fetcher.data['http://gems.example.com/gems/a-1.gem'] = data
|
906
879
|
|
907
|
-
data = File.open(@b1_gem, 'rb') {
|
880
|
+
data = File.open(@b1_gem, 'rb') {|f| f.read }
|
908
881
|
@fetcher.data['http://gems.example.com/gems/b-1.gem'] = data
|
909
882
|
|
910
883
|
policy = Gem::Security::HighSecurity
|
@@ -917,7 +890,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
917
890
|
assert_equal 'unsigned gems are not allowed by the High Security policy',
|
918
891
|
e.message
|
919
892
|
|
920
|
-
assert_equal %w[], inst.installed_gems.map {
|
893
|
+
assert_equal %w[], inst.installed_gems.map {|s| s.full_name }
|
921
894
|
end
|
922
895
|
end
|
923
896
|
|
@@ -931,7 +904,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
931
904
|
inst = Gem::DependencyInstaller.new :wrappers => false, :format_executable => false
|
932
905
|
inst.install 'a'
|
933
906
|
|
934
|
-
refute_match(%r
|
907
|
+
refute_match(%r{This file was generated by RubyGems.},
|
935
908
|
File.read(File.join(@gemhome, 'bin', 'a_bin')))
|
936
909
|
end
|
937
910
|
end
|
@@ -939,114 +912,102 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
939
912
|
def test_install_version
|
940
913
|
util_setup_d
|
941
914
|
|
942
|
-
data = File.open(@d2_gem, 'rb') {
|
915
|
+
data = File.open(@d2_gem, 'rb') {|f| f.read }
|
943
916
|
@fetcher.data['http://gems.example.com/gems/d-2.gem'] = data
|
944
917
|
|
945
|
-
data = File.open(@d1_gem, 'rb') {
|
918
|
+
data = File.open(@d1_gem, 'rb') {|f| f.read }
|
946
919
|
@fetcher.data['http://gems.example.com/gems/d-1.gem'] = data
|
947
920
|
|
948
921
|
inst = Gem::DependencyInstaller.new
|
949
922
|
|
950
923
|
inst.install 'd', '= 1'
|
951
924
|
|
952
|
-
assert_equal %w[d-1], inst.installed_gems.map {
|
925
|
+
assert_equal %w[d-1], inst.installed_gems.map {|s| s.full_name }
|
953
926
|
end
|
954
927
|
|
955
928
|
def test_install_version_default
|
956
929
|
util_setup_d
|
957
930
|
|
958
|
-
data = File.open(@d2_gem, 'rb') {
|
931
|
+
data = File.open(@d2_gem, 'rb') {|f| f.read }
|
959
932
|
@fetcher.data['http://gems.example.com/gems/d-2.gem'] = data
|
960
933
|
|
961
|
-
data = File.open(@d1_gem, 'rb') {
|
934
|
+
data = File.open(@d1_gem, 'rb') {|f| f.read }
|
962
935
|
@fetcher.data['http://gems.example.com/gems/d-1.gem'] = data
|
963
936
|
|
964
937
|
inst = Gem::DependencyInstaller.new
|
965
938
|
inst.install 'd'
|
966
939
|
|
967
|
-
assert_equal %w[d-2], inst.installed_gems.map {
|
940
|
+
assert_equal %w[d-2], inst.installed_gems.map {|s| s.full_name }
|
968
941
|
end
|
969
942
|
|
970
|
-
def
|
971
|
-
|
972
|
-
|
973
|
-
|
974
|
-
dep = Gem::Dependency.new 'b', '>= 0'
|
943
|
+
def test_install_legacy_spec_with_nil_required_ruby_version
|
944
|
+
path = File.expand_path "../data/null-required-ruby-version.gemspec.rz", __FILE__
|
945
|
+
spec = Marshal.load Gem.read_binary(path)
|
946
|
+
def spec.validate(*args); end
|
975
947
|
|
976
|
-
|
948
|
+
util_build_gem spec
|
977
949
|
|
978
|
-
|
950
|
+
cache_file = File.join @tempdir, 'gems', "#{spec.original_name}.gem"
|
951
|
+
FileUtils.mkdir_p File.dirname cache_file
|
952
|
+
FileUtils.mv spec.cache_file, cache_file
|
979
953
|
|
980
|
-
|
981
|
-
|
982
|
-
s = set.set.first
|
954
|
+
util_setup_spec_fetcher spec
|
983
955
|
|
984
|
-
|
985
|
-
assert_equal Gem::Source.new(@gem_repo), s.source
|
986
|
-
end
|
956
|
+
data = Gem.read_binary(cache_file)
|
987
957
|
|
988
|
-
|
989
|
-
util_gem 'a', 1
|
990
|
-
FileUtils.mv 'gems/a-1.gem', @tempdir
|
958
|
+
@fetcher.data['http://gems.example.com/gems/activesupport-1.0.0.gem'] = data
|
991
959
|
|
992
|
-
|
960
|
+
dep = Gem::Dependency.new 'activesupport'
|
993
961
|
|
994
962
|
inst = Gem::DependencyInstaller.new
|
963
|
+
inst.install dep
|
995
964
|
|
996
|
-
|
997
|
-
|
998
|
-
assert_equal %w[a-1], available.each_spec.map { |spec| spec.full_name }
|
965
|
+
assert_equal %w[activesupport-1.0.0], Gem::Specification.map(&:full_name)
|
999
966
|
end
|
1000
967
|
|
1001
|
-
def
|
1002
|
-
|
968
|
+
def test_install_legacy_spec_with_nil_required_rubygems_version
|
969
|
+
path = File.expand_path "../data/null-required-rubygems-version.gemspec.rz", __FILE__
|
970
|
+
spec = Marshal.load Gem.read_binary(path)
|
971
|
+
def spec.validate(*args); end
|
1003
972
|
|
1004
|
-
|
973
|
+
util_build_gem spec
|
1005
974
|
|
1006
|
-
|
1007
|
-
|
1008
|
-
|
1009
|
-
end
|
975
|
+
cache_file = File.join @tempdir, 'gems', "#{spec.original_name}.gem"
|
976
|
+
FileUtils.mkdir_p File.dirname cache_file
|
977
|
+
FileUtils.mv spec.cache_file, cache_file
|
1010
978
|
|
1011
|
-
|
1012
|
-
FileUtils.touch 'rdoc.gem'
|
1013
|
-
|
1014
|
-
inst = Gem::DependencyInstaller.new
|
979
|
+
util_setup_spec_fetcher spec
|
1015
980
|
|
1016
|
-
|
1017
|
-
inst.find_spec_by_name_and_version 'rdoc.gem'
|
1018
|
-
end
|
981
|
+
data = Gem.read_binary(cache_file)
|
1019
982
|
|
1020
|
-
|
1021
|
-
assert_equal "package metadata is missing in #{full_path}", e.message
|
1022
|
-
end
|
983
|
+
@fetcher.data['http://gems.example.com/gems/activesupport-1.0.0.gem'] = data
|
1023
984
|
|
1024
|
-
|
1025
|
-
Dir.mkdir 'rdoc'
|
985
|
+
dep = Gem::Dependency.new 'activesupport'
|
1026
986
|
|
1027
987
|
inst = Gem::DependencyInstaller.new
|
988
|
+
inst.install dep
|
1028
989
|
|
1029
|
-
|
1030
|
-
inst.find_spec_by_name_and_version 'rdoc'
|
1031
|
-
end
|
1032
|
-
|
1033
|
-
assert_equal "Could not find a valid gem 'rdoc' (>= 0) " +
|
1034
|
-
"locally or in a repository",
|
1035
|
-
e.message
|
990
|
+
assert_equal %w[activesupport-1.0.0], Gem::Specification.map(&:full_name)
|
1036
991
|
end
|
1037
992
|
|
1038
|
-
def
|
1039
|
-
|
993
|
+
def test_find_gems_gems_with_sources
|
994
|
+
util_setup_gems
|
1040
995
|
|
1041
996
|
inst = Gem::DependencyInstaller.new
|
997
|
+
dep = Gem::Dependency.new 'b', '>= 0'
|
1042
998
|
|
1043
|
-
|
1044
|
-
|
999
|
+
Gem::Specification.reset
|
1000
|
+
|
1001
|
+
set = Gem::Deprecate.skip_during do
|
1002
|
+
inst.find_gems_with_sources(dep)
|
1045
1003
|
end
|
1046
1004
|
|
1047
|
-
|
1048
|
-
|
1049
|
-
|
1005
|
+
assert_kind_of Gem::AvailableSet, set
|
1006
|
+
|
1007
|
+
s = set.set.first
|
1008
|
+
|
1009
|
+
assert_equal @b1, s.spec
|
1010
|
+
assert_equal Gem::Source.new(@gem_repo), s.source
|
1050
1011
|
end
|
1051
1012
|
|
1052
1013
|
def test_find_gems_with_sources_local
|
@@ -1058,7 +1019,9 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
1058
1019
|
set = nil
|
1059
1020
|
|
1060
1021
|
Dir.chdir @tempdir do
|
1061
|
-
set =
|
1022
|
+
set = Gem::Deprecate.skip_during do
|
1023
|
+
inst.find_gems_with_sources dep
|
1024
|
+
end
|
1062
1025
|
end
|
1063
1026
|
|
1064
1027
|
gems = set.sorted
|
@@ -1082,16 +1045,22 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
1082
1045
|
|
1083
1046
|
dependency = Gem::Dependency.new('a', Gem::Requirement.default)
|
1084
1047
|
|
1085
|
-
|
1086
|
-
installer.find_gems_with_sources(dependency)
|
1048
|
+
set = Gem::Deprecate.skip_during do
|
1049
|
+
installer.find_gems_with_sources(dependency)
|
1050
|
+
end
|
1051
|
+
|
1052
|
+
releases = set.all_specs
|
1087
1053
|
|
1088
|
-
assert releases.any? {
|
1089
|
-
refute releases.any? {
|
1054
|
+
assert releases.any? {|s| s.name == 'a' and s.version.to_s == '1' }
|
1055
|
+
refute releases.any? {|s| s.name == 'a' and s.version.to_s == '1.a' }
|
1090
1056
|
|
1091
1057
|
dependency.prerelease = true
|
1092
1058
|
|
1093
|
-
|
1094
|
-
installer.find_gems_with_sources(dependency)
|
1059
|
+
set = Gem::Deprecate.skip_during do
|
1060
|
+
installer.find_gems_with_sources(dependency)
|
1061
|
+
end
|
1062
|
+
|
1063
|
+
prereleases = set.all_specs
|
1095
1064
|
|
1096
1065
|
assert_equal [@a1_pre, @a1], prereleases
|
1097
1066
|
end
|
@@ -1108,8 +1077,11 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
1108
1077
|
|
1109
1078
|
dependency = Gem::Dependency.new('a', Gem::Requirement.default)
|
1110
1079
|
|
1111
|
-
|
1112
|
-
installer.find_gems_with_sources(dependency, true)
|
1080
|
+
set = Gem::Deprecate.skip_during do
|
1081
|
+
installer.find_gems_with_sources(dependency, true)
|
1082
|
+
end
|
1083
|
+
|
1084
|
+
releases = set.all_specs
|
1113
1085
|
|
1114
1086
|
assert_equal [a1_x86_mingw32], releases
|
1115
1087
|
end
|
@@ -1121,7 +1093,9 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
1121
1093
|
|
1122
1094
|
dep = Gem::Dependency.new('a')
|
1123
1095
|
|
1124
|
-
out =
|
1096
|
+
out = Gem::Deprecate.skip_during do
|
1097
|
+
installer.find_gems_with_sources(dep)
|
1098
|
+
end
|
1125
1099
|
|
1126
1100
|
assert out.empty?
|
1127
1101
|
assert_kind_of Gem::SourceFetchProblem, installer.errors.first
|
@@ -1136,7 +1110,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
1136
1110
|
inst = Gem::DependencyInstaller.new
|
1137
1111
|
request_set = inst.resolve_dependencies 'b', req('>= 0')
|
1138
1112
|
|
1139
|
-
requests = request_set.sorted_requests.map {
|
1113
|
+
requests = request_set.sorted_requests.map {|req| req.full_name }
|
1140
1114
|
|
1141
1115
|
assert_equal %w[a-1 b-1], requests
|
1142
1116
|
end
|
@@ -1150,7 +1124,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
1150
1124
|
inst = Gem::DependencyInstaller.new :ignore_dependencies => true
|
1151
1125
|
request_set = inst.resolve_dependencies 'b', req('>= 0')
|
1152
1126
|
|
1153
|
-
requests = request_set.sorted_requests.map {
|
1127
|
+
requests = request_set.sorted_requests.map {|req| req.full_name }
|
1154
1128
|
|
1155
1129
|
assert request_set.ignore_dependencies
|
1156
1130
|
|
@@ -1167,72 +1141,15 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
1167
1141
|
inst = Gem::DependencyInstaller.new
|
1168
1142
|
request_set = inst.resolve_dependencies 'a-1.gem', req('>= 0')
|
1169
1143
|
|
1170
|
-
requests = request_set.sorted_requests.map {
|
1144
|
+
requests = request_set.sorted_requests.map {|req| req.full_name }
|
1171
1145
|
|
1172
1146
|
assert_equal %w[a-1], requests
|
1173
1147
|
end
|
1174
1148
|
|
1175
|
-
def util_write_a1_bin
|
1176
|
-
write_file File.join('gems', 'a-1', 'bin', 'a_bin') do |fp|
|
1177
|
-
fp.puts "#!/usr/bin/ruby"
|
1178
|
-
end
|
1179
|
-
end
|
1180
|
-
|
1181
|
-
def util_setup_c1_pre
|
1182
|
-
@c1_pre, @c1_pre_gem = util_spec 'c', '1.a' do |s|
|
1183
|
-
s.add_dependency 'a', '1.a'
|
1184
|
-
s.add_dependency 'b', '1'
|
1185
|
-
end
|
1186
|
-
|
1187
|
-
util_reset_gems
|
1188
|
-
end
|
1189
|
-
|
1190
1149
|
def util_setup_d
|
1191
1150
|
@d1, @d1_gem = util_gem 'd', '1'
|
1192
1151
|
@d2, @d2_gem = util_gem 'd', '2'
|
1193
1152
|
|
1194
|
-
|
1195
|
-
end
|
1196
|
-
|
1197
|
-
def util_setup_wxyz
|
1198
|
-
@x1_m, @x1_m_gem = util_spec 'x', '1' do |s|
|
1199
|
-
s.platform = Gem::Platform.new %w[cpu my_platform 1]
|
1200
|
-
end
|
1201
|
-
|
1202
|
-
@x1_o, @x1_o_gem = util_spec 'x', '1' do |s|
|
1203
|
-
s.platform = Gem::Platform.new %w[cpu other_platform 1]
|
1204
|
-
end
|
1205
|
-
|
1206
|
-
@w1, @w1_gem = util_spec 'w', '1', 'x' => nil
|
1207
|
-
|
1208
|
-
@y1, @y1_gem = util_spec 'y', '1'
|
1209
|
-
@y1_1_p, @y1_1_p_gem = util_spec 'y', '1.1' do |s|
|
1210
|
-
s.platform = Gem::Platform.new %w[cpu my_platform 1]
|
1211
|
-
end
|
1212
|
-
|
1213
|
-
@z1, @z1_gem = util_spec 'z', '1', 'y' => nil
|
1214
|
-
|
1215
|
-
util_reset_gems
|
1216
|
-
end
|
1217
|
-
|
1218
|
-
def util_reset_gems
|
1219
|
-
@a1 ||= nil
|
1220
|
-
@b1 ||= nil
|
1221
|
-
@a1_pre ||= nil
|
1222
|
-
@c1_pre ||= nil
|
1223
|
-
@d1 ||= nil
|
1224
|
-
@d2 ||= nil
|
1225
|
-
@w1 ||= nil
|
1226
|
-
@x1_m ||= nil
|
1227
|
-
@x1_o ||= nil
|
1228
|
-
@y1 ||= nil
|
1229
|
-
@y1_1_p ||= nil
|
1230
|
-
@z1 ||= nil
|
1231
|
-
|
1232
|
-
util_setup_spec_fetcher(*[@a1, @a1_pre, @b1, @c1_pre,
|
1233
|
-
@d1, @d2, @x1_m, @x1_o, @w1, @y1,
|
1234
|
-
@y1_1_p, @z1].compact)
|
1235
|
-
|
1236
|
-
util_clear_gems
|
1153
|
+
util_setup_spec_fetcher(@d1, @d2)
|
1237
1154
|
end
|
1238
1155
|
end
|