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