rubygems-update 3.0.3 → 3.4.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5556 -0
- data/CODE_OF_CONDUCT.md +62 -24
- data/CONTRIBUTING.md +111 -21
- data/MAINTAINERS.txt +1 -6
- data/Manifest.txt +209 -101
- data/POLICIES.md +65 -22
- data/README.md +23 -15
- data/UPGRADING.md +5 -81
- data/bin/gem +2 -16
- data/bin/update_rubygems +5 -5
- data/bundler/CHANGELOG.md +2619 -1256
- data/bundler/LICENSE.md +18 -19
- data/bundler/README.md +11 -12
- data/bundler/UPGRADING.md +222 -0
- data/bundler/bundler.gemspec +13 -33
- data/bundler/exe/bundle +26 -11
- data/bundler/exe/bundler +1 -1
- data/bundler/lib/bundler/.document +1 -0
- data/bundler/lib/bundler/build_metadata.rb +5 -13
- data/bundler/lib/bundler/capistrano.rb +4 -4
- data/bundler/lib/bundler/cli/add.rb +28 -16
- data/bundler/lib/bundler/cli/binstubs.rb +11 -3
- data/bundler/lib/bundler/cli/cache.rb +24 -17
- data/bundler/lib/bundler/cli/check.rb +5 -3
- data/bundler/lib/bundler/cli/clean.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +41 -13
- data/bundler/lib/bundler/cli/config.rb +170 -86
- data/bundler/lib/bundler/cli/console.rb +3 -3
- data/bundler/lib/bundler/cli/doctor.rb +27 -10
- data/bundler/lib/bundler/cli/exec.rb +8 -25
- data/bundler/lib/bundler/cli/fund.rb +36 -0
- data/bundler/lib/bundler/cli/gem.rb +261 -48
- data/bundler/lib/bundler/cli/info.rb +52 -8
- data/bundler/lib/bundler/cli/init.rb +7 -3
- data/bundler/lib/bundler/cli/inject.rb +1 -1
- data/bundler/lib/bundler/cli/install.rb +38 -66
- data/bundler/lib/bundler/cli/issue.rb +8 -7
- data/bundler/lib/bundler/cli/list.rb +19 -11
- data/bundler/lib/bundler/cli/lock.rb +11 -4
- data/bundler/lib/bundler/cli/open.rb +14 -9
- data/bundler/lib/bundler/cli/outdated.rb +152 -121
- data/bundler/lib/bundler/cli/platform.rb +2 -2
- data/bundler/lib/bundler/cli/plugin.rb +19 -2
- data/bundler/lib/bundler/cli/pristine.rb +6 -1
- data/bundler/lib/bundler/cli/remove.rb +1 -2
- data/bundler/lib/bundler/cli/show.rb +3 -3
- data/bundler/lib/bundler/cli/update.rb +49 -18
- data/bundler/lib/bundler/cli/viz.rb +1 -1
- data/bundler/lib/bundler/cli.rb +269 -165
- data/bundler/lib/bundler/compact_index_client/cache.rb +7 -24
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
- data/bundler/lib/bundler/compact_index_client/updater.rb +58 -57
- data/bundler/lib/bundler/compact_index_client.rb +28 -18
- data/bundler/lib/bundler/constants.rb +1 -1
- data/bundler/lib/bundler/current_ruby.rb +26 -11
- data/bundler/lib/bundler/definition.rb +359 -441
- data/bundler/lib/bundler/dependency.rb +29 -71
- data/bundler/lib/bundler/deployment.rb +1 -1
- data/bundler/lib/bundler/digest.rb +71 -0
- data/bundler/lib/bundler/dsl.rb +84 -116
- data/bundler/lib/bundler/endpoint_specification.rb +20 -14
- data/bundler/lib/bundler/env.rb +10 -15
- data/bundler/lib/bundler/environment_preserver.rb +30 -3
- data/bundler/lib/bundler/errors.rb +31 -14
- data/bundler/lib/bundler/feature_flag.rb +13 -33
- data/bundler/lib/bundler/fetcher/base.rb +7 -9
- data/bundler/lib/bundler/fetcher/compact_index.rb +46 -39
- data/bundler/lib/bundler/fetcher/dependency.rb +2 -2
- data/bundler/lib/bundler/fetcher/downloader.rb +15 -12
- data/bundler/lib/bundler/fetcher/index.rb +4 -30
- data/bundler/lib/bundler/fetcher.rb +39 -41
- data/bundler/lib/bundler/force_platform.rb +18 -0
- data/bundler/lib/bundler/friendly_errors.rb +49 -54
- data/bundler/lib/bundler/gem_helper.rb +79 -43
- data/bundler/lib/bundler/gem_helpers.rb +44 -28
- data/bundler/lib/bundler/gem_tasks.rb +1 -1
- data/bundler/lib/bundler/gem_version_promoter.rb +54 -99
- data/bundler/lib/bundler/graph.rb +5 -5
- data/bundler/lib/bundler/index.rb +14 -52
- data/bundler/lib/bundler/injector.rb +50 -16
- data/bundler/lib/bundler/inline.rb +28 -29
- data/bundler/lib/bundler/installer/gem_installer.rb +22 -23
- data/bundler/lib/bundler/installer/parallel_installer.rb +51 -51
- data/bundler/lib/bundler/installer/standalone.rb +62 -12
- data/bundler/lib/bundler/installer.rb +46 -97
- data/bundler/lib/bundler/lazy_specification.rb +88 -48
- data/bundler/lib/bundler/lockfile_generator.rb +3 -3
- data/bundler/lib/bundler/lockfile_parser.rb +30 -62
- data/bundler/{man → lib/bundler/man}/bundle-add.1 +29 -5
- data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +22 -4
- data/bundler/{man → lib/bundler/man}/bundle-binstubs.1 +6 -4
- data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +3 -5
- data/bundler/lib/bundler/man/bundle-cache.1 +61 -0
- data/bundler/{man/bundle-package.ronn → lib/bundler/man/bundle-cache.1.ronn} +22 -15
- data/bundler/{man → lib/bundler/man}/bundle-check.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-clean.1 +2 -2
- data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-config.1 +78 -60
- data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +96 -85
- data/bundler/lib/bundler/man/bundle-console.1 +53 -0
- data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
- data/bundler/{man → lib/bundler/man}/bundle-doctor.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-exec.1 +6 -6
- data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +6 -6
- data/bundler/lib/bundler/man/bundle-gem.1 +105 -0
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +117 -0
- data/bundler/lib/bundler/man/bundle-help.1 +13 -0
- data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
- data/bundler/{man → lib/bundler/man}/bundle-info.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-init.1 +6 -2
- data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +3 -1
- data/bundler/{man → lib/bundler/man}/bundle-inject.1 +5 -2
- data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +3 -1
- data/bundler/{man → lib/bundler/man}/bundle-install.1 +42 -37
- data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +42 -38
- data/bundler/{man → lib/bundler/man}/bundle-list.1 +7 -7
- data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
- data/bundler/{man → lib/bundler/man}/bundle-lock.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-open.1 +22 -2
- data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +9 -1
- data/bundler/{man → lib/bundler/man}/bundle-outdated.1 +3 -10
- data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +1 -10
- data/bundler/{man → lib/bundler/man}/bundle-platform.1 +16 -6
- data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +14 -7
- data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
- data/bundler/{man → lib/bundler/man}/bundle-pristine.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-remove.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-show.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-update.1 +8 -8
- data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +8 -7
- data/bundler/lib/bundler/man/bundle-version.1 +35 -0
- data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
- data/bundler/{man → lib/bundler/man}/bundle-viz.1 +4 -1
- data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +2 -0
- data/bundler/{man → lib/bundler/man}/bundle.1 +17 -12
- data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +14 -9
- data/bundler/lib/bundler/man/gemfile.5 +723 -0
- data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +112 -95
- data/bundler/lib/bundler/man/index.txt +29 -0
- data/bundler/lib/bundler/match_metadata.rb +13 -0
- data/bundler/lib/bundler/match_platform.rb +1 -2
- data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
- data/bundler/lib/bundler/mirror.rb +10 -12
- data/bundler/lib/bundler/plugin/api/source.rb +29 -15
- data/bundler/lib/bundler/plugin/api.rb +1 -1
- data/bundler/lib/bundler/plugin/dsl.rb +1 -1
- data/bundler/lib/bundler/plugin/index.rb +31 -8
- data/bundler/lib/bundler/plugin/installer/git.rb +0 -4
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -9
- data/bundler/lib/bundler/plugin/installer.rb +35 -22
- data/bundler/lib/bundler/plugin/source_list.rb +5 -1
- data/bundler/lib/bundler/plugin.rb +102 -42
- data/bundler/lib/bundler/process_lock.rb +1 -1
- data/bundler/lib/bundler/remote_specification.rb +15 -8
- data/bundler/lib/bundler/resolver/base.rb +77 -0
- data/bundler/lib/bundler/resolver/candidate.rb +94 -0
- data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
- data/bundler/lib/bundler/resolver/package.rb +72 -0
- data/bundler/lib/bundler/resolver/root.rb +25 -0
- data/bundler/lib/bundler/resolver/spec_group.rb +49 -73
- data/bundler/lib/bundler/resolver.rb +343 -300
- data/bundler/lib/bundler/retry.rb +4 -4
- data/bundler/lib/bundler/ruby_dsl.rb +1 -1
- data/bundler/lib/bundler/ruby_version.rb +9 -37
- data/bundler/lib/bundler/rubygems_ext.rb +235 -92
- data/bundler/lib/bundler/rubygems_gem_installer.rb +87 -21
- data/bundler/lib/bundler/rubygems_integration.rb +179 -515
- data/bundler/lib/bundler/runtime.rb +25 -40
- data/bundler/lib/bundler/self_manager.rb +168 -0
- data/bundler/lib/bundler/settings.rb +162 -118
- data/bundler/lib/bundler/setup.rb +11 -12
- data/bundler/lib/bundler/shared_helpers.rb +61 -102
- data/bundler/lib/bundler/similarity_detector.rb +3 -3
- data/bundler/lib/bundler/source/git/git_proxy.rb +257 -128
- data/bundler/lib/bundler/source/git.rb +84 -61
- data/bundler/lib/bundler/source/metadata.rb +9 -9
- data/bundler/lib/bundler/source/path/installer.rb +11 -32
- data/bundler/lib/bundler/source/path.rb +28 -17
- data/bundler/lib/bundler/source/rubygems/remote.rb +3 -4
- data/bundler/lib/bundler/source/rubygems.rb +171 -197
- data/bundler/lib/bundler/source/rubygems_aggregate.rb +68 -0
- data/bundler/lib/bundler/source.rb +30 -10
- data/bundler/lib/bundler/source_list.rb +112 -67
- data/bundler/lib/bundler/source_map.rb +71 -0
- data/bundler/lib/bundler/spec_set.rb +86 -72
- data/bundler/lib/bundler/stub_specification.rb +45 -37
- data/bundler/lib/bundler/templates/Executable +3 -5
- data/bundler/lib/bundler/templates/Executable.bundler +21 -17
- data/bundler/lib/bundler/templates/Executable.standalone +4 -4
- data/bundler/lib/bundler/templates/Gemfile +0 -2
- data/bundler/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
- data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
- data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +22 -2
- data/bundler/lib/bundler/templates/newgem/README.md.tt +13 -15
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +33 -5
- data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +25 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/{extconf.rb.tt → extconf-c.rb.tt} +2 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +37 -0
- data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +18 -0
- data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +36 -41
- data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
- data/bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
- data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
- data/bundler/lib/bundler/templates/newgem/standard.yml.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/test/minitest/test_helper.rb.tt +6 -0
- data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/test_newgem.rb.tt} +3 -1
- data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
- data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
- data/bundler/lib/bundler/ui/shell.rb +39 -20
- data/bundler/lib/bundler/ui/silent.rb +21 -5
- data/bundler/lib/bundler/ui.rb +3 -3
- data/bundler/lib/bundler/uri_credentials_filter.rb +10 -4
- data/bundler/lib/bundler/vendor/.document +1 -0
- data/bundler/lib/bundler/vendor/connection_pool/LICENSE +20 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +174 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +56 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +128 -0
- data/bundler/lib/bundler/vendor/fileutils/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1493 -425
- data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +40 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +53 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +302 -462
- data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +155 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +243 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
- data/bundler/lib/bundler/vendor/thor/LICENSE.md +20 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +3 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +7 -17
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +25 -14
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +20 -10
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +34 -15
- data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +63 -43
- data/bundler/lib/bundler/vendor/thor/lib/thor/command.rb +21 -14
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +6 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +83 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +3 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +6 -6
- data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor.rb +2 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +7 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +20 -7
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +40 -6
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +1 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +15 -14
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +88 -13
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +10 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +3 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +5 -5
- data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +18 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor.rb +16 -9
- data/bundler/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +452 -0
- data/bundler/lib/bundler/vendor/uri/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +729 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +100 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1587 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +125 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +23 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +261 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +22 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +293 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +539 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +119 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +83 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +23 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +104 -0
- data/bundler/lib/bundler/vendored_fileutils.rb +1 -6
- data/bundler/lib/bundler/vendored_persistent.rb +2 -39
- data/bundler/lib/bundler/{vendored_molinillo.rb → vendored_pub_grub.rb} +1 -1
- data/bundler/lib/bundler/vendored_thor.rb +2 -2
- data/bundler/lib/bundler/vendored_tsort.rb +4 -0
- data/bundler/lib/bundler/vendored_uri.rb +4 -0
- data/bundler/lib/bundler/version.rb +5 -20
- data/bundler/lib/bundler/vlad.rb +2 -2
- data/bundler/lib/bundler/worker.rb +26 -15
- data/bundler/lib/bundler/yaml_serializer.rb +3 -4
- data/bundler/lib/bundler.rb +285 -183
- data/hide_lib_for_update/note.txt +0 -4
- data/lib/rubygems/available_set.rb +7 -8
- data/lib/rubygems/basic_specification.rb +44 -31
- data/lib/rubygems/bundler_version_finder.rb +28 -50
- data/lib/rubygems/command.rb +104 -46
- data/lib/rubygems/command_manager.rb +35 -16
- data/lib/rubygems/commands/build_command.rb +77 -26
- data/lib/rubygems/commands/cert_command.rb +78 -76
- data/lib/rubygems/commands/check_command.rb +20 -22
- data/lib/rubygems/commands/cleanup_command.rb +36 -32
- data/lib/rubygems/commands/contents_command.rb +16 -18
- data/lib/rubygems/commands/dependency_command.rb +39 -50
- data/lib/rubygems/commands/environment_command.rb +11 -13
- data/lib/rubygems/commands/fetch_command.rb +33 -16
- data/lib/rubygems/commands/generate_index_command.rb +18 -17
- data/lib/rubygems/commands/help_command.rb +7 -7
- data/lib/rubygems/commands/info_command.rb +11 -6
- data/lib/rubygems/commands/install_command.rb +45 -79
- data/lib/rubygems/commands/list_command.rb +9 -8
- data/lib/rubygems/commands/lock_command.rb +7 -9
- data/lib/rubygems/commands/mirror_command.rb +3 -4
- data/lib/rubygems/commands/open_command.rb +11 -14
- data/lib/rubygems/commands/outdated_command.rb +5 -6
- data/lib/rubygems/commands/owner_command.rb +29 -22
- data/lib/rubygems/commands/pristine_command.rb +61 -51
- data/lib/rubygems/commands/push_command.rb +26 -63
- data/lib/rubygems/commands/query_command.rb +21 -337
- data/lib/rubygems/commands/rdoc_command.rb +26 -26
- data/lib/rubygems/commands/search_command.rb +8 -8
- data/lib/rubygems/commands/server_command.rb +16 -77
- data/lib/rubygems/commands/setup_command.rb +282 -241
- data/lib/rubygems/commands/signin_command.rb +9 -10
- data/lib/rubygems/commands/signout_command.rb +7 -9
- data/lib/rubygems/commands/sources_command.rb +42 -26
- data/lib/rubygems/commands/specification_command.rb +25 -20
- data/lib/rubygems/commands/stale_command.rb +3 -3
- data/lib/rubygems/commands/uninstall_command.rb +58 -49
- data/lib/rubygems/commands/unpack_command.rb +15 -44
- data/lib/rubygems/commands/update_command.rb +133 -81
- data/lib/rubygems/commands/which_command.rb +8 -11
- data/lib/rubygems/commands/yank_command.rb +22 -19
- data/lib/rubygems/compatibility.rb +7 -5
- data/lib/rubygems/config_file.rb +101 -47
- data/lib/rubygems/core_ext/kernel_gem.rb +8 -12
- data/lib/rubygems/core_ext/kernel_require.rb +124 -83
- data/lib/rubygems/core_ext/kernel_warn.rb +35 -30
- data/lib/rubygems/core_ext/tcpsocket_init.rb +52 -0
- data/lib/rubygems/defaults.rb +131 -55
- data/lib/rubygems/dependency.rb +44 -27
- data/lib/rubygems/dependency_installer.rb +49 -205
- data/lib/rubygems/dependency_list.rb +24 -25
- data/lib/rubygems/deprecate.rb +106 -12
- data/lib/rubygems/doctor.rb +22 -22
- data/lib/rubygems/errors.rb +8 -14
- data/lib/rubygems/exceptions.rb +35 -33
- data/lib/rubygems/ext/build_error.rb +2 -0
- data/lib/rubygems/ext/builder.rb +71 -95
- data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +27 -0
- data/lib/rubygems/ext/cargo_builder.rb +360 -0
- data/lib/rubygems/ext/cmake_builder.rb +6 -7
- data/lib/rubygems/ext/configure_builder.rb +5 -8
- data/lib/rubygems/ext/ext_conf_builder.rb +45 -65
- data/lib/rubygems/ext/rake_builder.rb +7 -10
- data/lib/rubygems/ext.rb +7 -6
- data/lib/rubygems/gem_runner.rb +15 -26
- data/lib/rubygems/gemcutter_utilities.rb +179 -54
- data/lib/rubygems/indexer.rb +38 -53
- data/lib/rubygems/install_default_message.rb +2 -2
- data/lib/rubygems/install_message.rb +2 -2
- data/lib/rubygems/install_update_options.rb +73 -64
- data/lib/rubygems/installer.rb +230 -173
- data/lib/rubygems/installer_uninstaller_utils.rb +29 -0
- data/lib/rubygems/local_remote_options.rb +22 -24
- data/lib/rubygems/mock_gem_ui.rb +2 -5
- data/lib/rubygems/name_tuple.rb +10 -14
- data/lib/rubygems/openssl.rb +7 -0
- data/lib/rubygems/optparse/.document +1 -0
- data/lib/rubygems/optparse/COPYING +56 -0
- data/lib/rubygems/optparse/lib/optionparser.rb +2 -0
- data/lib/rubygems/optparse/lib/optparse/ac.rb +54 -0
- data/lib/rubygems/optparse/lib/optparse/date.rb +18 -0
- data/lib/rubygems/optparse/lib/optparse/kwargs.rb +22 -0
- data/lib/rubygems/optparse/lib/optparse/shellwords.rb +7 -0
- data/lib/rubygems/optparse/lib/optparse/time.rb +11 -0
- data/lib/rubygems/optparse/lib/optparse/uri.rb +7 -0
- data/lib/rubygems/optparse/lib/optparse/version.rb +71 -0
- data/lib/rubygems/optparse/lib/optparse.rb +2308 -0
- data/lib/rubygems/optparse.rb +3 -0
- data/lib/rubygems/package/digest_io.rb +0 -2
- data/lib/rubygems/package/file_source.rb +2 -4
- data/lib/rubygems/package/io_source.rb +4 -2
- data/lib/rubygems/package/old.rb +9 -11
- data/lib/rubygems/package/tar_header.rb +73 -66
- data/lib/rubygems/package/tar_reader/entry.rb +8 -9
- data/lib/rubygems/package/tar_reader.rb +16 -13
- data/lib/rubygems/package/tar_writer.rb +12 -22
- data/lib/rubygems/package.rb +142 -125
- data/lib/rubygems/package_task.rb +5 -11
- data/lib/rubygems/path_support.rb +3 -8
- data/lib/rubygems/platform.rb +113 -73
- data/lib/rubygems/psych_tree.rb +1 -1
- data/lib/rubygems/query_utils.rb +351 -0
- data/lib/rubygems/rdoc.rb +4 -16
- data/lib/rubygems/remote_fetcher.rb +64 -136
- data/lib/rubygems/request/connection_pools.rb +7 -11
- data/lib/rubygems/request/http_pool.rb +2 -3
- data/lib/rubygems/request.rb +31 -32
- data/lib/rubygems/request_set/gem_dependency_api.rb +135 -136
- data/lib/rubygems/request_set/lockfile/parser.rb +28 -28
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -5
- data/lib/rubygems/request_set/lockfile.rb +21 -20
- data/lib/rubygems/request_set.rb +30 -43
- data/lib/rubygems/requirement.rb +42 -64
- data/lib/rubygems/resolver/activation_request.rb +29 -53
- data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
- data/lib/rubygems/resolver/api_set.rb +33 -26
- data/lib/rubygems/resolver/api_specification.rb +30 -16
- data/lib/rubygems/resolver/best_set.rb +9 -11
- data/lib/rubygems/resolver/composed_set.rb +3 -5
- data/lib/rubygems/resolver/conflict.rb +12 -19
- data/lib/rubygems/resolver/current_set.rb +0 -2
- data/lib/rubygems/resolver/dependency_request.rb +3 -5
- data/lib/rubygems/resolver/git_set.rb +2 -4
- data/lib/rubygems/resolver/git_specification.rb +6 -8
- data/lib/rubygems/resolver/index_set.rb +4 -6
- data/lib/rubygems/resolver/index_specification.rb +38 -7
- data/lib/rubygems/resolver/installed_specification.rb +4 -6
- data/lib/rubygems/resolver/installer_set.rb +69 -27
- data/lib/rubygems/resolver/local_specification.rb +2 -4
- data/lib/rubygems/resolver/lock_set.rb +7 -9
- data/lib/rubygems/resolver/lock_specification.rb +6 -8
- data/lib/rubygems/resolver/molinillo/LICENSE +9 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +8 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +51 -12
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +42 -9
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +82 -8
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +13 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +510 -165
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
- data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
- data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
- data/lib/rubygems/resolver/molinillo.rb +1 -1
- data/lib/rubygems/resolver/requirement_list.rb +0 -1
- data/lib/rubygems/resolver/set.rb +0 -3
- data/lib/rubygems/resolver/source_set.rb +0 -2
- data/lib/rubygems/resolver/spec_specification.rb +14 -2
- data/lib/rubygems/resolver/specification.rb +14 -3
- data/lib/rubygems/resolver/vendor_set.rb +1 -3
- data/lib/rubygems/resolver/vendor_specification.rb +3 -5
- data/lib/rubygems/resolver.rb +58 -54
- data/lib/rubygems/s3_uri_signer.rb +175 -0
- data/lib/rubygems/safe_yaml.rb +14 -16
- data/lib/rubygems/security/policies.rb +47 -47
- data/lib/rubygems/security/policy.rb +25 -29
- data/lib/rubygems/security/signer.rb +16 -18
- data/lib/rubygems/security/trust_dir.rb +5 -6
- data/lib/rubygems/security.rb +90 -69
- data/lib/rubygems/security_option.rb +7 -8
- data/lib/rubygems/source/git.rb +30 -30
- data/lib/rubygems/source/installed.rb +1 -3
- data/lib/rubygems/source/local.rb +4 -6
- data/lib/rubygems/source/lock.rb +0 -2
- data/lib/rubygems/source/specific_file.rb +1 -3
- data/lib/rubygems/source/vendor.rb +0 -2
- data/lib/rubygems/source.rb +50 -38
- data/lib/rubygems/source_list.rb +9 -13
- data/lib/rubygems/spec_fetcher.rb +52 -64
- data/lib/rubygems/specification.rb +432 -463
- data/lib/rubygems/specification_policy.rb +185 -87
- data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
- data/lib/rubygems/stub_specification.rb +24 -29
- data/lib/rubygems/text.rb +21 -21
- data/lib/rubygems/tsort/.document +1 -0
- data/lib/rubygems/tsort/LICENSE.txt +22 -0
- data/lib/rubygems/tsort/lib/tsort.rb +452 -0
- data/lib/rubygems/tsort.rb +3 -0
- data/lib/rubygems/uninstaller.rb +110 -57
- data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
- data/lib/rubygems/update_suggestion.rb +69 -0
- data/lib/rubygems/uri.rb +126 -0
- data/lib/rubygems/uri_formatter.rb +2 -4
- data/lib/rubygems/user_interaction.rb +46 -49
- data/lib/rubygems/util/licenses.rb +511 -404
- data/lib/rubygems/util.rb +40 -56
- data/lib/rubygems/validator.rb +15 -37
- data/lib/rubygems/version.rb +48 -29
- data/lib/rubygems/version_option.rb +11 -5
- data/lib/rubygems.rb +305 -332
- data/rubygems-update.gemspec +6 -13
- data/setup.rb +11 -22
- data/test/rubygems/alternate_cert.pem +14 -14
- data/test/rubygems/alternate_cert_32.pem +15 -15
- data/test/rubygems/alternate_key.pem +25 -25
- data/test/rubygems/bundler_test_gem.rb +419 -0
- data/test/rubygems/ca_cert.pem +74 -65
- data/test/rubygems/child_cert.pem +15 -16
- data/test/rubygems/child_cert_32.pem +15 -16
- data/test/rubygems/child_key.pem +25 -25
- data/test/rubygems/client.pem +103 -45
- data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
- data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
- data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
- data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
- data/test/rubygems/encrypted_private_key.pem +26 -26
- data/test/rubygems/expired_cert.pem +15 -15
- data/test/rubygems/future_cert.pem +15 -15
- data/test/rubygems/future_cert_32.pem +15 -15
- data/test/rubygems/grandchild_cert.pem +15 -16
- data/test/rubygems/grandchild_cert_32.pem +15 -16
- data/test/rubygems/grandchild_key.pem +25 -25
- data/{lib/rubygems/test_case.rb → test/rubygems/helper.rb} +505 -507
- data/{lib → test}/rubygems/installer_test_case.rb +115 -53
- data/test/rubygems/invalid_issuer_cert.pem +16 -16
- data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
- data/test/rubygems/invalid_key.pem +25 -25
- data/test/rubygems/invalid_signer_cert.pem +15 -15
- data/test/rubygems/invalid_signer_cert_32.pem +15 -15
- data/test/rubygems/invalidchild_cert.pem +15 -16
- data/test/rubygems/invalidchild_cert_32.pem +15 -16
- data/test/rubygems/invalidchild_key.pem +25 -25
- data/{lib → test}/rubygems/package/tar_test_case.rb +4 -6
- data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
- data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
- data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
- data/test/rubygems/plugin/exception/rubygems_plugin.rb +1 -1
- data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
- data/test/rubygems/private_ec_key.pem +9 -0
- data/test/rubygems/private_key.pem +25 -25
- data/test/rubygems/public_cert.pem +16 -16
- data/test/rubygems/public_cert_32.pem +15 -15
- data/test/rubygems/public_key.pem +7 -7
- data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
- data/test/rubygems/rubygems_plugin.rb +2 -4
- data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
- data/test/rubygems/ssl_cert.pem +78 -17
- data/test/rubygems/ssl_key.pem +25 -13
- data/test/rubygems/test_bundled_ca.rb +44 -47
- data/test/rubygems/test_config.rb +5 -7
- data/test/rubygems/test_deprecate.rb +90 -10
- data/test/rubygems/test_exit.rb +17 -0
- data/test/rubygems/test_gem.rb +679 -885
- data/test/rubygems/test_gem_available_set.rb +24 -25
- data/test/rubygems/test_gem_bundler_version_finder.rb +42 -42
- data/test/rubygems/test_gem_command.rb +186 -39
- data/test/rubygems/test_gem_command_manager.rb +166 -36
- data/test/rubygems/test_gem_commands_build_command.rb +436 -52
- data/test/rubygems/test_gem_commands_cert_command.rb +193 -124
- data/test/rubygems/test_gem_commands_check_command.rb +9 -11
- data/test/rubygems/test_gem_commands_cleanup_command.rb +87 -62
- data/test/rubygems/test_gem_commands_contents_command.rb +73 -42
- data/test/rubygems/test_gem_commands_dependency_command.rb +39 -41
- data/test/rubygems/test_gem_commands_environment_command.rb +60 -48
- data/test/rubygems/test_gem_commands_fetch_command.rb +163 -32
- data/test/rubygems/test_gem_commands_generate_index_command.rb +39 -9
- data/test/rubygems/test_gem_commands_help_command.rb +34 -19
- data/test/rubygems/test_gem_commands_info_command.rb +34 -9
- data/test/rubygems/test_gem_commands_install_command.rb +600 -173
- data/test/rubygems/test_gem_commands_list_command.rb +5 -7
- data/test/rubygems/test_gem_commands_lock_command.rb +11 -13
- data/test/rubygems/test_gem_commands_mirror.rb +3 -4
- data/test/rubygems/test_gem_commands_open_command.rb +16 -19
- data/test/rubygems/test_gem_commands_outdated_command.rb +24 -7
- data/test/rubygems/test_gem_commands_owner_command.rb +183 -49
- data/test/rubygems/test_gem_commands_pristine_command.rb +222 -89
- data/test/rubygems/test_gem_commands_push_command.rb +178 -69
- data/test/rubygems/test_gem_commands_query_command.rb +114 -89
- data/test/rubygems/test_gem_commands_search_command.rb +2 -4
- data/test/rubygems/test_gem_commands_server_command.rb +6 -46
- data/test/rubygems/test_gem_commands_setup_command.rb +334 -157
- data/test/rubygems/test_gem_commands_signin_command.rb +187 -27
- data/test/rubygems/test_gem_commands_signout_command.rb +3 -10
- data/test/rubygems/test_gem_commands_sources_command.rb +266 -33
- data/test/rubygems/test_gem_commands_specification_command.rb +81 -55
- data/test/rubygems/test_gem_commands_stale_command.rb +4 -6
- data/test/rubygems/test_gem_commands_uninstall_command.rb +230 -95
- data/test/rubygems/test_gem_commands_unpack_command.rb +32 -34
- data/test/rubygems/test_gem_commands_update_command.rb +412 -102
- data/test/rubygems/test_gem_commands_which_command.rb +12 -14
- data/test/rubygems/test_gem_commands_yank_command.rb +107 -26
- data/test/rubygems/test_gem_config_file.rb +120 -96
- data/test/rubygems/test_gem_dependency.rb +94 -86
- data/test/rubygems/test_gem_dependency_installer.rb +305 -388
- data/test/rubygems/test_gem_dependency_list.rb +66 -61
- data/test/rubygems/test_gem_dependency_resolution_error.rb +5 -7
- data/test/rubygems/test_gem_doctor.rb +73 -47
- data/test/rubygems/test_gem_ext_builder.rb +116 -106
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +8 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +233 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +27 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +233 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +8 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +51 -0
- data/test/rubygems/test_gem_ext_cargo_builder.rb +166 -0
- data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +33 -0
- data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +60 -0
- data/test/rubygems/test_gem_ext_cmake_builder.rb +32 -37
- data/test/rubygems/test_gem_ext_configure_builder.rb +23 -31
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +75 -79
- data/test/rubygems/test_gem_ext_rake_builder.rb +49 -30
- data/test/rubygems/test_gem_gem_runner.rb +52 -7
- data/test/rubygems/test_gem_gemcutter_utilities.rb +91 -76
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -6
- data/test/rubygems/test_gem_indexer.rb +120 -105
- data/test/rubygems/test_gem_install_update_options.rb +57 -33
- data/test/rubygems/test_gem_installer.rb +1230 -644
- data/test/rubygems/test_gem_local_remote_options.rb +11 -13
- data/test/rubygems/test_gem_name_tuple.rb +4 -6
- data/test/rubygems/test_gem_package.rb +396 -266
- data/test/rubygems/test_gem_package_old.rb +57 -56
- data/test/rubygems/test_gem_package_tar_header.rb +108 -50
- data/test/rubygems/test_gem_package_tar_reader.rb +8 -10
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +77 -20
- data/test/rubygems/test_gem_package_tar_writer.rb +107 -101
- data/test/rubygems/test_gem_package_task.rb +58 -25
- data/test/rubygems/test_gem_path_support.rb +29 -29
- data/test/rubygems/test_gem_platform.rb +388 -199
- data/test/rubygems/test_gem_rdoc.rb +20 -155
- data/test/rubygems/test_gem_remote_fetcher.rb +474 -303
- data/test/rubygems/test_gem_request.rb +128 -85
- data/test/rubygems/test_gem_request_connection_pools.rb +32 -32
- data/test/rubygems/test_gem_request_set.rb +186 -110
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +280 -261
- data/test/rubygems/test_gem_request_set_lockfile.rb +93 -94
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +68 -69
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +136 -136
- data/test/rubygems/test_gem_requirement.rb +140 -55
- data/test/rubygems/test_gem_resolver.rb +224 -115
- data/test/rubygems/test_gem_resolver_activation_request.rb +9 -40
- data/test/rubygems/test_gem_resolver_api_set.rb +79 -78
- data/test/rubygems/test_gem_resolver_api_specification.rb +47 -49
- data/test/rubygems/test_gem_resolver_best_set.rb +43 -22
- data/test/rubygems/test_gem_resolver_composed_set.rb +1 -3
- data/test/rubygems/test_gem_resolver_conflict.rb +12 -18
- data/test/rubygems/test_gem_resolver_dependency_request.rb +15 -17
- data/test/rubygems/test_gem_resolver_git_set.rb +22 -24
- data/test/rubygems/test_gem_resolver_git_specification.rb +22 -22
- data/test/rubygems/test_gem_resolver_index_set.rb +14 -16
- data/test/rubygems/test_gem_resolver_index_specification.rb +21 -18
- data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -8
- data/test/rubygems/test_gem_resolver_installer_set.rb +106 -44
- data/test/rubygems/test_gem_resolver_local_specification.rb +7 -9
- data/test/rubygems/test_gem_resolver_lock_set.rb +15 -17
- data/test/rubygems/test_gem_resolver_lock_specification.rb +17 -19
- data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -3
- data/test/rubygems/test_gem_resolver_specification.rb +8 -10
- data/test/rubygems/test_gem_resolver_vendor_set.rb +9 -11
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +10 -12
- data/test/rubygems/test_gem_security.rb +109 -79
- data/test/rubygems/test_gem_security_policy.rb +102 -107
- data/test/rubygems/test_gem_security_signer.rb +51 -52
- data/test/rubygems/test_gem_security_trust_dir.rb +14 -16
- data/test/rubygems/test_gem_silent_ui.rb +47 -42
- data/test/rubygems/test_gem_source.rb +66 -51
- data/test/rubygems/test_gem_source_fetch_problem.rb +17 -8
- data/test/rubygems/test_gem_source_git.rb +74 -74
- data/test/rubygems/test_gem_source_installed.rb +16 -18
- data/test/rubygems/test_gem_source_list.rb +5 -5
- data/test/rubygems/test_gem_source_local.rb +15 -16
- data/test/rubygems/test_gem_source_lock.rb +31 -33
- data/test/rubygems/test_gem_source_specific_file.rb +18 -19
- data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
- data/test/rubygems/test_gem_source_vendor.rb +13 -15
- data/test/rubygems/test_gem_spec_fetcher.rb +74 -67
- data/test/rubygems/test_gem_specification.rb +1051 -1071
- data/test/rubygems/test_gem_stream_ui.rb +25 -23
- data/test/rubygems/test_gem_stub_specification.rb +39 -56
- data/test/rubygems/test_gem_text.rb +8 -3
- data/test/rubygems/test_gem_uninstaller.rb +269 -100
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -5
- data/test/rubygems/test_gem_update_suggestion.rb +208 -0
- data/test/rubygems/test_gem_uri.rb +39 -0
- data/test/rubygems/test_gem_uri_formatter.rb +14 -16
- data/test/rubygems/test_gem_util.rb +46 -34
- data/test/rubygems/test_gem_validator.rb +12 -15
- data/test/rubygems/test_gem_version.rb +49 -34
- data/test/rubygems/test_gem_version_option.rb +16 -18
- data/test/rubygems/test_kernel.rb +61 -53
- data/test/rubygems/test_project_sanity.rb +20 -0
- data/test/rubygems/test_remote_fetch_error.rb +7 -8
- data/test/rubygems/test_require.rb +415 -121
- data/test/rubygems/test_rubygems.rb +74 -0
- data/{lib/rubygems/test_utilities.rb → test/rubygems/utilities.rb} +74 -50
- data/test/rubygems/wrong_key_cert.pem +15 -15
- data/test/rubygems/wrong_key_cert_32.pem +15 -15
- data/test/test_changelog_generator.rb +17 -0
- metadata +218 -244
- data/.rubocop.yml +0 -66
- data/.travis.yml +0 -38
- data/History.txt +0 -3965
- data/Rakefile +0 -372
- data/appveyor.yml +0 -43
- data/bundler/CODE_OF_CONDUCT.md +0 -42
- data/bundler/CONTRIBUTING.md +0 -17
- data/bundler/exe/bundle_ruby +0 -60
- data/bundler/lib/bundler/cli/package.rb +0 -49
- data/bundler/lib/bundler/compatibility_guard.rb +0 -14
- data/bundler/lib/bundler/dep_proxy.rb +0 -48
- data/bundler/lib/bundler/gem_remote_fetcher.rb +0 -43
- data/bundler/lib/bundler/gemdeps.rb +0 -29
- data/bundler/lib/bundler/psyched_yaml.rb +0 -37
- data/bundler/lib/bundler/ssl_certs/certificate_manager.rb +0 -66
- data/bundler/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
- data/bundler/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
- data/bundler/lib/bundler/templates/gems.rb +0 -8
- data/bundler/lib/bundler/templates/newgem/test/test_helper.rb.tt +0 -4
- data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -7
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -81
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -136
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -223
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -143
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -101
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -837
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -12
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb +0 -27
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb +0 -129
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb +0 -12
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb +0 -129
- data/bundler/lib/bundler/version_ranges.rb +0 -76
- data/bundler/man/bundle-gem.1 +0 -80
- data/bundler/man/bundle-gem.ronn +0 -78
- data/bundler/man/bundle-package.1 +0 -55
- data/lib/rubygems/psych_additions.rb +0 -10
- data/lib/rubygems/server.rb +0 -878
- data/lib/rubygems/source_local.rb +0 -7
- data/lib/rubygems/source_specific_file.rb +0 -6
- data/lib/rubygems/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +0 -21
- data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
- data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
- data/lib/rubygems/syck_hack.rb +0 -77
- data/lib/ubygems.rb +0 -14
- data/test/rubygems/bogussources.rb +0 -9
- data/test/rubygems/data/null-type.gemspec.rz +0 -0
- data/test/rubygems/test_gem_server.rb +0 -607
- data/util/CL2notes +0 -55
- data/util/ci +0 -77
- data/util/create_certs.rb +0 -171
- data/util/create_encrypted_key.rb +0 -16
- data/util/generate_spdx_license_list.rb +0 -61
- data/util/patch_with_prs.rb +0 -77
- data/util/rubocop +0 -8
- data/util/update_bundled_ca_certificates.rb +0 -139
- data/util/update_changelog.rb +0 -67
- /data/bundler/lib/bundler/{ssl_certs → man}/.document +0 -0
- /data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
- /data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
- /data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
- /data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
- /data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
- /data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
- /data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
- /data/{bundler/lib/bundler/ssl_certs/index.rubygems.org → lib/rubygems/ssl_certs/rubygems.org}/GlobalSignRootCA.pem +0 -0
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
3
|
-
|
4
|
-
require
|
5
|
-
require
|
2
|
+
require_relative "helper"
|
3
|
+
require_relative "test_gem_update_suggestion"
|
4
|
+
require "rubygems/commands/install_command"
|
5
|
+
require "rubygems/request_set"
|
6
|
+
require "rubygems/rdoc"
|
6
7
|
|
7
8
|
class TestGemCommandsInstallCommand < Gem::TestCase
|
8
|
-
|
9
9
|
def setup
|
10
10
|
super
|
11
11
|
common_installer_setup
|
@@ -31,51 +31,51 @@ class TestGemCommandsInstallCommand < Gem::TestCase
|
|
31
31
|
|
32
32
|
def test_execute_exclude_prerelease
|
33
33
|
spec_fetcher do |fetcher|
|
34
|
-
fetcher.gem
|
35
|
-
fetcher.gem
|
34
|
+
fetcher.gem "a", 2
|
35
|
+
fetcher.gem "a", "2.pre"
|
36
36
|
end
|
37
37
|
|
38
38
|
@cmd.options[:args] = %w[a]
|
39
39
|
|
40
40
|
use_ui @ui do
|
41
|
-
|
41
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
42
42
|
@cmd.execute
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
|
-
assert_equal %w[a-2], @cmd.installed_specs.map {
|
46
|
+
assert_equal %w[a-2], @cmd.installed_specs.map {|spec| spec.full_name }
|
47
47
|
end
|
48
48
|
|
49
49
|
def test_execute_explicit_version_includes_prerelease
|
50
50
|
specs = spec_fetcher do |fetcher|
|
51
|
-
fetcher.gem
|
52
|
-
fetcher.gem
|
51
|
+
fetcher.gem "a", 2
|
52
|
+
fetcher.gem "a", "2.a"
|
53
53
|
end
|
54
54
|
|
55
|
-
a2_pre = specs[
|
55
|
+
a2_pre = specs["a-2.a"]
|
56
56
|
|
57
|
-
@cmd.handle_options [a2_pre.name,
|
57
|
+
@cmd.handle_options [a2_pre.name, "--version", a2_pre.version.to_s,
|
58
58
|
"--no-document"]
|
59
59
|
assert @cmd.options[:prerelease]
|
60
60
|
assert @cmd.options[:version].satisfied_by?(a2_pre.version)
|
61
61
|
|
62
62
|
use_ui @ui do
|
63
|
-
|
63
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
64
64
|
@cmd.execute
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
68
|
-
assert_equal %w[a-2.a], @cmd.installed_specs.map {
|
68
|
+
assert_equal %w[a-2.a], @cmd.installed_specs.map {|spec| spec.full_name }
|
69
69
|
end
|
70
70
|
|
71
71
|
def test_execute_local
|
72
72
|
specs = spec_fetcher do |fetcher|
|
73
|
-
fetcher.gem
|
73
|
+
fetcher.gem "a", 2
|
74
74
|
end
|
75
75
|
|
76
76
|
@cmd.options[:domain] = :local
|
77
77
|
|
78
|
-
FileUtils.mv specs[
|
78
|
+
FileUtils.mv specs["a-2"].cache_file, @tempdir
|
79
79
|
|
80
80
|
@cmd.options[:args] = %w[a]
|
81
81
|
|
@@ -83,7 +83,7 @@ class TestGemCommandsInstallCommand < Gem::TestCase
|
|
83
83
|
orig_dir = Dir.pwd
|
84
84
|
begin
|
85
85
|
Dir.chdir @tempdir
|
86
|
-
|
86
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
87
87
|
@cmd.execute
|
88
88
|
end
|
89
89
|
ensure
|
@@ -91,23 +91,81 @@ class TestGemCommandsInstallCommand < Gem::TestCase
|
|
91
91
|
end
|
92
92
|
end
|
93
93
|
|
94
|
-
assert_equal %w[a-2], @cmd.installed_specs.map {
|
94
|
+
assert_equal %w[a-2], @cmd.installed_specs.map {|spec| spec.full_name }
|
95
|
+
|
96
|
+
assert_match "1 gem installed", @ui.output
|
97
|
+
end
|
98
|
+
|
99
|
+
def test_execute_local_dependency_nonexistent
|
100
|
+
specs = spec_fetcher do |fetcher|
|
101
|
+
fetcher.gem "foo", 2, "bar" => "0.5"
|
102
|
+
end
|
103
|
+
|
104
|
+
@cmd.options[:domain] = :local
|
105
|
+
|
106
|
+
FileUtils.mv specs["foo-2"].cache_file, @tempdir
|
107
|
+
|
108
|
+
@cmd.options[:args] = ["foo"]
|
109
|
+
|
110
|
+
use_ui @ui do
|
111
|
+
orig_dir = Dir.pwd
|
112
|
+
begin
|
113
|
+
Dir.chdir @tempdir
|
114
|
+
e = assert_raise Gem::MockGemUi::TermError do
|
115
|
+
@cmd.execute
|
116
|
+
end
|
117
|
+
assert_equal 2, e.exit_code
|
118
|
+
ensure
|
119
|
+
Dir.chdir orig_dir
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
expected = <<-EXPECTED
|
124
|
+
ERROR: Could not find a valid gem 'bar' (= 0.5) (required by 'foo' (>= 0)) in any repository
|
125
|
+
EXPECTED
|
126
|
+
|
127
|
+
assert_equal expected, @ui.error
|
128
|
+
end
|
129
|
+
|
130
|
+
def test_execute_local_dependency_nonexistent_ignore_dependencies
|
131
|
+
specs = spec_fetcher do |fetcher|
|
132
|
+
fetcher.gem "foo", 2, "bar" => "0.5"
|
133
|
+
end
|
134
|
+
|
135
|
+
@cmd.options[:domain] = :local
|
136
|
+
@cmd.options[:ignore_dependencies] = true
|
137
|
+
|
138
|
+
FileUtils.mv specs["foo-2"].cache_file, @tempdir
|
139
|
+
|
140
|
+
@cmd.options[:args] = ["foo"]
|
141
|
+
|
142
|
+
use_ui @ui do
|
143
|
+
orig_dir = Dir.pwd
|
144
|
+
begin
|
145
|
+
Dir.chdir orig_dir
|
146
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
147
|
+
@cmd.execute
|
148
|
+
end
|
149
|
+
ensure
|
150
|
+
Dir.chdir orig_dir
|
151
|
+
end
|
152
|
+
end
|
95
153
|
|
96
154
|
assert_match "1 gem installed", @ui.output
|
97
155
|
end
|
98
156
|
|
99
157
|
def test_execute_local_transitive_prerelease
|
100
158
|
specs = spec_fetcher do |fetcher|
|
101
|
-
fetcher.download
|
102
|
-
fetcher.download
|
103
|
-
fetcher.download
|
159
|
+
fetcher.download "a", 2, "b" => "2.a", "c" => "3"
|
160
|
+
fetcher.download "b", "2.a"
|
161
|
+
fetcher.download "c", "3"
|
104
162
|
end
|
105
163
|
|
106
164
|
@cmd.options[:domain] = :local
|
107
165
|
|
108
|
-
FileUtils.mv specs[
|
109
|
-
FileUtils.mv specs[
|
110
|
-
FileUtils.mv specs[
|
166
|
+
FileUtils.mv specs["a-2"].cache_file, @tempdir
|
167
|
+
FileUtils.mv specs["b-2.a"].cache_file, @tempdir
|
168
|
+
FileUtils.mv specs["c-3"].cache_file, @tempdir
|
111
169
|
|
112
170
|
@cmd.options[:args] = %w[a]
|
113
171
|
|
@@ -116,7 +174,7 @@ class TestGemCommandsInstallCommand < Gem::TestCase
|
|
116
174
|
begin
|
117
175
|
Dir.chdir @tempdir
|
118
176
|
FileUtils.rm_r [@gemhome, "gems"]
|
119
|
-
|
177
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
120
178
|
@cmd.execute
|
121
179
|
end
|
122
180
|
ensure
|
@@ -124,22 +182,22 @@ class TestGemCommandsInstallCommand < Gem::TestCase
|
|
124
182
|
end
|
125
183
|
end
|
126
184
|
|
127
|
-
assert_equal %w[a-2 b-2.a c-3], @cmd.installed_specs.map {
|
185
|
+
assert_equal %w[a-2 b-2.a c-3], @cmd.installed_specs.map {|spec| spec.full_name }.sort
|
128
186
|
|
129
187
|
assert_match "3 gems installed", @ui.output
|
130
188
|
end
|
131
189
|
|
132
190
|
def test_execute_no_user_install
|
133
|
-
|
134
|
-
|
191
|
+
pend "skipped on MS Windows (chmod has no effect)" if win_platform?
|
192
|
+
pend "skipped in root privilege" if Process.uid.zero?
|
135
193
|
|
136
194
|
specs = spec_fetcher do |fetcher|
|
137
|
-
fetcher.gem
|
195
|
+
fetcher.gem "a", 2
|
138
196
|
end
|
139
197
|
|
140
198
|
@cmd.options[:user_install] = false
|
141
199
|
|
142
|
-
FileUtils.mv specs[
|
200
|
+
FileUtils.mv specs["a-2"].cache_file, @tempdir
|
143
201
|
|
144
202
|
@cmd.options[:args] = %w[a]
|
145
203
|
|
@@ -150,7 +208,7 @@ class TestGemCommandsInstallCommand < Gem::TestCase
|
|
150
208
|
FileUtils.chmod 0555, @gemhome
|
151
209
|
|
152
210
|
Dir.chdir @tempdir
|
153
|
-
|
211
|
+
assert_raise Gem::FilePermissionError do
|
154
212
|
@cmd.execute
|
155
213
|
end
|
156
214
|
ensure
|
@@ -168,7 +226,26 @@ class TestGemCommandsInstallCommand < Gem::TestCase
|
|
168
226
|
@cmd.options[:args] = %w[no_such_gem]
|
169
227
|
|
170
228
|
use_ui @ui do
|
171
|
-
e =
|
229
|
+
e = assert_raise Gem::MockGemUi::TermError do
|
230
|
+
@cmd.execute
|
231
|
+
end
|
232
|
+
assert_equal 2, e.exit_code
|
233
|
+
end
|
234
|
+
|
235
|
+
# HACK no repository was checked
|
236
|
+
assert_match(/ould not find a valid gem 'no_such_gem'/, @ui.error)
|
237
|
+
end
|
238
|
+
|
239
|
+
def test_execute_local_missing_ignore_dependencies
|
240
|
+
spec_fetcher
|
241
|
+
|
242
|
+
@cmd.options[:domain] = :local
|
243
|
+
@cmd.options[:ignore_dependencies] = true
|
244
|
+
|
245
|
+
@cmd.options[:args] = %w[no_such_gem]
|
246
|
+
|
247
|
+
use_ui @ui do
|
248
|
+
e = assert_raise Gem::MockGemUi::TermError do
|
172
249
|
@cmd.execute
|
173
250
|
end
|
174
251
|
assert_equal 2, e.exit_code
|
@@ -181,7 +258,7 @@ class TestGemCommandsInstallCommand < Gem::TestCase
|
|
181
258
|
def test_execute_no_gem
|
182
259
|
@cmd.options[:args] = %w[]
|
183
260
|
|
184
|
-
|
261
|
+
assert_raise Gem::CommandLineError do
|
185
262
|
@cmd.execute
|
186
263
|
end
|
187
264
|
end
|
@@ -192,7 +269,23 @@ class TestGemCommandsInstallCommand < Gem::TestCase
|
|
192
269
|
@cmd.options[:args] = %w[nonexistent]
|
193
270
|
|
194
271
|
use_ui @ui do
|
195
|
-
e =
|
272
|
+
e = assert_raise Gem::MockGemUi::TermError do
|
273
|
+
@cmd.execute
|
274
|
+
end
|
275
|
+
assert_equal 2, e.exit_code
|
276
|
+
end
|
277
|
+
|
278
|
+
assert_match(/ould not find a valid gem 'nonexistent'/, @ui.error)
|
279
|
+
end
|
280
|
+
|
281
|
+
def test_execute_nonexistent_force
|
282
|
+
spec_fetcher
|
283
|
+
|
284
|
+
@cmd.options[:args] = %w[nonexistent]
|
285
|
+
@cmd.options[:force] = true
|
286
|
+
|
287
|
+
use_ui @ui do
|
288
|
+
e = assert_raise Gem::MockGemUi::TermError do
|
196
289
|
@cmd.execute
|
197
290
|
end
|
198
291
|
assert_equal 2, e.exit_code
|
@@ -203,13 +296,13 @@ class TestGemCommandsInstallCommand < Gem::TestCase
|
|
203
296
|
|
204
297
|
def test_execute_dependency_nonexistent
|
205
298
|
spec_fetcher do |fetcher|
|
206
|
-
fetcher.spec
|
299
|
+
fetcher.spec "foo", 2, "bar" => "0.5"
|
207
300
|
end
|
208
301
|
|
209
|
-
@cmd.options[:args] = [
|
302
|
+
@cmd.options[:args] = ["foo"]
|
210
303
|
|
211
304
|
use_ui @ui do
|
212
|
-
e =
|
305
|
+
e = assert_raise Gem::MockGemUi::TermError do
|
213
306
|
@cmd.execute
|
214
307
|
end
|
215
308
|
|
@@ -225,7 +318,7 @@ ERROR: Could not find a valid gem 'bar' (= 0.5) (required by 'foo' (>= 0)) in a
|
|
225
318
|
|
226
319
|
def test_execute_http_proxy
|
227
320
|
use_ui @ui do
|
228
|
-
e =
|
321
|
+
e = assert_raise ArgumentError, @ui.error do
|
229
322
|
@cmd.handle_options %w[-p=foo.bar.com]
|
230
323
|
end
|
231
324
|
|
@@ -251,7 +344,7 @@ ERROR: Could not find a valid gem 'bar' (= 0.5) (required by 'foo' (>= 0)) in a
|
|
251
344
|
@cmd.options[:args] = %w[nonexistent]
|
252
345
|
|
253
346
|
use_ui @ui do
|
254
|
-
e =
|
347
|
+
e = assert_raise Gem::MockGemUi::TermError do
|
255
348
|
@cmd.execute
|
256
349
|
end
|
257
350
|
assert_equal 2, e.exit_code
|
@@ -260,7 +353,7 @@ ERROR: Could not find a valid gem 'bar' (= 0.5) (required by 'foo' (>= 0)) in a
|
|
260
353
|
errs = @ui.error.split("\n")
|
261
354
|
|
262
355
|
assert_match(/ould not find a valid gem 'nonexistent'/, errs.shift)
|
263
|
-
assert_match(%r
|
356
|
+
assert_match(%r{Unable to download data from http://not-there.nothing}, errs.shift)
|
264
357
|
end
|
265
358
|
|
266
359
|
def test_execute_nonexistent_hint_disabled
|
@@ -275,7 +368,7 @@ ERROR: Could not find a valid gem 'bar' (= 0.5) (required by 'foo' (>= 0)) in a
|
|
275
368
|
@cmd.options[:suggest_alternate] = false
|
276
369
|
|
277
370
|
use_ui @ui do
|
278
|
-
e =
|
371
|
+
e = assert_raise Gem::MockGemUi::TermError do
|
279
372
|
@cmd.execute
|
280
373
|
end
|
281
374
|
|
@@ -300,7 +393,7 @@ ERROR: Could not find a valid gem 'nonexistent_with_hint' (>= 0) in any reposit
|
|
300
393
|
@cmd.options[:args] = [misspelled]
|
301
394
|
|
302
395
|
use_ui @ui do
|
303
|
-
e =
|
396
|
+
e = assert_raise Gem::MockGemUi::TermError do
|
304
397
|
@cmd.execute
|
305
398
|
end
|
306
399
|
|
@@ -325,7 +418,7 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
325
418
|
@cmd.options[:args] = [misspelled]
|
326
419
|
|
327
420
|
use_ui @ui do
|
328
|
-
e =
|
421
|
+
e = assert_raise Gem::MockGemUi::TermError do
|
329
422
|
@cmd.execute
|
330
423
|
end
|
331
424
|
|
@@ -334,7 +427,7 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
334
427
|
|
335
428
|
expected = [
|
336
429
|
"ERROR: Could not find a valid gem 'non-existent_with-hint' (>= 0) in any repository",
|
337
|
-
"ERROR: Possible alternatives: nonexistent-with_hint"
|
430
|
+
"ERROR: Possible alternatives: nonexistent-with_hint",
|
338
431
|
]
|
339
432
|
|
340
433
|
output = @ui.error.split "\n"
|
@@ -347,7 +440,7 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
347
440
|
@cmd.options[:install_dir] = "whatever"
|
348
441
|
|
349
442
|
use_ui @ui do
|
350
|
-
|
443
|
+
assert_raise Gem::MockGemUi::TermError do
|
351
444
|
@cmd.execute
|
352
445
|
end
|
353
446
|
end
|
@@ -359,78 +452,209 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
359
452
|
|
360
453
|
def test_execute_prerelease_skipped_when_no_flag_set
|
361
454
|
spec_fetcher do |fetcher|
|
362
|
-
fetcher.gem
|
363
|
-
fetcher.gem
|
455
|
+
fetcher.gem "a", 1
|
456
|
+
fetcher.gem "a", "3.a"
|
364
457
|
end
|
365
458
|
|
366
459
|
@cmd.options[:prerelease] = false
|
367
460
|
@cmd.options[:args] = %w[a]
|
368
461
|
|
369
462
|
use_ui @ui do
|
370
|
-
|
463
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
371
464
|
@cmd.execute
|
372
465
|
end
|
373
466
|
end
|
374
467
|
|
375
|
-
assert_equal %w[a-1], @cmd.installed_specs.map {
|
468
|
+
assert_equal %w[a-1], @cmd.installed_specs.map {|spec| spec.full_name }
|
376
469
|
end
|
377
470
|
|
378
471
|
def test_execute_prerelease_wins_over_previous_ver
|
379
472
|
spec_fetcher do |fetcher|
|
380
|
-
fetcher.download
|
381
|
-
fetcher.download
|
473
|
+
fetcher.download "a", 1
|
474
|
+
fetcher.download "a", "2.a"
|
382
475
|
end
|
383
476
|
|
384
477
|
@cmd.options[:prerelease] = true
|
385
478
|
@cmd.options[:args] = %w[a]
|
386
479
|
|
387
480
|
use_ui @ui do
|
388
|
-
|
481
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
389
482
|
@cmd.execute
|
390
483
|
end
|
391
484
|
end
|
392
485
|
|
393
|
-
assert_equal %w[a-2.a], @cmd.installed_specs.map {
|
486
|
+
assert_equal %w[a-2.a], @cmd.installed_specs.map {|spec| spec.full_name }
|
394
487
|
end
|
395
488
|
|
396
489
|
def test_execute_with_version_specified_by_colon
|
397
490
|
spec_fetcher do |fetcher|
|
398
|
-
fetcher.download
|
399
|
-
fetcher.download
|
491
|
+
fetcher.download "a", 1
|
492
|
+
fetcher.download "a", 2
|
400
493
|
end
|
401
494
|
|
402
495
|
@cmd.options[:args] = %w[a:1]
|
403
496
|
|
404
497
|
use_ui @ui do
|
405
|
-
|
498
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
406
499
|
@cmd.execute
|
407
500
|
end
|
408
501
|
end
|
409
502
|
|
410
|
-
assert_equal %w[a-1], @cmd.installed_specs.map {
|
503
|
+
assert_equal %w[a-1], @cmd.installed_specs.map {|spec| spec.full_name }
|
411
504
|
end
|
412
505
|
|
413
506
|
def test_execute_prerelease_skipped_when_non_pre_available
|
414
507
|
spec_fetcher do |fetcher|
|
415
|
-
fetcher.gem
|
416
|
-
fetcher.gem
|
508
|
+
fetcher.gem "a", "2.pre"
|
509
|
+
fetcher.gem "a", 2
|
417
510
|
end
|
418
511
|
|
419
512
|
@cmd.options[:prerelease] = true
|
420
513
|
@cmd.options[:args] = %w[a]
|
421
514
|
|
422
515
|
use_ui @ui do
|
423
|
-
|
516
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
517
|
+
@cmd.execute
|
518
|
+
end
|
519
|
+
end
|
520
|
+
|
521
|
+
assert_equal %w[a-2], @cmd.installed_specs.map {|spec| spec.full_name }
|
522
|
+
end
|
523
|
+
|
524
|
+
def test_execute_required_ruby_version
|
525
|
+
next_ruby = Gem.ruby_version.segments.map.with_index {|n, i| i == 1 ? n + 1 : n }.join(".")
|
526
|
+
|
527
|
+
local = Gem::Platform.local
|
528
|
+
spec_fetcher do |fetcher|
|
529
|
+
fetcher.download "a", 2
|
530
|
+
fetcher.download "a", 2 do |s|
|
531
|
+
s.required_ruby_version = "< #{RUBY_VERSION}.a"
|
532
|
+
s.platform = local
|
533
|
+
end
|
534
|
+
fetcher.download "a", 3 do |s|
|
535
|
+
s.required_ruby_version = ">= #{next_ruby}"
|
536
|
+
end
|
537
|
+
fetcher.download "a", 3 do |s|
|
538
|
+
s.required_ruby_version = ">= #{next_ruby}"
|
539
|
+
s.platform = local
|
540
|
+
end
|
541
|
+
end
|
542
|
+
|
543
|
+
@cmd.options[:args] = %w[a]
|
544
|
+
|
545
|
+
use_ui @ui do
|
546
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
547
|
+
@cmd.execute
|
548
|
+
end
|
549
|
+
end
|
550
|
+
|
551
|
+
assert_equal %w[a-2], @cmd.installed_specs.map {|spec| spec.full_name }
|
552
|
+
end
|
553
|
+
|
554
|
+
def test_execute_required_ruby_version_upper_bound
|
555
|
+
local = Gem::Platform.local
|
556
|
+
spec_fetcher do |fetcher|
|
557
|
+
fetcher.gem "a", 2.0
|
558
|
+
fetcher.gem "a", 2.0 do |s|
|
559
|
+
s.required_ruby_version = "< #{RUBY_VERSION}.a"
|
560
|
+
s.platform = local
|
561
|
+
end
|
562
|
+
end
|
563
|
+
|
564
|
+
@cmd.options[:args] = %w[a]
|
565
|
+
|
566
|
+
use_ui @ui do
|
567
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
568
|
+
@cmd.execute
|
569
|
+
end
|
570
|
+
end
|
571
|
+
|
572
|
+
assert_equal %w[a-2.0], @cmd.installed_specs.map {|spec| spec.full_name }
|
573
|
+
end
|
574
|
+
|
575
|
+
def test_execute_required_ruby_version_specific_not_met
|
576
|
+
spec_fetcher do |fetcher|
|
577
|
+
fetcher.gem "a", "1.0" do |s|
|
578
|
+
s.required_ruby_version = "= 1.4.6"
|
579
|
+
end
|
580
|
+
end
|
581
|
+
|
582
|
+
@cmd.options[:args] = %w[a]
|
583
|
+
|
584
|
+
use_ui @ui do
|
585
|
+
assert_raise Gem::MockGemUi::TermError do
|
586
|
+
@cmd.execute
|
587
|
+
end
|
588
|
+
end
|
589
|
+
|
590
|
+
errs = @ui.error.split("\n")
|
591
|
+
assert_equal "ERROR: Error installing a:", errs.shift
|
592
|
+
assert_equal "\ta-1.0 requires Ruby version = 1.4.6. The current ruby version is #{Gem.ruby_version}.", errs.shift
|
593
|
+
end
|
594
|
+
|
595
|
+
def test_execute_required_ruby_version_specific_prerelease_met
|
596
|
+
spec_fetcher do |fetcher|
|
597
|
+
fetcher.gem "a", "1.0" do |s|
|
598
|
+
s.required_ruby_version = ">= 1.4.6.preview2"
|
599
|
+
end
|
600
|
+
end
|
601
|
+
|
602
|
+
@cmd.options[:args] = %w[a]
|
603
|
+
|
604
|
+
use_ui @ui do
|
605
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
606
|
+
@cmd.execute
|
607
|
+
end
|
608
|
+
end
|
609
|
+
|
610
|
+
assert_equal %w[a-1.0], @cmd.installed_specs.map {|spec| spec.full_name }
|
611
|
+
end
|
612
|
+
|
613
|
+
def test_execute_required_ruby_version_specific_prerelease_not_met
|
614
|
+
next_ruby_pre = Gem.ruby_version.segments.map.with_index {|n, i| i == 1 ? n + 1 : n }.join(".") + ".a"
|
615
|
+
|
616
|
+
spec_fetcher do |fetcher|
|
617
|
+
fetcher.gem "a", "1.0" do |s|
|
618
|
+
s.required_ruby_version = "> #{next_ruby_pre}"
|
619
|
+
end
|
620
|
+
end
|
621
|
+
|
622
|
+
@cmd.options[:args] = %w[a]
|
623
|
+
|
624
|
+
use_ui @ui do
|
625
|
+
assert_raise Gem::MockGemUi::TermError do
|
424
626
|
@cmd.execute
|
425
627
|
end
|
426
628
|
end
|
427
629
|
|
428
|
-
|
630
|
+
errs = @ui.error.split("\n")
|
631
|
+
assert_equal "ERROR: Error installing a:", errs.shift
|
632
|
+
assert_equal "\ta-1.0 requires Ruby version > #{next_ruby_pre}. The current ruby version is #{Gem.ruby_version}.", errs.shift
|
633
|
+
end
|
634
|
+
|
635
|
+
def test_execute_required_rubygems_version_wrong
|
636
|
+
spec_fetcher do |fetcher|
|
637
|
+
fetcher.gem "a", "1.0" do |s|
|
638
|
+
s.required_rubygems_version = "< 0"
|
639
|
+
end
|
640
|
+
end
|
641
|
+
|
642
|
+
@cmd.options[:args] = %w[a]
|
643
|
+
|
644
|
+
use_ui @ui do
|
645
|
+
assert_raise Gem::MockGemUi::TermError do
|
646
|
+
@cmd.execute
|
647
|
+
end
|
648
|
+
end
|
649
|
+
|
650
|
+
errs = @ui.error.split("\n")
|
651
|
+
assert_equal "ERROR: Error installing a:", errs.shift
|
652
|
+
assert_equal "\ta-1.0 requires RubyGems version < 0. The current RubyGems version is #{Gem.rubygems_version}. Try 'gem update --system' to update RubyGems itself.", errs.shift
|
429
653
|
end
|
430
654
|
|
431
655
|
def test_execute_rdoc
|
432
656
|
specs = spec_fetcher do |fetcher|
|
433
|
-
fetcher.gem
|
657
|
+
fetcher.gem "a", 2
|
434
658
|
end
|
435
659
|
|
436
660
|
Gem.done_installing(&Gem::RDoc.method(:generation_hook))
|
@@ -438,7 +662,7 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
438
662
|
@cmd.options[:document] = %w[rdoc ri]
|
439
663
|
@cmd.options[:domain] = :local
|
440
664
|
|
441
|
-
a2 = specs[
|
665
|
+
a2 = specs["a-2"]
|
442
666
|
FileUtils.mv a2.cache_file, @tempdir
|
443
667
|
|
444
668
|
@cmd.options[:args] = %w[a]
|
@@ -450,7 +674,7 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
450
674
|
|
451
675
|
begin
|
452
676
|
Dir.chdir @tempdir
|
453
|
-
|
677
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
454
678
|
@cmd.execute
|
455
679
|
end
|
456
680
|
ensure
|
@@ -460,22 +684,22 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
460
684
|
|
461
685
|
wait_for_child_process_to_exit
|
462
686
|
|
463
|
-
|
464
|
-
|
687
|
+
assert_path_exist File.join(a2.doc_dir, "ri")
|
688
|
+
assert_path_exist File.join(a2.doc_dir, "rdoc")
|
465
689
|
end
|
466
690
|
|
467
691
|
def test_execute_rdoc_with_path
|
468
692
|
specs = spec_fetcher do |fetcher|
|
469
|
-
fetcher.gem
|
693
|
+
fetcher.gem "a", 2
|
470
694
|
end
|
471
695
|
|
472
696
|
Gem.done_installing(&Gem::RDoc.method(:generation_hook))
|
473
697
|
|
474
698
|
@cmd.options[:document] = %w[rdoc ri]
|
475
699
|
@cmd.options[:domain] = :local
|
476
|
-
@cmd.options[:install_dir] =
|
700
|
+
@cmd.options[:install_dir] = "whatever"
|
477
701
|
|
478
|
-
a2 = specs[
|
702
|
+
a2 = specs["a-2"]
|
479
703
|
FileUtils.mv a2.cache_file, @tempdir
|
480
704
|
|
481
705
|
@cmd.options[:args] = %w[a]
|
@@ -487,7 +711,7 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
487
711
|
|
488
712
|
begin
|
489
713
|
Dir.chdir @tempdir
|
490
|
-
|
714
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
491
715
|
@cmd.execute
|
492
716
|
end
|
493
717
|
ensure
|
@@ -497,19 +721,19 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
497
721
|
|
498
722
|
wait_for_child_process_to_exit
|
499
723
|
|
500
|
-
|
724
|
+
assert_path_exist "whatever/doc/a-2", "documentation not installed"
|
501
725
|
end
|
502
726
|
|
503
727
|
def test_execute_saves_build_args
|
504
728
|
specs = spec_fetcher do |fetcher|
|
505
|
-
fetcher.gem
|
729
|
+
fetcher.gem "a", 2
|
506
730
|
end
|
507
731
|
|
508
|
-
args = %w
|
732
|
+
args = %w[--with-awesome=true --more-awesome=yes]
|
509
733
|
|
510
734
|
Gem::Command.build_args = args
|
511
735
|
|
512
|
-
a2 = specs[
|
736
|
+
a2 = specs["a-2"]
|
513
737
|
FileUtils.mv a2.cache_file, @tempdir
|
514
738
|
|
515
739
|
@cmd.options[:domain] = :local
|
@@ -523,7 +747,7 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
523
747
|
|
524
748
|
begin
|
525
749
|
Dir.chdir @tempdir
|
526
|
-
|
750
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
527
751
|
@cmd.execute
|
528
752
|
end
|
529
753
|
ensure
|
@@ -532,26 +756,25 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
532
756
|
end
|
533
757
|
|
534
758
|
path = a2.build_info_file
|
535
|
-
|
759
|
+
assert_path_exist path
|
536
760
|
|
537
761
|
assert_equal args, a2.build_args
|
538
762
|
end
|
539
763
|
|
540
|
-
|
541
764
|
def test_execute_remote
|
542
765
|
spec_fetcher do |fetcher|
|
543
|
-
fetcher.gem
|
766
|
+
fetcher.gem "a", 2
|
544
767
|
end
|
545
768
|
|
546
769
|
@cmd.options[:args] = %w[a]
|
547
770
|
|
548
771
|
use_ui @ui do
|
549
|
-
|
772
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
550
773
|
@cmd.execute
|
551
774
|
end
|
552
775
|
end
|
553
776
|
|
554
|
-
assert_equal %w[a-2], @cmd.installed_specs.map {
|
777
|
+
assert_equal %w[a-2], @cmd.installed_specs.map {|spec| spec.full_name }
|
555
778
|
|
556
779
|
assert_match "1 gem installed", @ui.output
|
557
780
|
end
|
@@ -560,32 +783,65 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
560
783
|
FileUtils.touch("a.gem")
|
561
784
|
|
562
785
|
spec_fetcher do |fetcher|
|
563
|
-
fetcher.gem
|
786
|
+
fetcher.gem "a", 2
|
564
787
|
end
|
565
788
|
|
566
789
|
@cmd.options[:args] = %w[a]
|
567
790
|
|
568
791
|
use_ui @ui do
|
569
|
-
|
792
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
570
793
|
@cmd.execute
|
571
794
|
end
|
572
795
|
end
|
573
796
|
|
574
|
-
assert_equal %w[a-2], @cmd.installed_specs.map {
|
797
|
+
assert_equal %w[a-2], @cmd.installed_specs.map {|spec| spec.full_name }
|
575
798
|
|
576
799
|
assert_match "1 gem installed", @ui.output
|
577
800
|
end
|
578
801
|
|
802
|
+
def test_execute_remote_truncates_existing_gemspecs
|
803
|
+
spec_fetcher do |fetcher|
|
804
|
+
fetcher.gem "a", 1
|
805
|
+
end
|
806
|
+
|
807
|
+
@cmd.options[:domain] = :remote
|
808
|
+
|
809
|
+
@cmd.options[:args] = %w[a]
|
810
|
+
|
811
|
+
use_ui @ui do
|
812
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
813
|
+
@cmd.execute
|
814
|
+
end
|
815
|
+
end
|
816
|
+
|
817
|
+
assert_equal %w[a-1], @cmd.installed_specs.map {|spec| spec.full_name }
|
818
|
+
assert_match "1 gem installed", @ui.output
|
819
|
+
|
820
|
+
a1_gemspec = File.join(@gemhome, "specifications", "a-1.gemspec")
|
821
|
+
|
822
|
+
initial_a1_gemspec_content = File.read(a1_gemspec)
|
823
|
+
modified_a1_gemspec_content = initial_a1_gemspec_content + "\n # AAAAAAA\n"
|
824
|
+
File.write(a1_gemspec, modified_a1_gemspec_content)
|
825
|
+
|
826
|
+
use_ui @ui do
|
827
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
828
|
+
@cmd.execute
|
829
|
+
end
|
830
|
+
end
|
831
|
+
|
832
|
+
assert_equal initial_a1_gemspec_content, File.read(a1_gemspec)
|
833
|
+
end
|
834
|
+
|
579
835
|
def test_execute_remote_ignores_files
|
580
836
|
specs = spec_fetcher do |fetcher|
|
581
|
-
fetcher.gem
|
582
|
-
fetcher.gem
|
837
|
+
fetcher.gem "a", 1
|
838
|
+
fetcher.gem "a", 2
|
583
839
|
end
|
584
840
|
|
585
841
|
@cmd.options[:domain] = :remote
|
586
842
|
|
587
|
-
a1 = specs[
|
588
|
-
a2 = specs[
|
843
|
+
a1 = specs["a-1"]
|
844
|
+
a2 = specs["a-2"]
|
589
845
|
|
590
846
|
FileUtils.mv a2.cache_file, @tempdir
|
591
847
|
|
@@ -594,7 +850,7 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
594
850
|
|
595
851
|
@cmd.options[:args] = [a2.name]
|
596
852
|
|
597
|
-
gemdir
|
853
|
+
gemdir = File.join @gemhome, "specifications"
|
598
854
|
|
599
855
|
a2_gemspec = File.join(gemdir, "a-2.gemspec")
|
600
856
|
a1_gemspec = File.join(gemdir, "a-1.gemspec")
|
@@ -606,13 +862,13 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
606
862
|
|
607
863
|
use_ui @ui do
|
608
864
|
Dir.chdir @tempdir do
|
609
|
-
|
865
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
610
866
|
@cmd.execute
|
611
867
|
end
|
612
868
|
end
|
613
869
|
end
|
614
870
|
|
615
|
-
assert_equal %w[a-1], @cmd.installed_specs.map {
|
871
|
+
assert_equal %w[a-1], @cmd.installed_specs.map {|spec| spec.full_name }
|
616
872
|
|
617
873
|
assert_match "1 gem installed", @ui.output
|
618
874
|
|
@@ -623,12 +879,12 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
623
879
|
|
624
880
|
def test_execute_two
|
625
881
|
specs = spec_fetcher do |fetcher|
|
626
|
-
fetcher.gem
|
627
|
-
fetcher.gem
|
882
|
+
fetcher.gem "a", 2
|
883
|
+
fetcher.gem "b", 2
|
628
884
|
end
|
629
885
|
|
630
|
-
FileUtils.mv specs[
|
631
|
-
FileUtils.mv specs[
|
886
|
+
FileUtils.mv specs["a-2"].cache_file, @tempdir
|
887
|
+
FileUtils.mv specs["b-2"].cache_file, @tempdir
|
632
888
|
|
633
889
|
@cmd.options[:domain] = :local
|
634
890
|
|
@@ -638,7 +894,7 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
638
894
|
orig_dir = Dir.pwd
|
639
895
|
begin
|
640
896
|
Dir.chdir @tempdir
|
641
|
-
|
897
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
642
898
|
@cmd.execute
|
643
899
|
end
|
644
900
|
ensure
|
@@ -646,7 +902,7 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
646
902
|
end
|
647
903
|
end
|
648
904
|
|
649
|
-
assert_equal %w[a-2 b-2], @cmd.installed_specs.map {
|
905
|
+
assert_equal %w[a-2 b-2], @cmd.installed_specs.map {|spec| spec.full_name }
|
650
906
|
|
651
907
|
assert_match "2 gems installed", @ui.output
|
652
908
|
end
|
@@ -656,7 +912,7 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
656
912
|
@cmd.options[:version] = Gem::Requirement.new("> 1")
|
657
913
|
|
658
914
|
use_ui @ui do
|
659
|
-
e =
|
915
|
+
e = assert_raise Gem::MockGemUi::TermError do
|
660
916
|
@cmd.execute
|
661
917
|
end
|
662
918
|
|
@@ -674,28 +930,28 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
674
930
|
|
675
931
|
def test_execute_two_version_specified_by_colon
|
676
932
|
spec_fetcher do |fetcher|
|
677
|
-
fetcher.gem
|
678
|
-
fetcher.gem
|
679
|
-
fetcher.gem
|
680
|
-
fetcher.gem
|
933
|
+
fetcher.gem "a", 1
|
934
|
+
fetcher.gem "a", 2
|
935
|
+
fetcher.gem "b", 1
|
936
|
+
fetcher.gem "b", 2
|
681
937
|
end
|
682
938
|
|
683
939
|
@cmd.options[:args] = %w[a:1 b:1]
|
684
940
|
|
685
941
|
use_ui @ui do
|
686
|
-
|
942
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
687
943
|
@cmd.execute
|
688
944
|
end
|
689
945
|
end
|
690
946
|
|
691
|
-
assert_equal %w[a-1 b-1], @cmd.installed_specs.map {
|
947
|
+
assert_equal %w[a-1 b-1], @cmd.installed_specs.map {|spec| spec.full_name }
|
692
948
|
end
|
693
949
|
|
694
950
|
def test_execute_conservative
|
695
951
|
spec_fetcher do |fetcher|
|
696
|
-
fetcher.download
|
952
|
+
fetcher.download "b", 2
|
697
953
|
|
698
|
-
fetcher.gem
|
954
|
+
fetcher.gem "a", 2
|
699
955
|
end
|
700
956
|
|
701
957
|
@cmd.options[:conservative] = true
|
@@ -706,7 +962,7 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
706
962
|
orig_dir = Dir.pwd
|
707
963
|
begin
|
708
964
|
Dir.chdir @tempdir
|
709
|
-
|
965
|
+
assert_raise Gem::MockGemUi::SystemExitException do
|
710
966
|
@cmd.execute
|
711
967
|
end
|
712
968
|
ensure
|
@@ -714,7 +970,7 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
714
970
|
end
|
715
971
|
end
|
716
972
|
|
717
|
-
assert_equal %w[b-2], @cmd.installed_specs.map {
|
973
|
+
assert_equal %w[b-2], @cmd.installed_specs.map {|spec| spec.full_name }
|
718
974
|
|
719
975
|
assert_equal "", @ui.error
|
720
976
|
assert_match "1 gem installed", @ui.output
|
@@ -726,7 +982,7 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
726
982
|
done_installing = true
|
727
983
|
end
|
728
984
|
|
729
|
-
spec = util_spec
|
985
|
+
spec = util_spec "a", 2
|
730
986
|
|
731
987
|
util_build_gem spec
|
732
988
|
|
@@ -734,27 +990,44 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
734
990
|
|
735
991
|
@cmd.options[:ignore_dependencies] = true
|
736
992
|
|
737
|
-
@cmd.install_gem
|
993
|
+
@cmd.install_gem "a", ">= 0"
|
738
994
|
|
739
|
-
assert_equal %w[a-2], @cmd.installed_specs.map {
|
995
|
+
assert_equal %w[a-2], @cmd.installed_specs.map {|s| s.full_name }
|
740
996
|
|
741
|
-
assert done_installing,
|
997
|
+
assert done_installing, "documentation was not generated"
|
742
998
|
end
|
743
999
|
|
744
1000
|
def test_install_gem_ignore_dependencies_remote
|
745
1001
|
spec_fetcher do |fetcher|
|
746
|
-
fetcher.gem
|
1002
|
+
fetcher.gem "a", 2
|
1003
|
+
end
|
1004
|
+
|
1005
|
+
@cmd.options[:ignore_dependencies] = true
|
1006
|
+
|
1007
|
+
@cmd.install_gem "a", ">= 0"
|
1008
|
+
|
1009
|
+
assert_equal %w[a-2], @cmd.installed_specs.map {|spec| spec.full_name }
|
1010
|
+
end
|
1011
|
+
|
1012
|
+
def test_install_gem_ignore_dependencies_remote_platform_local
|
1013
|
+
local = Gem::Platform.local
|
1014
|
+
spec_fetcher do |fetcher|
|
1015
|
+
fetcher.gem "a", 3
|
1016
|
+
|
1017
|
+
fetcher.gem "a", 3 do |s|
|
1018
|
+
s.platform = local
|
1019
|
+
end
|
747
1020
|
end
|
748
1021
|
|
749
1022
|
@cmd.options[:ignore_dependencies] = true
|
750
1023
|
|
751
|
-
@cmd.install_gem
|
1024
|
+
@cmd.install_gem "a", ">= 0"
|
752
1025
|
|
753
|
-
assert_equal %
|
1026
|
+
assert_equal %W[a-3-#{local}], @cmd.installed_specs.map {|spec| spec.full_name }
|
754
1027
|
end
|
755
1028
|
|
756
1029
|
def test_install_gem_ignore_dependencies_specific_file
|
757
|
-
spec = util_spec
|
1030
|
+
spec = util_spec "a", 2
|
758
1031
|
|
759
1032
|
util_build_gem spec
|
760
1033
|
|
@@ -764,13 +1037,13 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
764
1037
|
|
765
1038
|
@cmd.install_gem File.join(@tempdir, spec.file_name), nil
|
766
1039
|
|
767
|
-
assert_equal %w[a-2], @cmd.installed_specs.map {
|
1040
|
+
assert_equal %w[a-2], @cmd.installed_specs.map {|s| s.full_name }
|
768
1041
|
end
|
769
1042
|
|
770
1043
|
def test_parses_requirement_from_gemname
|
771
1044
|
spec_fetcher do |fetcher|
|
772
|
-
fetcher.gem
|
773
|
-
fetcher.gem
|
1045
|
+
fetcher.gem "a", 2
|
1046
|
+
fetcher.gem "b", 2
|
774
1047
|
end
|
775
1048
|
|
776
1049
|
@cmd.options[:domain] = :local
|
@@ -784,7 +1057,7 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
784
1057
|
orig_dir = Dir.pwd
|
785
1058
|
begin
|
786
1059
|
Dir.chdir @tempdir
|
787
|
-
e =
|
1060
|
+
e = assert_raise Gem::MockGemUi::TermError do
|
788
1061
|
@cmd.execute
|
789
1062
|
end
|
790
1063
|
ensure
|
@@ -793,7 +1066,7 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
793
1066
|
end
|
794
1067
|
|
795
1068
|
assert_equal 2, e.exit_code
|
796
|
-
assert_match %r
|
1069
|
+
assert_match %r{Could not find a valid gem 'a' \(= 10.0\)}, @ui.error
|
797
1070
|
end
|
798
1071
|
|
799
1072
|
def test_show_errors_on_failure
|
@@ -806,7 +1079,7 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
806
1079
|
orig_dir = Dir.pwd
|
807
1080
|
begin
|
808
1081
|
Dir.chdir @tempdir
|
809
|
-
e =
|
1082
|
+
e = assert_raise Gem::MockGemUi::TermError do
|
810
1083
|
@cmd.execute
|
811
1084
|
end
|
812
1085
|
ensure
|
@@ -816,12 +1089,12 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
816
1089
|
|
817
1090
|
assert_equal 2, e.exit_code
|
818
1091
|
|
819
|
-
assert_match
|
1092
|
+
assert_match "Unable to download data", @ui.error
|
820
1093
|
end
|
821
1094
|
|
822
1095
|
def test_show_source_problems_even_on_success
|
823
1096
|
spec_fetcher do |fetcher|
|
824
|
-
fetcher.download
|
1097
|
+
fetcher.download "a", 2
|
825
1098
|
end
|
826
1099
|
|
827
1100
|
Gem.sources << "http://nonexistent.example"
|
@@ -829,12 +1102,12 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
829
1102
|
@cmd.options[:args] = %w[a]
|
830
1103
|
|
831
1104
|
use_ui @ui do
|
832
|
-
|
1105
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
833
1106
|
@cmd.execute
|
834
1107
|
end
|
835
1108
|
end
|
836
1109
|
|
837
|
-
assert_equal %w[a-2], @cmd.installed_specs.map {
|
1110
|
+
assert_equal %w[a-2], @cmd.installed_specs.map {|spec| spec.full_name }
|
838
1111
|
|
839
1112
|
assert_match "1 gem installed", @ui.output
|
840
1113
|
|
@@ -844,9 +1117,34 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
844
1117
|
assert_equal x, e
|
845
1118
|
end
|
846
1119
|
|
1120
|
+
def test_redact_credentials_from_uri_on_warning
|
1121
|
+
spec_fetcher do |fetcher|
|
1122
|
+
fetcher.download "a", 2
|
1123
|
+
end
|
1124
|
+
|
1125
|
+
Gem.sources << "http://username:SECURE_TOKEN@nonexistent.example"
|
1126
|
+
|
1127
|
+
@cmd.options[:args] = %w[a]
|
1128
|
+
|
1129
|
+
use_ui @ui do
|
1130
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
1131
|
+
@cmd.execute
|
1132
|
+
end
|
1133
|
+
end
|
1134
|
+
|
1135
|
+
assert_equal %w[a-2], @cmd.installed_specs.map {|spec| spec.full_name }
|
1136
|
+
|
1137
|
+
assert_match "1 gem installed", @ui.output
|
1138
|
+
|
1139
|
+
e = @ui.error
|
1140
|
+
|
1141
|
+
x = "WARNING: Unable to pull data from 'http://username:REDACTED@nonexistent.example': no data for http://username:REDACTED@nonexistent.example/specs.4.8.gz (http://username:REDACTED@nonexistent.example/specs.4.8.gz)\n"
|
1142
|
+
assert_equal x, e
|
1143
|
+
end
|
1144
|
+
|
847
1145
|
def test_execute_uses_from_a_gemdeps
|
848
1146
|
spec_fetcher do |fetcher|
|
849
|
-
fetcher.gem
|
1147
|
+
fetcher.gem "a", 2
|
850
1148
|
end
|
851
1149
|
|
852
1150
|
File.open @gemdeps, "w" do |f|
|
@@ -856,12 +1154,12 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
856
1154
|
@cmd.options[:gemdeps] = @gemdeps
|
857
1155
|
|
858
1156
|
use_ui @ui do
|
859
|
-
|
1157
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
860
1158
|
@cmd.execute
|
861
1159
|
end
|
862
1160
|
end
|
863
1161
|
|
864
|
-
assert_equal %w[], @cmd.installed_specs.map {
|
1162
|
+
assert_equal %w[], @cmd.installed_specs.map {|spec| spec.full_name }
|
865
1163
|
|
866
1164
|
assert_match "Using a (2)", @ui.output
|
867
1165
|
assert File.exist?("#{@gemdeps}.lock")
|
@@ -869,7 +1167,7 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
869
1167
|
|
870
1168
|
def test_execute_uses_from_a_gemdeps_with_no_lock
|
871
1169
|
spec_fetcher do |fetcher|
|
872
|
-
fetcher.gem
|
1170
|
+
fetcher.gem "a", 2
|
873
1171
|
end
|
874
1172
|
|
875
1173
|
File.open @gemdeps, "w" do |f|
|
@@ -880,12 +1178,12 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
880
1178
|
@cmd.options[:gemdeps] = @gemdeps
|
881
1179
|
|
882
1180
|
use_ui @ui do
|
883
|
-
|
1181
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
884
1182
|
@cmd.execute
|
885
1183
|
end
|
886
1184
|
end
|
887
1185
|
|
888
|
-
assert_equal %w[], @cmd.installed_specs.map {
|
1186
|
+
assert_equal %w[], @cmd.installed_specs.map {|spec| spec.full_name }
|
889
1187
|
|
890
1188
|
assert_match "Using a (2)", @ui.output
|
891
1189
|
assert !File.exist?("#{@gemdeps}.lock")
|
@@ -893,8 +1191,8 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
893
1191
|
|
894
1192
|
def test_execute_installs_from_a_gemdeps_with_conservative
|
895
1193
|
spec_fetcher do |fetcher|
|
896
|
-
fetcher.download
|
897
|
-
fetcher.gem
|
1194
|
+
fetcher.download "a", 2
|
1195
|
+
fetcher.gem "a", 1
|
898
1196
|
end
|
899
1197
|
|
900
1198
|
File.open @gemdeps, "w" do |f|
|
@@ -905,19 +1203,19 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
905
1203
|
@cmd.options[:gemdeps] = @gemdeps
|
906
1204
|
|
907
1205
|
use_ui @ui do
|
908
|
-
|
1206
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
909
1207
|
@cmd.execute
|
910
1208
|
end
|
911
1209
|
end
|
912
1210
|
|
913
|
-
assert_equal %w[], @cmd.installed_specs.map {
|
1211
|
+
assert_equal %w[], @cmd.installed_specs.map {|spec| spec.full_name }
|
914
1212
|
|
915
1213
|
assert_match "Using a (1)", @ui.output
|
916
1214
|
end
|
917
1215
|
|
918
1216
|
def test_execute_installs_from_a_gemdeps
|
919
1217
|
spec_fetcher do |fetcher|
|
920
|
-
fetcher.download
|
1218
|
+
fetcher.download "a", 2
|
921
1219
|
end
|
922
1220
|
|
923
1221
|
File.open @gemdeps, "w" do |f|
|
@@ -927,20 +1225,20 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
927
1225
|
@cmd.options[:gemdeps] = @gemdeps
|
928
1226
|
|
929
1227
|
use_ui @ui do
|
930
|
-
|
1228
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
931
1229
|
@cmd.execute
|
932
1230
|
end
|
933
1231
|
end
|
934
1232
|
|
935
|
-
assert_equal %w[a-2], @cmd.installed_specs.map {
|
1233
|
+
assert_equal %w[a-2], @cmd.installed_specs.map {|spec| spec.full_name }
|
936
1234
|
|
937
1235
|
assert_match "Installing a (2)", @ui.output
|
938
1236
|
end
|
939
1237
|
|
940
1238
|
def test_execute_installs_deps_a_gemdeps
|
941
1239
|
spec_fetcher do |fetcher|
|
942
|
-
fetcher.download
|
943
|
-
fetcher.download
|
1240
|
+
fetcher.download "q", "1.0"
|
1241
|
+
fetcher.download "r", "2.0", "q" => nil
|
944
1242
|
end
|
945
1243
|
|
946
1244
|
File.open @gemdeps, "w" do |f|
|
@@ -950,12 +1248,12 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
950
1248
|
@cmd.options[:gemdeps] = @gemdeps
|
951
1249
|
|
952
1250
|
use_ui @ui do
|
953
|
-
|
1251
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
954
1252
|
@cmd.execute
|
955
1253
|
end
|
956
1254
|
end
|
957
1255
|
|
958
|
-
names = @cmd.installed_specs.map {
|
1256
|
+
names = @cmd.installed_specs.map {|spec| spec.full_name }
|
959
1257
|
|
960
1258
|
assert_equal %w[q-1.0 r-2.0], names
|
961
1259
|
|
@@ -965,9 +1263,9 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
965
1263
|
|
966
1264
|
def test_execute_uses_deps_a_gemdeps
|
967
1265
|
spec_fetcher do |fetcher|
|
968
|
-
fetcher.download
|
1266
|
+
fetcher.download "r", "2.0", "q" => nil
|
969
1267
|
|
970
|
-
fetcher.spec
|
1268
|
+
fetcher.spec "q", "1.0"
|
971
1269
|
end
|
972
1270
|
|
973
1271
|
File.open @gemdeps, "w" do |f|
|
@@ -977,12 +1275,12 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
977
1275
|
@cmd.options[:gemdeps] = @gemdeps
|
978
1276
|
|
979
1277
|
use_ui @ui do
|
980
|
-
|
1278
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
981
1279
|
@cmd.execute
|
982
1280
|
end
|
983
1281
|
end
|
984
1282
|
|
985
|
-
names = @cmd.installed_specs.map {
|
1283
|
+
names = @cmd.installed_specs.map {|spec| spec.full_name }
|
986
1284
|
|
987
1285
|
assert_equal %w[r-2.0], names
|
988
1286
|
|
@@ -992,8 +1290,8 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
992
1290
|
|
993
1291
|
def test_execute_installs_deps_a_gemdeps_into_a_path
|
994
1292
|
spec_fetcher do |fetcher|
|
995
|
-
fetcher.download
|
996
|
-
fetcher.download
|
1293
|
+
fetcher.download "q", "1.0"
|
1294
|
+
fetcher.download "r", "2.0", "q" => nil
|
997
1295
|
end
|
998
1296
|
|
999
1297
|
File.open @gemdeps, "w" do |f|
|
@@ -1004,12 +1302,12 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
1004
1302
|
@cmd.options[:gemdeps] = @gemdeps
|
1005
1303
|
|
1006
1304
|
use_ui @ui do
|
1007
|
-
|
1305
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
1008
1306
|
@cmd.execute
|
1009
1307
|
end
|
1010
1308
|
end
|
1011
1309
|
|
1012
|
-
names = @cmd.installed_specs.map {
|
1310
|
+
names = @cmd.installed_specs.map {|spec| spec.full_name }
|
1013
1311
|
|
1014
1312
|
assert_equal %w[q-1.0 r-2.0], names
|
1015
1313
|
|
@@ -1022,11 +1320,11 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
1022
1320
|
|
1023
1321
|
def test_execute_with_gemdeps_path_ignores_system
|
1024
1322
|
specs = spec_fetcher do |fetcher|
|
1025
|
-
fetcher.download
|
1026
|
-
fetcher.download
|
1323
|
+
fetcher.download "q", "1.0"
|
1324
|
+
fetcher.download "r", "2.0", "q" => nil
|
1027
1325
|
end
|
1028
1326
|
|
1029
|
-
install_specs specs[
|
1327
|
+
install_specs specs["q-1.0"]
|
1030
1328
|
|
1031
1329
|
File.open @gemdeps, "w" do |f|
|
1032
1330
|
f << "gem 'r'"
|
@@ -1036,12 +1334,12 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
1036
1334
|
@cmd.options[:gemdeps] = @gemdeps
|
1037
1335
|
|
1038
1336
|
use_ui @ui do
|
1039
|
-
|
1337
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
1040
1338
|
@cmd.execute
|
1041
1339
|
end
|
1042
1340
|
end
|
1043
1341
|
|
1044
|
-
names = @cmd.installed_specs.map {
|
1342
|
+
names = @cmd.installed_specs.map {|spec| spec.full_name }
|
1045
1343
|
|
1046
1344
|
assert_equal %w[q-1.0 r-2.0], names
|
1047
1345
|
|
@@ -1054,11 +1352,11 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
1054
1352
|
|
1055
1353
|
def test_execute_uses_deps_a_gemdeps_with_a_path
|
1056
1354
|
specs = spec_fetcher do |fetcher|
|
1057
|
-
fetcher.gem
|
1058
|
-
fetcher.gem
|
1355
|
+
fetcher.gem "q", "1.0"
|
1356
|
+
fetcher.gem "r", "2.0", "q" => nil
|
1059
1357
|
end
|
1060
1358
|
|
1061
|
-
i = Gem::Installer.at specs[
|
1359
|
+
i = Gem::Installer.at specs["q-1.0"].cache_file, :install_dir => "gf-path"
|
1062
1360
|
i.install
|
1063
1361
|
|
1064
1362
|
assert File.file?("gf-path/specifications/q-1.0.gemspec"), "not installed"
|
@@ -1071,12 +1369,12 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
1071
1369
|
@cmd.options[:gemdeps] = @gemdeps
|
1072
1370
|
|
1073
1371
|
use_ui @ui do
|
1074
|
-
|
1372
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
1075
1373
|
@cmd.execute
|
1076
1374
|
end
|
1077
1375
|
end
|
1078
1376
|
|
1079
|
-
names = @cmd.installed_specs.map {
|
1377
|
+
names = @cmd.installed_specs.map {|spec| spec.full_name }
|
1080
1378
|
|
1081
1379
|
assert_equal %w[r-2.0], names
|
1082
1380
|
|
@@ -1085,39 +1383,39 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
1085
1383
|
end
|
1086
1384
|
|
1087
1385
|
def test_handle_options_file
|
1088
|
-
FileUtils.touch
|
1386
|
+
FileUtils.touch "Gemfile"
|
1089
1387
|
|
1090
1388
|
@cmd.handle_options %w[-g Gemfile]
|
1091
1389
|
|
1092
|
-
assert_equal
|
1390
|
+
assert_equal "Gemfile", @cmd.options[:gemdeps]
|
1093
1391
|
|
1094
|
-
FileUtils.rm
|
1392
|
+
FileUtils.rm "Gemfile"
|
1095
1393
|
|
1096
|
-
FileUtils.touch
|
1394
|
+
FileUtils.touch "gem.deps.rb"
|
1097
1395
|
|
1098
1396
|
@cmd.handle_options %w[--file gem.deps.rb]
|
1099
1397
|
|
1100
|
-
assert_equal
|
1398
|
+
assert_equal "gem.deps.rb", @cmd.options[:gemdeps]
|
1101
1399
|
|
1102
|
-
FileUtils.rm
|
1400
|
+
FileUtils.rm "gem.deps.rb"
|
1103
1401
|
|
1104
|
-
FileUtils.touch
|
1402
|
+
FileUtils.touch "Isolate"
|
1105
1403
|
|
1106
1404
|
@cmd.handle_options %w[-g]
|
1107
1405
|
|
1108
|
-
assert_equal
|
1406
|
+
assert_equal "Isolate", @cmd.options[:gemdeps]
|
1109
1407
|
|
1110
|
-
FileUtils.touch
|
1408
|
+
FileUtils.touch "Gemfile"
|
1111
1409
|
|
1112
1410
|
@cmd.handle_options %w[-g]
|
1113
1411
|
|
1114
|
-
assert_equal
|
1412
|
+
assert_equal "Gemfile", @cmd.options[:gemdeps]
|
1115
1413
|
|
1116
|
-
FileUtils.touch
|
1414
|
+
FileUtils.touch "gem.deps.rb"
|
1117
1415
|
|
1118
1416
|
@cmd.handle_options %w[-g]
|
1119
1417
|
|
1120
|
-
assert_equal
|
1418
|
+
assert_equal "gem.deps.rb", @cmd.options[:gemdeps]
|
1121
1419
|
end
|
1122
1420
|
|
1123
1421
|
def test_handle_options_suggest
|
@@ -1142,4 +1440,133 @@ ERROR: Possible alternatives: non_existent_with_hint
|
|
1142
1440
|
assert_equal [:test, :development], @cmd.options[:without_groups]
|
1143
1441
|
end
|
1144
1442
|
|
1443
|
+
def test_explain_platform_local
|
1444
|
+
local = Gem::Platform.local
|
1445
|
+
spec_fetcher do |fetcher|
|
1446
|
+
fetcher.spec "a", 2
|
1447
|
+
|
1448
|
+
fetcher.spec "a", 2 do |s|
|
1449
|
+
s.platform = local
|
1450
|
+
end
|
1451
|
+
end
|
1452
|
+
|
1453
|
+
@cmd.options[:explain] = true
|
1454
|
+
@cmd.options[:args] = %w[a]
|
1455
|
+
|
1456
|
+
use_ui @ui do
|
1457
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
1458
|
+
@cmd.execute
|
1459
|
+
end
|
1460
|
+
end
|
1461
|
+
|
1462
|
+
out = @ui.output.split "\n"
|
1463
|
+
|
1464
|
+
assert_equal "Gems to install:", out.shift
|
1465
|
+
assert_equal " a-2-#{local}", out.shift
|
1466
|
+
assert_empty out
|
1467
|
+
end
|
1468
|
+
|
1469
|
+
def test_explain_platform_local_ignore_dependencies
|
1470
|
+
local = Gem::Platform.local
|
1471
|
+
spec_fetcher do |fetcher|
|
1472
|
+
fetcher.spec "a", 3
|
1473
|
+
|
1474
|
+
fetcher.spec "a", 3 do |s|
|
1475
|
+
s.platform = local
|
1476
|
+
end
|
1477
|
+
end
|
1478
|
+
|
1479
|
+
@cmd.options[:ignore_dependencies] = true
|
1480
|
+
@cmd.options[:explain] = true
|
1481
|
+
@cmd.options[:args] = %w[a]
|
1482
|
+
|
1483
|
+
use_ui @ui do
|
1484
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
1485
|
+
@cmd.execute
|
1486
|
+
end
|
1487
|
+
end
|
1488
|
+
|
1489
|
+
out = @ui.output.split "\n"
|
1490
|
+
|
1491
|
+
assert_equal "Gems to install:", out.shift
|
1492
|
+
assert_equal " a-3-#{local}", out.shift
|
1493
|
+
assert_empty out
|
1494
|
+
end
|
1495
|
+
|
1496
|
+
def test_explain_platform_ruby
|
1497
|
+
local = Gem::Platform.local
|
1498
|
+
spec_fetcher do |fetcher|
|
1499
|
+
fetcher.spec "a", 2
|
1500
|
+
|
1501
|
+
fetcher.spec "a", 2 do |s|
|
1502
|
+
s.platform = local
|
1503
|
+
end
|
1504
|
+
end
|
1505
|
+
|
1506
|
+
# equivalent to --platform=ruby
|
1507
|
+
Gem.platforms = [Gem::Platform::RUBY]
|
1508
|
+
|
1509
|
+
@cmd.options[:explain] = true
|
1510
|
+
@cmd.options[:args] = %w[a]
|
1511
|
+
|
1512
|
+
use_ui @ui do
|
1513
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
1514
|
+
@cmd.execute
|
1515
|
+
end
|
1516
|
+
end
|
1517
|
+
|
1518
|
+
out = @ui.output.split "\n"
|
1519
|
+
|
1520
|
+
assert_equal "Gems to install:", out.shift
|
1521
|
+
assert_equal " a-2", out.shift
|
1522
|
+
assert_empty out
|
1523
|
+
end
|
1524
|
+
|
1525
|
+
def test_explain_platform_ruby_ignore_dependencies
|
1526
|
+
local = Gem::Platform.local
|
1527
|
+
spec_fetcher do |fetcher|
|
1528
|
+
fetcher.spec "a", 3
|
1529
|
+
|
1530
|
+
fetcher.spec "a", 3 do |s|
|
1531
|
+
s.platform = local
|
1532
|
+
end
|
1533
|
+
end
|
1534
|
+
|
1535
|
+
# equivalent to --platform=ruby
|
1536
|
+
Gem.platforms = [Gem::Platform::RUBY]
|
1537
|
+
|
1538
|
+
@cmd.options[:ignore_dependencies] = true
|
1539
|
+
@cmd.options[:explain] = true
|
1540
|
+
@cmd.options[:args] = %w[a]
|
1541
|
+
|
1542
|
+
use_ui @ui do
|
1543
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
1544
|
+
@cmd.execute
|
1545
|
+
end
|
1546
|
+
end
|
1547
|
+
|
1548
|
+
out = @ui.output.split "\n"
|
1549
|
+
|
1550
|
+
assert_equal "Gems to install:", out.shift
|
1551
|
+
assert_equal " a-3", out.shift
|
1552
|
+
assert_empty out
|
1553
|
+
end
|
1554
|
+
|
1555
|
+
def test_suggest_update_if_enabled
|
1556
|
+
TestUpdateSuggestion.with_eglible_environment(cmd: @cmd) do
|
1557
|
+
spec_fetcher do |fetcher|
|
1558
|
+
fetcher.gem "a", 2
|
1559
|
+
end
|
1560
|
+
|
1561
|
+
@cmd.options[:args] = %w[a]
|
1562
|
+
|
1563
|
+
use_ui @ui do
|
1564
|
+
assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
|
1565
|
+
@cmd.execute
|
1566
|
+
end
|
1567
|
+
end
|
1568
|
+
|
1569
|
+
assert_includes @ui.output, "A new release of RubyGems is available: 1.2.3 → 2.0.0!"
|
1570
|
+
end
|
1571
|
+
end
|
1145
1572
|
end
|