rubygems-update 3.2.30 → 3.4.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1666 -994
- data/CONTRIBUTING.md +71 -15
- data/Manifest.txt +93 -37
- data/POLICIES.md +65 -16
- data/README.md +28 -13
- data/UPGRADING.md +5 -81
- data/bin/gem +2 -10
- data/bin/update_rubygems +5 -5
- data/bundler/CHANGELOG.md +647 -1
- data/bundler/README.md +3 -6
- data/bundler/UPGRADING.md +11 -4
- data/bundler/bundler.gemspec +8 -10
- data/bundler/exe/bundle +7 -11
- data/bundler/exe/bundler +1 -1
- data/bundler/lib/bundler/.document +1 -0
- data/bundler/lib/bundler/build_metadata.rb +3 -3
- data/bundler/lib/bundler/cli/add.rb +1 -1
- data/bundler/lib/bundler/cli/binstubs.rb +5 -1
- data/bundler/lib/bundler/cli/check.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +4 -2
- data/bundler/lib/bundler/cli/config.rb +10 -1
- data/bundler/lib/bundler/cli/console.rb +2 -2
- data/bundler/lib/bundler/cli/doctor.rb +10 -3
- data/bundler/lib/bundler/cli/gem.rb +136 -42
- data/bundler/lib/bundler/cli/info.rb +17 -3
- data/bundler/lib/bundler/cli/init.rb +6 -2
- data/bundler/lib/bundler/cli/install.rb +15 -33
- data/bundler/lib/bundler/cli/lock.rb +8 -5
- data/bundler/lib/bundler/cli/open.rb +6 -4
- data/bundler/lib/bundler/cli/outdated.rb +13 -6
- data/bundler/lib/bundler/cli/platform.rb +2 -2
- data/bundler/lib/bundler/cli/show.rb +1 -1
- data/bundler/lib/bundler/cli/update.rb +8 -4
- data/bundler/lib/bundler/cli/viz.rb +1 -1
- data/bundler/lib/bundler/cli.rb +67 -21
- data/bundler/lib/bundler/compact_index_client/cache.rb +1 -10
- data/bundler/lib/bundler/compact_index_client/updater.rb +53 -44
- data/bundler/lib/bundler/compact_index_client.rb +0 -6
- data/bundler/lib/bundler/constants.rb +1 -1
- data/bundler/lib/bundler/current_ruby.rb +18 -6
- data/bundler/lib/bundler/definition.rb +259 -242
- data/bundler/lib/bundler/dependency.rb +24 -71
- data/bundler/lib/bundler/digest.rb +1 -1
- data/bundler/lib/bundler/dsl.rb +29 -46
- data/bundler/lib/bundler/endpoint_specification.rb +15 -13
- data/bundler/lib/bundler/env.rb +2 -2
- data/bundler/lib/bundler/environment_preserver.rb +7 -3
- data/bundler/lib/bundler/errors.rb +15 -15
- data/bundler/lib/bundler/feature_flag.rb +0 -1
- data/bundler/lib/bundler/fetcher/base.rb +6 -8
- data/bundler/lib/bundler/fetcher/compact_index.rb +18 -25
- data/bundler/lib/bundler/fetcher/dependency.rb +2 -6
- data/bundler/lib/bundler/fetcher/downloader.rb +2 -5
- data/bundler/lib/bundler/fetcher/index.rb +0 -26
- data/bundler/lib/bundler/fetcher.rb +22 -29
- data/bundler/lib/bundler/force_platform.rb +18 -0
- data/bundler/lib/bundler/friendly_errors.rb +21 -7
- data/bundler/lib/bundler/gem_helper.rb +4 -4
- data/bundler/lib/bundler/gem_helpers.rb +9 -2
- data/bundler/lib/bundler/gem_version_promoter.rb +53 -98
- data/bundler/lib/bundler/graph.rb +3 -3
- data/bundler/lib/bundler/index.rb +13 -51
- data/bundler/lib/bundler/injector.rb +18 -4
- data/bundler/lib/bundler/inline.rb +9 -21
- data/bundler/lib/bundler/installer/gem_installer.rb +13 -5
- data/bundler/lib/bundler/installer/parallel_installer.rb +3 -33
- data/bundler/lib/bundler/installer/standalone.rb +42 -11
- data/bundler/lib/bundler/installer.rb +20 -44
- data/bundler/lib/bundler/lazy_specification.rb +72 -55
- data/bundler/lib/bundler/lockfile_generator.rb +3 -3
- data/bundler/lib/bundler/lockfile_parser.rb +28 -26
- data/bundler/lib/bundler/man/bundle-add.1 +21 -5
- data/bundler/lib/bundler/man/bundle-add.1.ronn +16 -4
- data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
- data/bundler/lib/bundler/man/bundle-cache.1 +7 -1
- data/bundler/lib/bundler/man/bundle-cache.1.ronn +7 -0
- data/bundler/lib/bundler/man/bundle-check.1 +1 -1
- data/bundler/lib/bundler/man/bundle-clean.1 +2 -2
- data/bundler/lib/bundler/man/bundle-clean.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-config.1 +34 -15
- data/bundler/lib/bundler/man/bundle-config.1.ronn +31 -19
- 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 +1 -1
- data/bundler/lib/bundler/man/bundle-exec.1 +6 -6
- data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -6
- data/bundler/lib/bundler/man/bundle-gem.1 +37 -34
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +21 -5
- 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 +1 -1
- data/bundler/lib/bundler/man/bundle-init.1 +5 -1
- data/bundler/lib/bundler/man/bundle-init.1.ronn +2 -0
- data/bundler/lib/bundler/man/bundle-inject.1 +5 -2
- data/bundler/lib/bundler/man/bundle-inject.1.ronn +3 -1
- data/bundler/lib/bundler/man/bundle-install.1 +6 -31
- data/bundler/lib/bundler/man/bundle-install.1.ronn +8 -31
- data/bundler/lib/bundler/man/bundle-list.1 +1 -1
- data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
- data/bundler/lib/bundler/man/bundle-open.1 +22 -2
- data/bundler/lib/bundler/man/bundle-open.1.ronn +9 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +3 -10
- data/bundler/lib/bundler/man/bundle-outdated.1.ronn +1 -10
- data/bundler/lib/bundler/man/bundle-platform.1 +16 -6
- data/bundler/lib/bundler/man/bundle-platform.1.ronn +14 -7
- data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
- data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
- data/bundler/lib/bundler/man/bundle-show.1 +1 -1
- data/bundler/lib/bundler/man/bundle-update.1 +2 -2
- data/bundler/lib/bundler/man/bundle-update.1.ronn +2 -1
- 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 +4 -1
- data/bundler/lib/bundler/man/bundle-viz.1.ronn +2 -0
- data/bundler/lib/bundler/man/bundle.1 +15 -10
- data/bundler/lib/bundler/man/bundle.1.ronn +12 -7
- data/bundler/lib/bundler/man/gemfile.5 +117 -80
- data/bundler/lib/bundler/man/gemfile.5.ronn +105 -84
- data/bundler/lib/bundler/man/index.txt +4 -0
- data/bundler/lib/bundler/match_metadata.rb +13 -0
- data/bundler/lib/bundler/match_platform.rb +0 -1
- data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
- data/bundler/lib/bundler/mirror.rb +5 -7
- data/bundler/lib/bundler/plugin/api/source.rb +4 -9
- data/bundler/lib/bundler/plugin/index.rb +4 -4
- data/bundler/lib/bundler/plugin/installer/git.rb +0 -4
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -8
- data/bundler/lib/bundler/plugin/installer.rb +6 -3
- data/bundler/lib/bundler/plugin.rb +3 -1
- data/bundler/lib/bundler/process_lock.rb +1 -1
- data/bundler/lib/bundler/remote_specification.rb +7 -5
- data/bundler/lib/bundler/resolver/base.rb +109 -0
- data/bundler/lib/bundler/resolver/candidate.rb +94 -0
- data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
- data/bundler/lib/bundler/resolver/package.rb +72 -0
- data/bundler/lib/bundler/resolver/root.rb +25 -0
- data/bundler/lib/bundler/resolver/spec_group.rb +43 -71
- data/bundler/lib/bundler/resolver.rb +332 -308
- data/bundler/lib/bundler/ruby_dsl.rb +1 -1
- data/bundler/lib/bundler/ruby_version.rb +5 -18
- data/bundler/lib/bundler/rubygems_ext.rb +144 -25
- data/bundler/lib/bundler/rubygems_gem_installer.rb +32 -20
- data/bundler/lib/bundler/rubygems_integration.rb +24 -95
- data/bundler/lib/bundler/runtime.rb +2 -7
- data/bundler/lib/bundler/self_manager.rb +168 -0
- data/bundler/lib/bundler/settings.rb +5 -10
- data/bundler/lib/bundler/setup.rb +4 -1
- data/bundler/lib/bundler/shared_helpers.rb +17 -25
- data/bundler/lib/bundler/source/git/git_proxy.rb +219 -71
- data/bundler/lib/bundler/source/git.rb +23 -26
- data/bundler/lib/bundler/source/metadata.rb +3 -4
- data/bundler/lib/bundler/source/path/installer.rb +1 -22
- data/bundler/lib/bundler/source/path.rb +7 -7
- data/bundler/lib/bundler/source/rubygems.rb +91 -130
- data/bundler/lib/bundler/source/rubygems_aggregate.rb +1 -1
- data/bundler/lib/bundler/source.rb +4 -5
- data/bundler/lib/bundler/source_list.rb +19 -31
- data/bundler/lib/bundler/source_map.rb +15 -2
- data/bundler/lib/bundler/spec_set.rb +63 -35
- data/bundler/lib/bundler/stub_specification.rb +5 -3
- data/bundler/lib/bundler/templates/Executable +3 -5
- data/bundler/lib/bundler/templates/Executable.bundler +6 -11
- data/bundler/lib/bundler/templates/Executable.standalone +4 -4
- data/bundler/lib/bundler/templates/Gemfile +0 -2
- data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +8 -2
- data/bundler/lib/bundler/templates/newgem/README.md.tt +7 -11
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +27 -3
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +13 -3
- data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +13 -4
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +22 -16
- data/bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
- data/bundler/lib/bundler/templates/newgem/standard.yml.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/test/minitest/{newgem_test.rb.tt → test_newgem.rb.tt} +1 -1
- data/bundler/lib/bundler/ui/shell.rb +36 -13
- data/bundler/lib/bundler/ui/silent.rb +21 -5
- data/bundler/lib/bundler/uri_normalizer.rb +23 -0
- data/bundler/lib/bundler/vendor/.document +1 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1350 -408
- data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
- 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 +243 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +6 -6
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +1 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +6 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +6 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +9 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +19 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +23 -5
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- 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/lib/uri/common.rb +76 -91
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +32 -13
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -3
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -3
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +14 -21
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +11 -17
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- 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 +3 -3
- data/bundler/lib/bundler/vendored_persistent.rb +1 -33
- data/bundler/lib/bundler/{vendored_molinillo.rb → vendored_pub_grub.rb} +1 -1
- data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_tsort.rb} +1 -1
- data/bundler/lib/bundler/version.rb +5 -1
- data/bundler/lib/bundler/worker.rb +5 -7
- data/bundler/lib/bundler.rb +50 -77
- data/hide_lib_for_update/note.txt +0 -4
- data/lib/rubygems/available_set.rb +3 -3
- data/lib/rubygems/basic_specification.rb +12 -12
- data/lib/rubygems/bundler_version_finder.rb +14 -46
- data/lib/rubygems/command.rb +47 -39
- data/lib/rubygems/command_manager.rb +34 -13
- data/lib/rubygems/commands/build_command.rb +11 -8
- data/lib/rubygems/commands/cert_command.rb +39 -39
- data/lib/rubygems/commands/check_command.rb +20 -20
- data/lib/rubygems/commands/cleanup_command.rb +23 -23
- data/lib/rubygems/commands/contents_command.rb +13 -13
- data/lib/rubygems/commands/dependency_command.rb +35 -45
- data/lib/rubygems/commands/environment_command.rb +10 -7
- data/lib/rubygems/commands/exec_command.rb +248 -0
- data/lib/rubygems/commands/fetch_command.rb +32 -13
- data/lib/rubygems/commands/generate_index_command.rb +17 -17
- data/lib/rubygems/commands/help_command.rb +6 -6
- data/lib/rubygems/commands/info_command.rb +3 -3
- data/lib/rubygems/commands/install_command.rb +31 -24
- data/lib/rubygems/commands/list_command.rb +4 -4
- data/lib/rubygems/commands/lock_command.rb +4 -4
- data/lib/rubygems/commands/mirror_command.rb +3 -3
- data/lib/rubygems/commands/open_command.rb +9 -9
- data/lib/rubygems/commands/outdated_command.rb +5 -5
- data/lib/rubygems/commands/owner_command.rb +17 -12
- data/lib/rubygems/commands/pristine_command.rb +64 -49
- data/lib/rubygems/commands/push_command.rb +16 -16
- data/lib/rubygems/commands/query_command.rb +9 -9
- data/lib/rubygems/commands/rdoc_command.rb +26 -25
- data/lib/rubygems/commands/search_command.rb +4 -4
- data/lib/rubygems/commands/server_command.rb +16 -79
- data/lib/rubygems/commands/setup_command.rb +172 -173
- data/lib/rubygems/commands/signin_command.rb +9 -9
- data/lib/rubygems/commands/signout_command.rb +7 -7
- data/lib/rubygems/commands/sources_command.rb +22 -22
- data/lib/rubygems/commands/specification_command.rb +18 -18
- data/lib/rubygems/commands/stale_command.rb +2 -2
- data/lib/rubygems/commands/uninstall_command.rb +43 -40
- data/lib/rubygems/commands/unpack_command.rb +13 -13
- data/lib/rubygems/commands/update_command.rb +61 -72
- data/lib/rubygems/commands/which_command.rb +7 -7
- data/lib/rubygems/commands/yank_command.rb +11 -11
- data/lib/rubygems/compatibility.rb +4 -2
- data/lib/rubygems/config_file.rb +58 -25
- data/lib/rubygems/core_ext/kernel_gem.rb +1 -6
- data/lib/rubygems/core_ext/kernel_require.rb +108 -115
- data/lib/rubygems/core_ext/kernel_warn.rb +33 -37
- data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
- data/lib/rubygems/defaults.rb +32 -36
- data/lib/rubygems/dependency.rb +20 -17
- data/lib/rubygems/dependency_installer.rb +37 -37
- data/lib/rubygems/dependency_list.rb +7 -7
- data/lib/rubygems/deprecate.rb +55 -8
- data/lib/rubygems/doctor.rb +21 -21
- data/lib/rubygems/errors.rb +3 -6
- data/lib/rubygems/exceptions.rb +35 -7
- data/lib/rubygems/ext/build_error.rb +1 -1
- data/lib/rubygems/ext/builder.rb +51 -22
- 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 +2 -2
- data/lib/rubygems/ext/configure_builder.rb +1 -1
- data/lib/rubygems/ext/ext_conf_builder.rb +35 -59
- data/lib/rubygems/ext/rake_builder.rb +3 -3
- data/lib/rubygems/ext.rb +7 -6
- data/lib/rubygems/gem_runner.rb +12 -16
- data/lib/rubygems/gemcutter_utilities.rb +60 -21
- data/lib/rubygems/indexer.rb +30 -28
- data/lib/rubygems/install_default_message.rb +2 -2
- data/lib/rubygems/install_message.rb +2 -2
- data/lib/rubygems/install_update_options.rb +70 -61
- data/lib/rubygems/installer.rb +135 -87
- data/lib/rubygems/installer_uninstaller_utils.rb +2 -2
- data/lib/rubygems/local_remote_options.rb +22 -24
- data/lib/rubygems/mock_gem_ui.rb +2 -2
- data/lib/rubygems/name_tuple.rb +6 -7
- 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/file_source.rb +2 -2
- data/lib/rubygems/package/old.rb +9 -9
- data/lib/rubygems/package/tar_header.rb +62 -62
- data/lib/rubygems/package/tar_reader/entry.rb +90 -9
- data/lib/rubygems/package/tar_reader.rb +1 -29
- data/lib/rubygems/package/tar_writer.rb +7 -7
- data/lib/rubygems/package.rb +77 -60
- data/lib/rubygems/package_task.rb +4 -4
- data/lib/rubygems/path_support.rb +1 -6
- data/lib/rubygems/platform.rb +94 -61
- data/lib/rubygems/psych_tree.rb +1 -1
- data/lib/rubygems/query_utils.rb +49 -51
- data/lib/rubygems/rdoc.rb +2 -2
- data/lib/rubygems/remote_fetcher.rb +27 -27
- data/lib/rubygems/request/connection_pools.rb +4 -4
- data/lib/rubygems/request/http_pool.rb +1 -1
- data/lib/rubygems/request.rb +24 -24
- data/lib/rubygems/request_set/gem_dependency_api.rb +122 -123
- data/lib/rubygems/request_set/lockfile/parser.rb +26 -26
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +4 -4
- data/lib/rubygems/request_set/lockfile.rb +9 -9
- data/lib/rubygems/request_set.rb +18 -18
- data/lib/rubygems/requirement.rb +15 -15
- data/lib/rubygems/resolver/activation_request.rb +3 -3
- data/lib/rubygems/resolver/api_set.rb +4 -4
- data/lib/rubygems/resolver/api_specification.rb +6 -6
- data/lib/rubygems/resolver/best_set.rb +5 -5
- data/lib/rubygems/resolver/conflict.rb +10 -10
- data/lib/rubygems/resolver/dependency_request.rb +2 -2
- data/lib/rubygems/resolver/git_set.rb +2 -2
- data/lib/rubygems/resolver/git_specification.rb +6 -6
- data/lib/rubygems/resolver/index_set.rb +3 -3
- data/lib/rubygems/resolver/index_specification.rb +6 -5
- data/lib/rubygems/resolver/installed_specification.rb +4 -4
- data/lib/rubygems/resolver/installer_set.rb +21 -26
- data/lib/rubygems/resolver/local_specification.rb +2 -2
- data/lib/rubygems/resolver/lock_set.rb +4 -4
- data/lib/rubygems/resolver/lock_specification.rb +4 -4
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +3 -3
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/lib/rubygems/resolver/molinillo.rb +1 -1
- data/lib/rubygems/resolver/specification.rb +1 -1
- data/lib/rubygems/resolver/stats.rb +1 -1
- data/lib/rubygems/resolver/vendor_set.rb +1 -1
- data/lib/rubygems/resolver/vendor_specification.rb +3 -3
- data/lib/rubygems/resolver.rb +40 -40
- data/lib/rubygems/s3_uri_signer.rb +6 -6
- data/lib/rubygems/safe_yaml.rb +10 -10
- data/lib/rubygems/security/policies.rb +47 -47
- data/lib/rubygems/security/policy.rb +19 -21
- data/lib/rubygems/security/signer.rb +5 -5
- data/lib/rubygems/security/trust_dir.rb +4 -4
- data/lib/rubygems/security.rb +37 -43
- data/lib/rubygems/security_option.rb +7 -7
- data/lib/rubygems/source/git.rb +25 -24
- data/lib/rubygems/source/installed.rb +1 -1
- data/lib/rubygems/source/local.rb +2 -2
- data/lib/rubygems/source/specific_file.rb +1 -1
- data/lib/rubygems/source.rb +27 -32
- data/lib/rubygems/source_list.rb +5 -9
- data/lib/rubygems/spec_fetcher.rb +37 -37
- data/lib/rubygems/specification.rb +265 -211
- data/lib/rubygems/specification_policy.rb +49 -30
- data/lib/rubygems/stub_specification.rb +24 -27
- data/lib/rubygems/text.rb +22 -21
- data/lib/rubygems/tsort/.document +1 -0
- data/lib/rubygems/tsort/LICENSE.txt +22 -0
- data/lib/rubygems/tsort/lib/tsort.rb +452 -0
- data/lib/rubygems/tsort.rb +3 -0
- data/lib/rubygems/uninstaller.rb +29 -26
- data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
- data/lib/rubygems/update_suggestion.rb +69 -0
- data/lib/rubygems/uri.rb +45 -30
- data/lib/rubygems/uri_formatter.rb +1 -1
- data/lib/rubygems/user_interaction.rb +42 -28
- data/lib/rubygems/util/licenses.rb +4 -2
- data/lib/rubygems/util.rb +12 -16
- data/lib/rubygems/validator.rb +6 -6
- data/lib/rubygems/version.rb +28 -17
- data/lib/rubygems/version_option.rb +5 -5
- data/lib/rubygems.rb +129 -117
- data/rubygems-update.gemspec +3 -3
- data/setup.rb +11 -16
- data/test/rubygems/alternate_cert.pem +14 -14
- data/test/rubygems/alternate_cert_32.pem +15 -15
- data/test/rubygems/alternate_key.pem +25 -25
- data/test/rubygems/bundler_test_gem.rb +419 -0
- data/test/rubygems/child_cert.pem +15 -16
- data/test/rubygems/child_cert_32.pem +15 -16
- data/test/rubygems/child_key.pem +25 -25
- data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
- data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
- data/test/rubygems/encrypted_private_key.pem +26 -26
- data/test/rubygems/expired_cert.pem +15 -15
- data/test/rubygems/future_cert.pem +15 -15
- data/test/rubygems/future_cert_32.pem +15 -15
- data/test/rubygems/grandchild_cert.pem +15 -16
- data/test/rubygems/grandchild_cert_32.pem +15 -16
- data/test/rubygems/grandchild_key.pem +25 -25
- data/test/rubygems/helper.rb +237 -207
- data/test/rubygems/installer_test_case.rb +13 -13
- data/test/rubygems/invalid_issuer_cert.pem +16 -16
- data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
- data/test/rubygems/invalid_key.pem +25 -25
- data/test/rubygems/invalid_signer_cert.pem +15 -15
- data/test/rubygems/invalid_signer_cert_32.pem +15 -15
- data/test/rubygems/invalidchild_cert.pem +15 -16
- data/test/rubygems/invalidchild_cert_32.pem +15 -16
- data/test/rubygems/invalidchild_key.pem +25 -25
- data/test/rubygems/package/tar_test_case.rb +52 -17
- data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
- data/test/rubygems/plugin/exception/rubygems_plugin.rb +1 -1
- data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
- data/test/rubygems/private_key.pem +25 -25
- data/test/rubygems/public_cert.pem +16 -16
- data/test/rubygems/public_cert_32.pem +15 -15
- data/test/rubygems/public_key.pem +7 -7
- data/test/rubygems/rubygems_plugin.rb +2 -2
- data/test/rubygems/simple_gem.rb +1 -1
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +4 -4
- data/test/rubygems/test_bundled_ca.rb +11 -11
- data/test/rubygems/test_config.rb +5 -5
- data/test/rubygems/test_deprecate.rb +3 -3
- data/test/rubygems/test_exit.rb +17 -0
- data/test/rubygems/test_gem.rb +367 -757
- data/test/rubygems/test_gem_available_set.rb +21 -21
- data/test/rubygems/test_gem_bundler_version_finder.rb +27 -47
- data/test/rubygems/test_gem_command.rb +45 -45
- data/test/rubygems/test_gem_command_manager.rb +124 -27
- data/test/rubygems/test_gem_commands_build_command.rb +73 -63
- data/test/rubygems/test_gem_commands_cert_command.rb +105 -107
- data/test/rubygems/test_gem_commands_check_command.rb +4 -4
- data/test/rubygems/test_gem_commands_cleanup_command.rb +40 -40
- data/test/rubygems/test_gem_commands_contents_command.rb +28 -28
- data/test/rubygems/test_gem_commands_dependency_command.rb +36 -36
- data/test/rubygems/test_gem_commands_environment_command.rb +38 -14
- data/test/rubygems/test_gem_commands_exec_command.rb +851 -0
- data/test/rubygems/test_gem_commands_fetch_command.rb +159 -26
- data/test/rubygems/test_gem_commands_generate_index_command.rb +7 -7
- data/test/rubygems/test_gem_commands_help_command.rb +13 -13
- data/test/rubygems/test_gem_commands_info_command.rb +28 -2
- data/test/rubygems/test_gem_commands_install_command.rb +200 -132
- data/test/rubygems/test_gem_commands_list_command.rb +4 -4
- data/test/rubygems/test_gem_commands_lock_command.rb +10 -10
- data/test/rubygems/test_gem_commands_mirror.rb +2 -2
- data/test/rubygems/test_gem_commands_open_command.rb +5 -5
- data/test/rubygems/test_gem_commands_outdated_command.rb +9 -9
- data/test/rubygems/test_gem_commands_owner_command.rb +126 -45
- data/test/rubygems/test_gem_commands_pristine_command.rb +141 -92
- data/test/rubygems/test_gem_commands_push_command.rb +85 -59
- data/test/rubygems/test_gem_commands_query_command.rb +73 -73
- data/test/rubygems/test_gem_commands_search_command.rb +2 -2
- data/test/rubygems/test_gem_commands_server_command.rb +6 -48
- data/test/rubygems/test_gem_commands_setup_command.rb +169 -92
- data/test/rubygems/test_gem_commands_signin_command.rb +154 -26
- data/test/rubygems/test_gem_commands_signout_command.rb +3 -3
- data/test/rubygems/test_gem_commands_sources_command.rb +74 -25
- data/test/rubygems/test_gem_commands_specification_command.rb +32 -32
- data/test/rubygems/test_gem_commands_stale_command.rb +4 -4
- data/test/rubygems/test_gem_commands_uninstall_command.rb +99 -82
- data/test/rubygems/test_gem_commands_unpack_command.rb +31 -31
- data/test/rubygems/test_gem_commands_update_command.rb +202 -91
- data/test/rubygems/test_gem_commands_which_command.rb +6 -6
- data/test/rubygems/test_gem_commands_yank_command.rb +43 -43
- data/test/rubygems/test_gem_config_file.rb +93 -81
- data/test/rubygems/test_gem_dependency.rb +78 -80
- data/test/rubygems/test_gem_dependency_installer.rb +165 -165
- data/test/rubygems/test_gem_dependency_list.rb +47 -47
- data/test/rubygems/test_gem_dependency_resolution_error.rb +4 -4
- data/test/rubygems/test_gem_doctor.rb +26 -26
- data/test/rubygems/test_gem_ext_builder.rb +60 -62
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +8 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +233 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +27 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +247 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +8 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +51 -0
- data/test/rubygems/test_gem_ext_cargo_builder.rb +166 -0
- data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +33 -0
- data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +60 -0
- data/test/rubygems/test_gem_ext_cmake_builder.rb +17 -15
- data/test/rubygems/test_gem_ext_configure_builder.rb +13 -13
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +53 -50
- data/test/rubygems/test_gem_ext_rake_builder.rb +15 -15
- data/test/rubygems/test_gem_gem_runner.rb +13 -8
- data/test/rubygems/test_gem_gemcutter_utilities.rb +71 -65
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -4
- data/test/rubygems/test_gem_indexer.rb +90 -67
- data/test/rubygems/test_gem_install_update_options.rb +18 -18
- data/test/rubygems/test_gem_installer.rb +511 -327
- data/test/rubygems/test_gem_local_remote_options.rb +10 -10
- data/test/rubygems/test_gem_name_tuple.rb +4 -4
- data/test/rubygems/test_gem_package.rb +246 -236
- data/test/rubygems/test_gem_package_old.rb +13 -13
- data/test/rubygems/test_gem_package_tar_header.rb +47 -47
- data/test/rubygems/test_gem_package_tar_reader.rb +55 -8
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +161 -16
- data/test/rubygems/test_gem_package_tar_writer.rb +76 -76
- data/test/rubygems/test_gem_package_task.rb +18 -18
- data/test/rubygems/test_gem_path_support.rb +15 -19
- data/test/rubygems/test_gem_platform.rb +335 -214
- data/test/rubygems/test_gem_rdoc.rb +14 -14
- data/test/rubygems/test_gem_remote_fetcher.rb +169 -154
- data/test/rubygems/test_gem_request.rb +65 -59
- data/test/rubygems/test_gem_request_connection_pools.rb +29 -29
- data/test/rubygems/test_gem_request_set.rb +100 -100
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +209 -211
- data/test/rubygems/test_gem_request_set_lockfile.rb +86 -86
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +58 -58
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +62 -62
- data/test/rubygems/test_gem_requirement.rb +47 -42
- data/test/rubygems/test_gem_resolver.rb +173 -106
- data/test/rubygems/test_gem_resolver_activation_request.rb +6 -6
- data/test/rubygems/test_gem_resolver_api_set.rb +33 -33
- data/test/rubygems/test_gem_resolver_api_specification.rb +47 -47
- data/test/rubygems/test_gem_resolver_best_set.rb +22 -22
- data/test/rubygems/test_gem_resolver_composed_set.rb +1 -1
- data/test/rubygems/test_gem_resolver_conflict.rb +12 -12
- data/test/rubygems/test_gem_resolver_dependency_request.rb +15 -15
- data/test/rubygems/test_gem_resolver_git_set.rb +21 -21
- data/test/rubygems/test_gem_resolver_git_specification.rb +21 -21
- data/test/rubygems/test_gem_resolver_index_set.rb +12 -12
- data/test/rubygems/test_gem_resolver_index_specification.rb +16 -16
- data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -5
- data/test/rubygems/test_gem_resolver_installer_set.rb +79 -35
- data/test/rubygems/test_gem_resolver_local_specification.rb +7 -7
- data/test/rubygems/test_gem_resolver_lock_set.rb +12 -12
- data/test/rubygems/test_gem_resolver_lock_specification.rb +17 -17
- data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -1
- data/test/rubygems/test_gem_resolver_specification.rb +8 -8
- data/test/rubygems/test_gem_resolver_vendor_set.rb +6 -6
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +10 -10
- data/test/rubygems/test_gem_security.rb +69 -69
- data/test/rubygems/test_gem_security_policy.rb +72 -72
- data/test/rubygems/test_gem_security_signer.rb +34 -34
- data/test/rubygems/test_gem_security_trust_dir.rb +6 -6
- data/test/rubygems/test_gem_silent_ui.rb +38 -32
- data/test/rubygems/test_gem_source.rb +44 -44
- data/test/rubygems/test_gem_source_fetch_problem.rb +9 -9
- data/test/rubygems/test_gem_source_git.rb +69 -62
- data/test/rubygems/test_gem_source_installed.rb +16 -16
- data/test/rubygems/test_gem_source_list.rb +5 -5
- data/test/rubygems/test_gem_source_local.rb +14 -14
- data/test/rubygems/test_gem_source_lock.rb +31 -31
- data/test/rubygems/test_gem_source_specific_file.rb +17 -17
- data/test/rubygems/test_gem_source_subpath_problem.rb +7 -7
- data/test/rubygems/test_gem_source_vendor.rb +13 -13
- data/test/rubygems/test_gem_spec_fetcher.rb +72 -72
- data/test/rubygems/test_gem_specification.rb +560 -493
- data/test/rubygems/test_gem_stream_ui.rb +20 -20
- data/test/rubygems/test_gem_stub_specification.rb +32 -48
- data/test/rubygems/test_gem_text.rb +7 -1
- data/test/rubygems/test_gem_uninstaller.rb +113 -113
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -3
- data/test/rubygems/test_gem_update_suggestion.rb +208 -0
- data/test/rubygems/test_gem_uri.rb +4 -4
- data/test/rubygems/test_gem_uri_formatter.rb +14 -14
- data/test/rubygems/test_gem_util.rb +23 -23
- data/test/rubygems/test_gem_validator.rb +8 -8
- data/test/rubygems/test_gem_version.rb +27 -16
- data/test/rubygems/test_gem_version_option.rb +15 -15
- data/test/rubygems/test_kernel.rb +42 -60
- data/test/rubygems/test_project_sanity.rb +2 -2
- data/test/rubygems/test_remote_fetch_error.rb +6 -6
- data/test/rubygems/test_require.rb +132 -174
- data/test/rubygems/test_rubygems.rb +42 -12
- data/test/rubygems/utilities.rb +59 -37
- data/test/rubygems/wrong_key_cert.pem +15 -15
- data/test/rubygems/wrong_key_cert_32.pem +15 -15
- data/test/test_changelog_generator.rb +1 -0
- metadata +97 -41
- data/bundler/lib/bundler/dep_proxy.rb +0 -55
- data/bundler/lib/bundler/gemdeps.rb +0 -29
- data/bundler/lib/bundler/psyched_yaml.rb +0 -22
- data/bundler/lib/bundler/templates/gems.rb +0 -8
- data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
- data/bundler/lib/bundler/vendor/molinillo/LICENSE +0 -9
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -143
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
- data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
- data/bundler/lib/bundler/version_ranges.rb +0 -122
- data/lib/rubygems/psych_additions.rb +0 -10
- data/lib/rubygems/server.rb +0 -882
- data/test/rubygems/bogussources.rb +0 -9
- data/test/rubygems/data/null-type.gemspec.rz +0 -0
- data/test/rubygems/test_gem_server.rb +0 -608
- /data/bundler/lib/bundler/templates/newgem/ext/newgem/{extconf.rb.tt → extconf-c.rb.tt} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
require_relative
|
|
3
|
-
require
|
|
4
|
-
require
|
|
2
|
+
require_relative "helper"
|
|
3
|
+
require "rubygems/commands/signin_command"
|
|
4
|
+
require "rubygems/installer"
|
|
5
5
|
|
|
6
6
|
class TestGemCommandsSigninCommand < Gem::TestCase
|
|
7
7
|
def setup
|
|
@@ -34,7 +34,7 @@ class TestGemCommandsSigninCommand < Gem::TestCase
|
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
def test_execute_when_already_signed_in_with_same_host
|
|
37
|
-
host =
|
|
37
|
+
host = "http://some-gemcutter-compatible-host.org"
|
|
38
38
|
|
|
39
39
|
util_capture(nil, host) { @cmd.execute }
|
|
40
40
|
old_credentials = load_yaml_file Gem.configuration.credentials_path
|
|
@@ -46,10 +46,10 @@ class TestGemCommandsSigninCommand < Gem::TestCase
|
|
|
46
46
|
end
|
|
47
47
|
|
|
48
48
|
def test_execute_when_already_signed_in_with_different_host
|
|
49
|
-
api_key =
|
|
49
|
+
api_key = "a5fdbb6ba150cbb83aad2bb2fede64cf04045xxxx"
|
|
50
50
|
|
|
51
51
|
util_capture(nil, nil, api_key) { @cmd.execute }
|
|
52
|
-
host =
|
|
52
|
+
host = "http://some-gemcutter-compatible-host.org"
|
|
53
53
|
|
|
54
54
|
util_capture(nil, host, api_key) { @cmd.execute }
|
|
55
55
|
credentials = load_yaml_file Gem.configuration.credentials_path
|
|
@@ -60,30 +60,55 @@ class TestGemCommandsSigninCommand < Gem::TestCase
|
|
|
60
60
|
end
|
|
61
61
|
|
|
62
62
|
def test_execute_with_host_supplied
|
|
63
|
-
host =
|
|
63
|
+
host = "http://some-gemcutter-compatible-host.org"
|
|
64
64
|
|
|
65
65
|
sign_in_ui = util_capture(nil, host) { @cmd.execute }
|
|
66
66
|
assert_match %r{Enter your #{host} credentials.}, sign_in_ui.output
|
|
67
67
|
assert_match %r{Signed in.}, sign_in_ui.output
|
|
68
68
|
|
|
69
|
-
api_key =
|
|
69
|
+
api_key = "a5fdbb6ba150cbb83aad2bb2fede64cf040453903"
|
|
70
70
|
credentials = load_yaml_file Gem.configuration.credentials_path
|
|
71
71
|
assert_equal api_key, credentials[host]
|
|
72
72
|
end
|
|
73
73
|
|
|
74
|
+
def test_execute_with_host_permanent_redirect
|
|
75
|
+
host = "http://rubygems.example/"
|
|
76
|
+
ENV["RUBYGEMS_HOST"] = host
|
|
77
|
+
path = "/api/v1/api_key"
|
|
78
|
+
redirected_uri = "http://rubygems.example#{path}"
|
|
79
|
+
fetcher = Gem::FakeFetcher.new
|
|
80
|
+
fetcher.data["#{host}#{path}"] = HTTPResponseFactory.create(
|
|
81
|
+
body: "",
|
|
82
|
+
code: "308",
|
|
83
|
+
msg: "Permanent Redirect",
|
|
84
|
+
headers: { "location" => redirected_uri }
|
|
85
|
+
)
|
|
86
|
+
Gem::RemoteFetcher.fetcher = fetcher
|
|
87
|
+
ui = Gem::MockGemUi.new("you@example.com\nsecret\n\n\n\n\n\n\n\n\n")
|
|
88
|
+
|
|
89
|
+
assert_raise Gem::MockGemUi::TermError do
|
|
90
|
+
use_ui ui do
|
|
91
|
+
@cmd.execute
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
response = "The request has redirected permanently to #{redirected_uri}. Please check your defined push host URL."
|
|
96
|
+
assert_match response, ui.output
|
|
97
|
+
end
|
|
98
|
+
|
|
74
99
|
def test_execute_with_valid_creds_set_for_default_host
|
|
75
100
|
util_capture { @cmd.execute }
|
|
76
101
|
|
|
77
|
-
api_key =
|
|
102
|
+
api_key = "a5fdbb6ba150cbb83aad2bb2fede64cf040453903"
|
|
78
103
|
credentials = load_yaml_file Gem.configuration.credentials_path
|
|
79
104
|
|
|
80
105
|
assert_equal api_key, credentials[:rubygems_api_key]
|
|
81
106
|
end
|
|
82
107
|
|
|
83
|
-
def
|
|
84
|
-
email =
|
|
85
|
-
password =
|
|
86
|
-
api_key =
|
|
108
|
+
def test_execute_with_key_name_and_scope
|
|
109
|
+
email = "you@example.com"
|
|
110
|
+
password = "secret"
|
|
111
|
+
api_key = "1234"
|
|
87
112
|
fetcher = Gem::RemoteFetcher.fetcher
|
|
88
113
|
|
|
89
114
|
key_name_ui = Gem::MockGemUi.new "#{email}\n#{password}\ntest-key\n\ny\n\n\n\n\n\n"
|
|
@@ -92,31 +117,134 @@ class TestGemCommandsSigninCommand < Gem::TestCase
|
|
|
92
117
|
user = ENV["USER"] || ENV["USERNAME"]
|
|
93
118
|
|
|
94
119
|
assert_match "API Key name [#{Socket.gethostname}-#{user}", key_name_ui.output
|
|
95
|
-
assert_match "index_rubygems [
|
|
96
|
-
assert_match "push_rubygem [
|
|
97
|
-
assert_match "yank_rubygem [
|
|
98
|
-
assert_match "add_owner [
|
|
99
|
-
assert_match "remove_owner [
|
|
100
|
-
assert_match "access_webhooks [
|
|
101
|
-
assert_match "show_dashboard [
|
|
120
|
+
assert_match "index_rubygems [yN]", key_name_ui.output
|
|
121
|
+
assert_match "push_rubygem [yN]", key_name_ui.output
|
|
122
|
+
assert_match "yank_rubygem [yN]", key_name_ui.output
|
|
123
|
+
assert_match "add_owner [yN]", key_name_ui.output
|
|
124
|
+
assert_match "remove_owner [yN]", key_name_ui.output
|
|
125
|
+
assert_match "access_webhooks [yN]", key_name_ui.output
|
|
126
|
+
assert_match "show_dashboard [yN]", key_name_ui.output
|
|
102
127
|
assert_equal "name=test-key&push_rubygem=true", fetcher.last_request.body
|
|
103
128
|
|
|
104
129
|
credentials = load_yaml_file Gem.configuration.credentials_path
|
|
105
130
|
assert_equal api_key, credentials[:rubygems_api_key]
|
|
106
131
|
end
|
|
107
132
|
|
|
133
|
+
def test_execute_with_key_name_scope_and_mfa_level_of_ui_only
|
|
134
|
+
email = "you@example.com"
|
|
135
|
+
password = "secret"
|
|
136
|
+
api_key = "1234"
|
|
137
|
+
fetcher = Gem::RemoteFetcher.fetcher
|
|
138
|
+
mfa_level = "ui_only"
|
|
139
|
+
|
|
140
|
+
key_name_ui = Gem::MockGemUi.new "#{email}\n#{password}\ntest-key\n\ny\n\n\n\n\n\ny"
|
|
141
|
+
util_capture(key_name_ui, nil, api_key, fetcher, mfa_level) { @cmd.execute }
|
|
142
|
+
|
|
143
|
+
user = ENV["USER"] || ENV["USERNAME"]
|
|
144
|
+
|
|
145
|
+
assert_match "API Key name [#{Socket.gethostname}-#{user}", key_name_ui.output
|
|
146
|
+
assert_match "index_rubygems [yN]", key_name_ui.output
|
|
147
|
+
assert_match "push_rubygem [yN]", key_name_ui.output
|
|
148
|
+
assert_match "yank_rubygem [yN]", key_name_ui.output
|
|
149
|
+
assert_match "add_owner [yN]", key_name_ui.output
|
|
150
|
+
assert_match "remove_owner [yN]", key_name_ui.output
|
|
151
|
+
assert_match "access_webhooks [yN]", key_name_ui.output
|
|
152
|
+
assert_match "show_dashboard [yN]", key_name_ui.output
|
|
153
|
+
assert_match "Would you like to enable MFA for this key? (strongly recommended) [yn]", key_name_ui.output
|
|
154
|
+
assert_equal "name=test-key&push_rubygem=true&mfa=true", fetcher.last_request.body
|
|
155
|
+
|
|
156
|
+
credentials = load_yaml_file Gem.configuration.credentials_path
|
|
157
|
+
assert_equal api_key, credentials[:rubygems_api_key]
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def test_execute_with_key_name_scope_and_mfa_level_of_gem_signin
|
|
161
|
+
email = "you@example.com"
|
|
162
|
+
password = "secret"
|
|
163
|
+
api_key = "1234"
|
|
164
|
+
fetcher = Gem::RemoteFetcher.fetcher
|
|
165
|
+
mfa_level = "ui_and_gem_signin"
|
|
166
|
+
|
|
167
|
+
key_name_ui = Gem::MockGemUi.new "#{email}\n#{password}\ntest-key\n\ny\n\n\n\n\n\ny"
|
|
168
|
+
util_capture(key_name_ui, nil, api_key, fetcher, mfa_level) { @cmd.execute }
|
|
169
|
+
|
|
170
|
+
user = ENV["USER"] || ENV["USERNAME"]
|
|
171
|
+
|
|
172
|
+
assert_match "API Key name [#{Socket.gethostname}-#{user}", key_name_ui.output
|
|
173
|
+
assert_match "index_rubygems [yN]", key_name_ui.output
|
|
174
|
+
assert_match "push_rubygem [yN]", key_name_ui.output
|
|
175
|
+
assert_match "yank_rubygem [yN]", key_name_ui.output
|
|
176
|
+
assert_match "add_owner [yN]", key_name_ui.output
|
|
177
|
+
assert_match "remove_owner [yN]", key_name_ui.output
|
|
178
|
+
assert_match "access_webhooks [yN]", key_name_ui.output
|
|
179
|
+
assert_match "show_dashboard [yN]", key_name_ui.output
|
|
180
|
+
assert_match "Would you like to enable MFA for this key? (strongly recommended) [yn]", key_name_ui.output
|
|
181
|
+
assert_equal "name=test-key&push_rubygem=true&mfa=true", fetcher.last_request.body
|
|
182
|
+
|
|
183
|
+
credentials = load_yaml_file Gem.configuration.credentials_path
|
|
184
|
+
assert_equal api_key, credentials[:rubygems_api_key]
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
def test_execute_with_warnings
|
|
188
|
+
email = "you@example.com"
|
|
189
|
+
password = "secret"
|
|
190
|
+
api_key = "1234"
|
|
191
|
+
fetcher = Gem::RemoteFetcher.fetcher
|
|
192
|
+
mfa_level = "disabled"
|
|
193
|
+
warning = "/[WARNING/] For protection of your account and gems"
|
|
194
|
+
|
|
195
|
+
key_name_ui = Gem::MockGemUi.new "#{email}\n#{password}\ntest-key\n\ny\n\n\n\n\n\ny"
|
|
196
|
+
util_capture(key_name_ui, nil, api_key, fetcher, mfa_level, warning) { @cmd.execute }
|
|
197
|
+
|
|
198
|
+
assert_match warning, key_name_ui.output
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
def test_execute_on_gemserver_without_profile_me_endpoint
|
|
202
|
+
host = "http://some-gemcutter-compatible-host.org"
|
|
203
|
+
|
|
204
|
+
email = "you@example.com"
|
|
205
|
+
password = "secret"
|
|
206
|
+
api_key = "1234"
|
|
207
|
+
fetcher = Gem::RemoteFetcher.fetcher
|
|
208
|
+
|
|
209
|
+
key_name_ui = Gem::MockGemUi.new "#{email}\n#{password}\ntest-key\n\ny\n\n\n\n\n\ny"
|
|
210
|
+
|
|
211
|
+
# Set the expected response for the Web-API supplied
|
|
212
|
+
ENV["RUBYGEMS_HOST"] = host
|
|
213
|
+
data_key = "#{ENV['RUBYGEMS_HOST']}/api/v1/api_key"
|
|
214
|
+
fetcher.data[data_key] = HTTPResponseFactory.create(body: api_key, code: 200, msg: "OK")
|
|
215
|
+
|
|
216
|
+
use_ui key_name_ui do
|
|
217
|
+
@cmd.execute
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
user = ENV["USER"] || ENV["USERNAME"]
|
|
221
|
+
|
|
222
|
+
assert_match "API Key name [#{Socket.gethostname}-#{user}", key_name_ui.output
|
|
223
|
+
assert_match "index_rubygems [yN]", key_name_ui.output
|
|
224
|
+
assert_match "push_rubygem [yN]", key_name_ui.output
|
|
225
|
+
assert_match "yank_rubygem [yN]", key_name_ui.output
|
|
226
|
+
assert_match "add_owner [yN]", key_name_ui.output
|
|
227
|
+
assert_match "remove_owner [yN]", key_name_ui.output
|
|
228
|
+
assert_match "access_webhooks [yN]", key_name_ui.output
|
|
229
|
+
assert_match "show_dashboard [yN]", key_name_ui.output
|
|
230
|
+
assert_equal "name=test-key&push_rubygem=true", fetcher.last_request.body
|
|
231
|
+
end
|
|
232
|
+
|
|
108
233
|
# Utility method to capture IO/UI within the block passed
|
|
109
234
|
|
|
110
|
-
def util_capture(ui_stub = nil, host = nil, api_key = nil, fetcher = Gem::FakeFetcher.new)
|
|
111
|
-
api_key
|
|
112
|
-
response
|
|
113
|
-
|
|
114
|
-
|
|
235
|
+
def util_capture(ui_stub = nil, host = nil, api_key = nil, fetcher = Gem::FakeFetcher.new, mfa_level = "disabled", warning = nil)
|
|
236
|
+
api_key ||= "a5fdbb6ba150cbb83aad2bb2fede64cf040453903"
|
|
237
|
+
response = HTTPResponseFactory.create(body: api_key, code: 200, msg: "OK")
|
|
238
|
+
profile_response = HTTPResponseFactory.create(body: "mfa: #{mfa_level}\nwarning: #{warning}", code: 200, msg: "OK")
|
|
239
|
+
email = "you@example.com"
|
|
240
|
+
password = "secret"
|
|
115
241
|
|
|
116
242
|
# Set the expected response for the Web-API supplied
|
|
117
|
-
ENV[
|
|
243
|
+
ENV["RUBYGEMS_HOST"] = host || Gem::DEFAULT_HOST
|
|
118
244
|
data_key = "#{ENV['RUBYGEMS_HOST']}/api/v1/api_key"
|
|
119
245
|
fetcher.data[data_key] = response
|
|
246
|
+
profile = "#{ENV['RUBYGEMS_HOST']}/api/v1/profile/me.yaml"
|
|
247
|
+
fetcher.data[profile] = profile_response
|
|
120
248
|
Gem::RemoteFetcher.fetcher = fetcher
|
|
121
249
|
|
|
122
250
|
sign_in_ui = ui_stub || Gem::MockGemUi.new("#{email}\n#{password}\n\n\n\n\n\n\n\n\n")
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require_relative
|
|
4
|
-
require
|
|
5
|
-
require
|
|
3
|
+
require_relative "helper"
|
|
4
|
+
require "rubygems/commands/signout_command"
|
|
5
|
+
require "rubygems/installer"
|
|
6
6
|
|
|
7
7
|
class TestGemCommandsSignoutCommand < Gem::TestCase
|
|
8
8
|
def setup
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
require_relative
|
|
3
|
-
require
|
|
2
|
+
require_relative "helper"
|
|
3
|
+
require "rubygems/commands/sources_command"
|
|
4
4
|
|
|
5
5
|
class TestGemCommandsSourcesCommand < Gem::TestCase
|
|
6
6
|
def setup
|
|
@@ -20,7 +20,7 @@ class TestGemCommandsSourcesCommand < Gem::TestCase
|
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
def test_initialize_proxy
|
|
23
|
-
assert @cmd.handles?([
|
|
23
|
+
assert @cmd.handles?(["--http-proxy", "http://proxy.example.com"])
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
def test_execute
|
|
@@ -37,12 +37,12 @@ class TestGemCommandsSourcesCommand < Gem::TestCase
|
|
|
37
37
|
EOF
|
|
38
38
|
|
|
39
39
|
assert_equal expected, @ui.output
|
|
40
|
-
assert_equal
|
|
40
|
+
assert_equal "", @ui.error
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
def test_execute_add
|
|
44
44
|
spec_fetcher do |fetcher|
|
|
45
|
-
fetcher.spec
|
|
45
|
+
fetcher.spec "a", 1
|
|
46
46
|
end
|
|
47
47
|
|
|
48
48
|
specs = Gem::Specification.map do |spec|
|
|
@@ -70,7 +70,7 @@ class TestGemCommandsSourcesCommand < Gem::TestCase
|
|
|
70
70
|
EOF
|
|
71
71
|
|
|
72
72
|
assert_equal expected, @ui.output
|
|
73
|
-
assert_equal
|
|
73
|
+
assert_equal "", @ui.error
|
|
74
74
|
end
|
|
75
75
|
|
|
76
76
|
def test_execute_add_allow_typo_squatting_source
|
|
@@ -161,7 +161,6 @@ class TestGemCommandsSourcesCommand < Gem::TestCase
|
|
|
161
161
|
ui = Gem::MockGemUi.new("n")
|
|
162
162
|
|
|
163
163
|
use_ui ui do
|
|
164
|
-
|
|
165
164
|
assert_raise Gem::MockGemUi::TermError do
|
|
166
165
|
@cmd.execute
|
|
167
166
|
end
|
|
@@ -182,7 +181,7 @@ class TestGemCommandsSourcesCommand < Gem::TestCase
|
|
|
182
181
|
|
|
183
182
|
uri = "http://beta-gems.example.com/specs.#{@marshal_version}.gz"
|
|
184
183
|
@fetcher.data[uri] = proc do
|
|
185
|
-
raise Gem::RemoteFetcher::FetchError.new(
|
|
184
|
+
raise Gem::RemoteFetcher::FetchError.new("it died", uri)
|
|
186
185
|
end
|
|
187
186
|
|
|
188
187
|
@cmd.handle_options %w[--add http://beta-gems.example.com]
|
|
@@ -199,7 +198,57 @@ Error fetching http://beta-gems.example.com:
|
|
|
199
198
|
EOF
|
|
200
199
|
|
|
201
200
|
assert_equal expected, @ui.output
|
|
202
|
-
assert_equal
|
|
201
|
+
assert_equal "", @ui.error
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
def test_execute_add_existent_source_invalid_uri
|
|
205
|
+
spec_fetcher
|
|
206
|
+
|
|
207
|
+
uri = "https://u:p@example.com/specs.#{@marshal_version}.gz"
|
|
208
|
+
|
|
209
|
+
@cmd.handle_options %w[--add https://u:p@example.com]
|
|
210
|
+
@fetcher.data[uri] = proc do
|
|
211
|
+
raise Gem::RemoteFetcher::FetchError.new("it died", uri)
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
use_ui @ui do
|
|
215
|
+
assert_raise Gem::MockGemUi::TermError do
|
|
216
|
+
@cmd.execute
|
|
217
|
+
end
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
expected = <<-EOF
|
|
221
|
+
Error fetching https://u:REDACTED@example.com:
|
|
222
|
+
\tit died (https://u:REDACTED@example.com/specs.#{@marshal_version}.gz)
|
|
223
|
+
EOF
|
|
224
|
+
|
|
225
|
+
assert_equal expected, @ui.output
|
|
226
|
+
assert_equal "", @ui.error
|
|
227
|
+
end
|
|
228
|
+
|
|
229
|
+
def test_execute_add_existent_source_invalid_uri_with_error_by_chance_including_the_uri_password
|
|
230
|
+
spec_fetcher
|
|
231
|
+
|
|
232
|
+
uri = "https://u:secret@example.com/specs.#{@marshal_version}.gz"
|
|
233
|
+
|
|
234
|
+
@cmd.handle_options %w[--add https://u:secret@example.com]
|
|
235
|
+
@fetcher.data[uri] = proc do
|
|
236
|
+
raise Gem::RemoteFetcher::FetchError.new("it secretly died", uri)
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
use_ui @ui do
|
|
240
|
+
assert_raise Gem::MockGemUi::TermError do
|
|
241
|
+
@cmd.execute
|
|
242
|
+
end
|
|
243
|
+
end
|
|
244
|
+
|
|
245
|
+
expected = <<-EOF
|
|
246
|
+
Error fetching https://u:REDACTED@example.com:
|
|
247
|
+
\tit secretly died (https://u:REDACTED@example.com/specs.#{@marshal_version}.gz)
|
|
248
|
+
EOF
|
|
249
|
+
|
|
250
|
+
assert_equal expected, @ui.output
|
|
251
|
+
assert_equal "", @ui.error
|
|
203
252
|
end
|
|
204
253
|
|
|
205
254
|
def test_execute_add_redundant_source
|
|
@@ -218,7 +267,7 @@ source #{@gem_repo} already present in the cache
|
|
|
218
267
|
EOF
|
|
219
268
|
|
|
220
269
|
assert_equal expected, @ui.output
|
|
221
|
-
assert_equal
|
|
270
|
+
assert_equal "", @ui.error
|
|
222
271
|
end
|
|
223
272
|
|
|
224
273
|
def test_execute_add_redundant_source_trailing_slash
|
|
@@ -238,7 +287,7 @@ source #{@gem_repo} already present in the cache
|
|
|
238
287
|
EOF
|
|
239
288
|
|
|
240
289
|
assert_equal expected, @ui.output
|
|
241
|
-
assert_equal
|
|
290
|
+
assert_equal "", @ui.error
|
|
242
291
|
|
|
243
292
|
# Re-add pre-existing gem source (w/o slash)
|
|
244
293
|
repo_without_slash = "http://gems.example.com"
|
|
@@ -255,7 +304,7 @@ http://gems.example.com added to sources
|
|
|
255
304
|
EOF
|
|
256
305
|
|
|
257
306
|
assert_equal expected, @ui.output
|
|
258
|
-
assert_equal
|
|
307
|
+
assert_equal "", @ui.error
|
|
259
308
|
|
|
260
309
|
# Re-add original gem source (w/ slash)
|
|
261
310
|
@cmd.handle_options %W[--add #{repo_with_slash}]
|
|
@@ -272,14 +321,14 @@ source http://gems.example.com/ already present in the cache
|
|
|
272
321
|
EOF
|
|
273
322
|
|
|
274
323
|
assert_equal expected, @ui.output
|
|
275
|
-
assert_equal
|
|
324
|
+
assert_equal "", @ui.error
|
|
276
325
|
end
|
|
277
326
|
|
|
278
327
|
def test_execute_add_http_rubygems_org
|
|
279
|
-
http_rubygems_org =
|
|
328
|
+
http_rubygems_org = "http://rubygems.org/"
|
|
280
329
|
|
|
281
330
|
spec_fetcher do |fetcher|
|
|
282
|
-
fetcher.spec
|
|
331
|
+
fetcher.spec "a", 1
|
|
283
332
|
end
|
|
284
333
|
|
|
285
334
|
specs = Gem::Specification.map do |spec|
|
|
@@ -344,10 +393,10 @@ source http://gems.example.com/ already present in the cache
|
|
|
344
393
|
end
|
|
345
394
|
|
|
346
395
|
def test_execute_add_https_rubygems_org
|
|
347
|
-
https_rubygems_org =
|
|
396
|
+
https_rubygems_org = "https://rubygems.org/"
|
|
348
397
|
|
|
349
398
|
spec_fetcher do |fetcher|
|
|
350
|
-
fetcher.spec
|
|
399
|
+
fetcher.spec "a", 1
|
|
351
400
|
end
|
|
352
401
|
|
|
353
402
|
specs = Gem::Specification.map do |spec|
|
|
@@ -397,7 +446,7 @@ beta-gems.example.com is not a URI
|
|
|
397
446
|
EOF
|
|
398
447
|
|
|
399
448
|
assert_equal expected, @ui.output
|
|
400
|
-
assert_equal
|
|
449
|
+
assert_equal "", @ui.error
|
|
401
450
|
end
|
|
402
451
|
|
|
403
452
|
def test_execute_clear_all
|
|
@@ -412,10 +461,10 @@ beta-gems.example.com is not a URI
|
|
|
412
461
|
EOF
|
|
413
462
|
|
|
414
463
|
assert_equal expected, @ui.output
|
|
415
|
-
assert_equal
|
|
464
|
+
assert_equal "", @ui.error
|
|
416
465
|
|
|
417
466
|
dir = Gem.spec_cache_dir
|
|
418
|
-
refute File.exist?(dir),
|
|
467
|
+
refute File.exist?(dir), "cache dir removed"
|
|
419
468
|
end
|
|
420
469
|
|
|
421
470
|
def test_execute_list
|
|
@@ -432,7 +481,7 @@ beta-gems.example.com is not a URI
|
|
|
432
481
|
EOF
|
|
433
482
|
|
|
434
483
|
assert_equal expected, @ui.output
|
|
435
|
-
assert_equal
|
|
484
|
+
assert_equal "", @ui.error
|
|
436
485
|
end
|
|
437
486
|
|
|
438
487
|
def test_execute_remove
|
|
@@ -445,7 +494,7 @@ beta-gems.example.com is not a URI
|
|
|
445
494
|
expected = "#{@gem_repo} removed from sources\n"
|
|
446
495
|
|
|
447
496
|
assert_equal expected, @ui.output
|
|
448
|
-
assert_equal
|
|
497
|
+
assert_equal "", @ui.error
|
|
449
498
|
end
|
|
450
499
|
|
|
451
500
|
def test_execute_remove_no_network
|
|
@@ -464,14 +513,14 @@ beta-gems.example.com is not a URI
|
|
|
464
513
|
expected = "#{@gem_repo} removed from sources\n"
|
|
465
514
|
|
|
466
515
|
assert_equal expected, @ui.output
|
|
467
|
-
assert_equal
|
|
516
|
+
assert_equal "", @ui.error
|
|
468
517
|
end
|
|
469
518
|
|
|
470
519
|
def test_execute_update
|
|
471
520
|
@cmd.handle_options %w[--update]
|
|
472
521
|
|
|
473
522
|
spec_fetcher do |fetcher|
|
|
474
|
-
fetcher.gem
|
|
523
|
+
fetcher.gem "a", 1
|
|
475
524
|
end
|
|
476
525
|
|
|
477
526
|
use_ui @ui do
|
|
@@ -479,6 +528,6 @@ beta-gems.example.com is not a URI
|
|
|
479
528
|
end
|
|
480
529
|
|
|
481
530
|
assert_equal "source cache successfully updated\n", @ui.output
|
|
482
|
-
assert_equal
|
|
531
|
+
assert_equal "", @ui.error
|
|
483
532
|
end
|
|
484
533
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
require_relative
|
|
3
|
-
require
|
|
2
|
+
require_relative "helper"
|
|
3
|
+
require "rubygems/commands/specification_command"
|
|
4
4
|
|
|
5
5
|
class TestGemCommandsSpecificationCommand < Gem::TestCase
|
|
6
6
|
def setup
|
|
@@ -10,7 +10,7 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
|
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
def test_execute
|
|
13
|
-
foo = util_spec
|
|
13
|
+
foo = util_spec "foo"
|
|
14
14
|
|
|
15
15
|
install_specs foo
|
|
16
16
|
|
|
@@ -22,12 +22,12 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
|
|
|
22
22
|
|
|
23
23
|
assert_match %r{Gem::Specification}, @ui.output
|
|
24
24
|
assert_match %r{name: foo}, @ui.output
|
|
25
|
-
assert_equal
|
|
25
|
+
assert_equal "", @ui.error
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
def test_execute_all
|
|
29
|
-
install_specs util_spec
|
|
30
|
-
install_specs util_spec
|
|
29
|
+
install_specs util_spec "foo", "0.0.1"
|
|
30
|
+
install_specs util_spec "foo", "0.0.2"
|
|
31
31
|
|
|
32
32
|
@cmd.options[:args] = %w[foo]
|
|
33
33
|
@cmd.options[:all] = true
|
|
@@ -40,12 +40,12 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
|
|
|
40
40
|
assert_match %r{name: foo}, @ui.output
|
|
41
41
|
assert_match %r{version: 0.0.1}, @ui.output
|
|
42
42
|
assert_match %r{version: 0.0.2}, @ui.output
|
|
43
|
-
assert_equal
|
|
43
|
+
assert_equal "", @ui.error
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
def test_execute_all_conflicts_with_version
|
|
47
|
-
util_spec
|
|
48
|
-
util_spec
|
|
47
|
+
util_spec "foo", "0.0.1"
|
|
48
|
+
util_spec "foo", "0.0.2"
|
|
49
49
|
|
|
50
50
|
@cmd.options[:args] = %w[foo]
|
|
51
51
|
@cmd.options[:all] = true
|
|
@@ -57,7 +57,7 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
|
|
|
57
57
|
end
|
|
58
58
|
end
|
|
59
59
|
|
|
60
|
-
assert_equal
|
|
60
|
+
assert_equal "", @ui.output
|
|
61
61
|
assert_equal "ERROR: Specify --all or -v, not both\n", @ui.error
|
|
62
62
|
end
|
|
63
63
|
|
|
@@ -70,7 +70,7 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
|
|
|
70
70
|
end
|
|
71
71
|
end
|
|
72
72
|
|
|
73
|
-
assert_equal
|
|
73
|
+
assert_equal "", @ui.output
|
|
74
74
|
assert_equal "ERROR: No gem matching 'foo (>= 0)' found\n", @ui.error
|
|
75
75
|
end
|
|
76
76
|
|
|
@@ -84,13 +84,13 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
|
|
|
84
84
|
end
|
|
85
85
|
end
|
|
86
86
|
|
|
87
|
-
assert_equal
|
|
87
|
+
assert_equal "", @ui.output
|
|
88
88
|
assert_equal "ERROR: No gem matching 'foo (= 1.3.2)' found\n", @ui.error
|
|
89
89
|
end
|
|
90
90
|
|
|
91
91
|
def test_execute_exact_match
|
|
92
|
-
install_specs util_spec
|
|
93
|
-
install_specs util_spec
|
|
92
|
+
install_specs util_spec "foo"
|
|
93
|
+
install_specs util_spec "foo_bar"
|
|
94
94
|
|
|
95
95
|
@cmd.options[:args] = %w[foo]
|
|
96
96
|
|
|
@@ -100,11 +100,11 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
|
|
|
100
100
|
|
|
101
101
|
assert_match %r{Gem::Specification}, @ui.output
|
|
102
102
|
assert_match %r{name: foo}, @ui.output
|
|
103
|
-
assert_equal
|
|
103
|
+
assert_equal "", @ui.error
|
|
104
104
|
end
|
|
105
105
|
|
|
106
106
|
def test_execute_field
|
|
107
|
-
foo = util_spec
|
|
107
|
+
foo = util_spec "foo", "2"
|
|
108
108
|
|
|
109
109
|
install_specs foo
|
|
110
110
|
|
|
@@ -118,7 +118,7 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
|
|
|
118
118
|
end
|
|
119
119
|
|
|
120
120
|
def test_execute_file
|
|
121
|
-
foo = util_spec
|
|
121
|
+
foo = util_spec "foo" do |s|
|
|
122
122
|
s.files = %w[lib/code.rb]
|
|
123
123
|
end
|
|
124
124
|
|
|
@@ -132,11 +132,11 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
|
|
|
132
132
|
|
|
133
133
|
assert_match %r{Gem::Specification}, @ui.output
|
|
134
134
|
assert_match %r{name: foo}, @ui.output
|
|
135
|
-
assert_equal
|
|
135
|
+
assert_equal "", @ui.error
|
|
136
136
|
end
|
|
137
137
|
|
|
138
138
|
def test_execute_marshal
|
|
139
|
-
foo = util_spec
|
|
139
|
+
foo = util_spec "foo", "2"
|
|
140
140
|
|
|
141
141
|
install_specs foo
|
|
142
142
|
|
|
@@ -148,12 +148,12 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
|
|
|
148
148
|
end
|
|
149
149
|
|
|
150
150
|
assert_equal foo, Marshal.load(@ui.output)
|
|
151
|
-
assert_equal
|
|
151
|
+
assert_equal "", @ui.error
|
|
152
152
|
end
|
|
153
153
|
|
|
154
154
|
def test_execute_remote
|
|
155
155
|
spec_fetcher do |fetcher|
|
|
156
|
-
fetcher.spec
|
|
156
|
+
fetcher.spec "foo", 1
|
|
157
157
|
end
|
|
158
158
|
|
|
159
159
|
@cmd.options[:args] = %w[foo]
|
|
@@ -169,8 +169,8 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
|
|
|
169
169
|
|
|
170
170
|
def test_execute_remote_with_version
|
|
171
171
|
spec_fetcher do |fetcher|
|
|
172
|
-
fetcher.spec
|
|
173
|
-
fetcher.spec
|
|
172
|
+
fetcher.spec "foo", "1"
|
|
173
|
+
fetcher.spec "foo", "2"
|
|
174
174
|
end
|
|
175
175
|
|
|
176
176
|
@cmd.options[:args] = %w[foo]
|
|
@@ -190,9 +190,9 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
|
|
|
190
190
|
original_platforms = Gem.platforms.dup
|
|
191
191
|
|
|
192
192
|
spec_fetcher do |fetcher|
|
|
193
|
-
fetcher.spec
|
|
194
|
-
fetcher.spec
|
|
195
|
-
s.platform =
|
|
193
|
+
fetcher.spec "foo", "1"
|
|
194
|
+
fetcher.spec "foo", "1" do |s|
|
|
195
|
+
s.platform = "x86_64-linux"
|
|
196
196
|
end
|
|
197
197
|
end
|
|
198
198
|
|
|
@@ -216,8 +216,8 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
|
|
|
216
216
|
|
|
217
217
|
def test_execute_remote_without_prerelease
|
|
218
218
|
spec_fetcher do |fetcher|
|
|
219
|
-
fetcher.spec
|
|
220
|
-
fetcher.spec
|
|
219
|
+
fetcher.spec "foo", "2.0.0"
|
|
220
|
+
fetcher.spec "foo", "2.0.1.pre"
|
|
221
221
|
end
|
|
222
222
|
|
|
223
223
|
@cmd.options[:args] = %w[foo]
|
|
@@ -237,8 +237,8 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
|
|
|
237
237
|
|
|
238
238
|
def test_execute_remote_with_prerelease
|
|
239
239
|
spec_fetcher do |fetcher|
|
|
240
|
-
fetcher.spec
|
|
241
|
-
fetcher.spec
|
|
240
|
+
fetcher.spec "foo", "2.0.0"
|
|
241
|
+
fetcher.spec "foo", "2.0.1.pre"
|
|
242
242
|
end
|
|
243
243
|
|
|
244
244
|
@cmd.options[:args] = %w[foo]
|
|
@@ -258,7 +258,7 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
|
|
|
258
258
|
end
|
|
259
259
|
|
|
260
260
|
def test_execute_ruby
|
|
261
|
-
foo = util_spec
|
|
261
|
+
foo = util_spec "foo"
|
|
262
262
|
|
|
263
263
|
install_specs foo
|
|
264
264
|
|
|
@@ -271,6 +271,6 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
|
|
|
271
271
|
|
|
272
272
|
assert_match %r{Gem::Specification.new}, @ui.output
|
|
273
273
|
assert_match %r{s.name = "foo"}, @ui.output
|
|
274
|
-
assert_equal
|
|
274
|
+
assert_equal "", @ui.error
|
|
275
275
|
end
|
|
276
276
|
end
|