rubygems-update 3.1.6 → 3.3.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 +4 -4
- data/{History.txt → CHANGELOG.md} +1452 -514
- data/CODE_OF_CONDUCT.md +55 -19
- data/CONTRIBUTING.md +74 -27
- data/Manifest.txt +154 -117
- data/POLICIES.md +27 -19
- data/README.md +10 -8
- data/UPGRADING.md +5 -81
- data/bin/gem +3 -8
- data/bin/update_rubygems +5 -5
- data/bundler/CHANGELOG.md +2358 -1430
- data/bundler/README.md +7 -9
- data/bundler/UPGRADING.md +27 -34
- data/bundler/bundler.gemspec +8 -11
- data/bundler/exe/bundle +10 -8
- data/bundler/exe/bundler +1 -1
- data/bundler/lib/bundler/.document +1 -0
- data/bundler/lib/bundler/build_metadata.rb +4 -12
- data/bundler/lib/bundler/cli/add.rb +1 -1
- data/bundler/lib/bundler/cli/binstubs.rb +6 -2
- data/bundler/lib/bundler/cli/cache.rb +3 -8
- data/bundler/lib/bundler/cli/check.rb +4 -2
- data/bundler/lib/bundler/cli/clean.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +31 -3
- data/bundler/lib/bundler/cli/config.rb +10 -1
- data/bundler/lib/bundler/cli/console.rb +1 -1
- data/bundler/lib/bundler/cli/doctor.rb +25 -6
- data/bundler/lib/bundler/cli/exec.rb +5 -10
- data/bundler/lib/bundler/cli/fund.rb +36 -0
- data/bundler/lib/bundler/cli/gem.rb +219 -28
- data/bundler/lib/bundler/cli/info.rb +38 -6
- data/bundler/lib/bundler/cli/init.rb +3 -3
- data/bundler/lib/bundler/cli/inject.rb +1 -1
- data/bundler/lib/bundler/cli/install.rb +25 -54
- data/bundler/lib/bundler/cli/issue.rb +5 -4
- data/bundler/lib/bundler/cli/list.rb +19 -11
- data/bundler/lib/bundler/cli/lock.rb +5 -1
- data/bundler/lib/bundler/cli/open.rb +1 -2
- data/bundler/lib/bundler/cli/outdated.rb +105 -76
- data/bundler/lib/bundler/cli/platform.rb +2 -2
- data/bundler/lib/bundler/cli/plugin.rb +10 -0
- data/bundler/lib/bundler/cli/pristine.rb +5 -0
- data/bundler/lib/bundler/cli/remove.rb +1 -2
- data/bundler/lib/bundler/cli/show.rb +2 -2
- data/bundler/lib/bundler/cli/update.rb +20 -9
- data/bundler/lib/bundler/cli.rb +106 -83
- data/bundler/lib/bundler/compact_index_client/cache.rb +6 -23
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
- data/bundler/lib/bundler/compact_index_client/updater.rb +29 -25
- data/bundler/lib/bundler/compact_index_client.rb +3 -9
- data/bundler/lib/bundler/current_ruby.rb +17 -6
- data/bundler/lib/bundler/definition.rb +297 -396
- data/bundler/lib/bundler/dep_proxy.rb +16 -9
- data/bundler/lib/bundler/dependency.rb +22 -77
- data/bundler/lib/bundler/digest.rb +71 -0
- data/bundler/lib/bundler/dsl.rb +76 -83
- data/bundler/lib/bundler/endpoint_specification.rb +16 -14
- data/bundler/lib/bundler/env.rb +2 -2
- data/bundler/lib/bundler/environment_preserver.rb +29 -2
- data/bundler/lib/bundler/errors.rb +30 -3
- data/bundler/lib/bundler/feature_flag.rb +0 -9
- data/bundler/lib/bundler/fetcher/base.rb +7 -9
- data/bundler/lib/bundler/fetcher/compact_index.rb +11 -16
- data/bundler/lib/bundler/fetcher/downloader.rb +10 -7
- data/bundler/lib/bundler/fetcher/index.rb +2 -30
- data/bundler/lib/bundler/fetcher.rb +24 -25
- data/bundler/lib/bundler/friendly_errors.rb +46 -47
- data/bundler/lib/bundler/gem_helper.rb +53 -31
- data/bundler/lib/bundler/gem_helpers.rb +43 -24
- data/bundler/lib/bundler/gem_version_promoter.rb +10 -20
- data/bundler/lib/bundler/graph.rb +1 -1
- data/bundler/lib/bundler/index.rb +19 -25
- data/bundler/lib/bundler/injector.rb +38 -6
- data/bundler/lib/bundler/inline.rb +4 -13
- data/bundler/lib/bundler/installer/gem_installer.rb +19 -24
- data/bundler/lib/bundler/installer/parallel_installer.rb +46 -25
- data/bundler/lib/bundler/installer/standalone.rb +58 -11
- data/bundler/lib/bundler/installer.rb +51 -81
- data/bundler/lib/bundler/lazy_specification.rb +79 -36
- data/bundler/lib/bundler/lockfile_generator.rb +3 -3
- data/bundler/lib/bundler/lockfile_parser.rb +19 -44
- data/bundler/lib/bundler/man/.document +1 -0
- data/bundler/{man → lib/bundler/man}/bundle-add.1 +21 -5
- data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +16 -4
- data/bundler/{man → lib/bundler/man}/bundle-binstubs.1 +5 -3
- data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +2 -4
- data/bundler/{man → lib/bundler/man}/bundle-cache.1 +7 -1
- data/bundler/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +7 -0
- data/bundler/{man → lib/bundler/man}/bundle-check.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-clean.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-config.1 +65 -47
- data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +74 -65
- data/bundler/lib/bundler/man/bundle-console.1 +53 -0
- data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
- data/bundler/{man → lib/bundler/man}/bundle-doctor.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-exec.1 +2 -2
- data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-gem.1 +38 -3
- data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +46 -7
- data/bundler/lib/bundler/man/bundle-help.1 +13 -0
- data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
- data/bundler/{man → lib/bundler/man}/bundle-info.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-init.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-inject.1 +5 -2
- data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +3 -1
- data/bundler/{man → lib/bundler/man}/bundle-install.1 +35 -4
- data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +33 -5
- data/bundler/{man → lib/bundler/man}/bundle-list.1 +7 -7
- data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
- data/bundler/{man → lib/bundler/man}/bundle-lock.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-open.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-outdated.1 +3 -10
- data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +1 -10
- data/bundler/{man → lib/bundler/man}/bundle-platform.1 +16 -6
- data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +14 -7
- data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
- data/bundler/{man → lib/bundler/man}/bundle-pristine.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-remove.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-show.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-update.1 +5 -5
- data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +5 -4
- data/bundler/lib/bundler/man/bundle-version.1 +35 -0
- data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
- data/bundler/{man → lib/bundler/man}/bundle-viz.1 +4 -1
- data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +2 -0
- data/bundler/{man → lib/bundler/man}/bundle.1 +15 -10
- data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +12 -7
- data/bundler/{man → lib/bundler/man}/gemfile.5 +106 -80
- data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +94 -83
- data/bundler/{man → 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 +2 -2
- data/bundler/lib/bundler/plugin/api/source.rb +25 -9
- data/bundler/lib/bundler/plugin/dsl.rb +1 -1
- data/bundler/lib/bundler/plugin/index.rb +13 -1
- data/bundler/lib/bundler/plugin/installer/git.rb +0 -4
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -5
- data/bundler/lib/bundler/plugin/installer.rb +11 -11
- data/bundler/lib/bundler/plugin/source_list.rb +5 -1
- data/bundler/lib/bundler/plugin.rb +58 -11
- data/bundler/lib/bundler/process_lock.rb +1 -1
- data/bundler/lib/bundler/remote_specification.rb +11 -6
- data/bundler/lib/bundler/resolver/base.rb +50 -0
- data/bundler/lib/bundler/resolver/spec_group.rb +64 -57
- data/bundler/lib/bundler/resolver.rb +234 -230
- data/bundler/lib/bundler/retry.rb +2 -2
- data/bundler/lib/bundler/ruby_dsl.rb +1 -1
- data/bundler/lib/bundler/ruby_version.rb +6 -19
- data/bundler/lib/bundler/rubygems_ext.rb +194 -33
- data/bundler/lib/bundler/rubygems_gem_installer.rb +87 -16
- data/bundler/lib/bundler/rubygems_integration.rb +71 -153
- data/bundler/lib/bundler/runtime.rb +22 -26
- data/bundler/lib/bundler/self_manager.rb +168 -0
- data/bundler/lib/bundler/settings.rb +145 -66
- data/bundler/lib/bundler/setup.rb +2 -2
- data/bundler/lib/bundler/shared_helpers.rb +17 -32
- data/bundler/lib/bundler/similarity_detector.rb +1 -1
- data/bundler/lib/bundler/source/git/git_proxy.rb +88 -84
- data/bundler/lib/bundler/source/git.rb +50 -32
- data/bundler/lib/bundler/source/metadata.rb +3 -7
- data/bundler/lib/bundler/source/path/installer.rb +10 -10
- data/bundler/lib/bundler/source/path.rb +10 -4
- data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
- data/bundler/lib/bundler/source/rubygems.rb +201 -179
- data/bundler/lib/bundler/source/rubygems_aggregate.rb +68 -0
- data/bundler/lib/bundler/source.rb +25 -5
- data/bundler/lib/bundler/source_list.rb +105 -63
- data/bundler/lib/bundler/source_map.rb +71 -0
- data/bundler/lib/bundler/spec_set.rb +62 -57
- data/bundler/lib/bundler/stub_specification.rb +30 -10
- data/bundler/lib/bundler/templates/Executable +2 -4
- data/bundler/lib/bundler/templates/Executable.bundler +8 -8
- data/bundler/lib/bundler/templates/Executable.standalone +2 -4
- data/bundler/lib/bundler/templates/Gemfile +0 -2
- data/bundler/lib/bundler/templates/gems.rb +0 -3
- data/bundler/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
- data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +12 -1
- data/bundler/lib/bundler/templates/newgem/README.md.tt +9 -14
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +32 -5
- data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +27 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
- data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +27 -17
- data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
- data/bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
- data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
- data/bundler/lib/bundler/templates/newgem/standard.yml.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
- data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/test_newgem.rb.tt} +3 -1
- data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
- data/bundler/lib/bundler/ui/shell.rb +6 -6
- data/bundler/lib/bundler/uri_credentials_filter.rb +3 -1
- 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 +19 -21
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +57 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +39 -74
- data/bundler/lib/bundler/vendor/fileutils/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/molinillo/LICENSE +9 -0
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +7 -0
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +11 -5
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +37 -5
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +34 -28
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +12 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +49 -47
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +82 -189
- data/bundler/lib/bundler/vendor/thor/LICENSE.md +20 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +9 -7
- 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 +7 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
- 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 +10 -5
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +5 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +28 -9
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +27 -6
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +5 -1
- 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/thor/lib/thor.rb +5 -13
- data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -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 +17 -80
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +0 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +5 -6
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +0 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +0 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +0 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +1 -14
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +1 -12
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +84 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +22 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +0 -1
- data/bundler/lib/bundler/vendored_persistent.rb +0 -7
- data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
- data/bundler/lib/bundler/vendored_tsort.rb +4 -0
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler/worker.rb +20 -5
- data/bundler/lib/bundler/yaml_serializer.rb +1 -1
- data/bundler/lib/bundler.rb +79 -47
- data/hide_lib_for_update/note.txt +0 -4
- data/lib/rubygems/available_set.rb +7 -9
- data/lib/rubygems/basic_specification.rb +23 -21
- data/lib/rubygems/bundler_version_finder.rb +26 -53
- data/lib/rubygems/command.rb +48 -45
- data/lib/rubygems/command_manager.rb +20 -14
- data/lib/rubygems/commands/build_command.rb +47 -27
- data/lib/rubygems/commands/cert_command.rb +78 -75
- data/lib/rubygems/commands/check_command.rb +20 -22
- data/lib/rubygems/commands/cleanup_command.rb +30 -26
- data/lib/rubygems/commands/contents_command.rb +16 -18
- data/lib/rubygems/commands/dependency_command.rb +39 -51
- data/lib/rubygems/commands/environment_command.rb +11 -10
- data/lib/rubygems/commands/fetch_command.rb +33 -16
- data/lib/rubygems/commands/generate_index_command.rb +17 -19
- data/lib/rubygems/commands/help_command.rb +6 -6
- data/lib/rubygems/commands/info_command.rb +10 -7
- data/lib/rubygems/commands/install_command.rb +29 -27
- data/lib/rubygems/commands/list_command.rb +9 -8
- data/lib/rubygems/commands/lock_command.rb +5 -7
- data/lib/rubygems/commands/mirror_command.rb +3 -5
- data/lib/rubygems/commands/open_command.rb +10 -14
- data/lib/rubygems/commands/outdated_command.rb +5 -7
- data/lib/rubygems/commands/owner_command.rb +26 -16
- data/lib/rubygems/commands/pristine_command.rb +61 -49
- data/lib/rubygems/commands/push_command.rb +22 -59
- data/lib/rubygems/commands/query_command.rb +21 -351
- data/lib/rubygems/commands/rdoc_command.rb +23 -25
- data/lib/rubygems/commands/search_command.rb +8 -8
- data/lib/rubygems/commands/server_command.rb +16 -77
- data/lib/rubygems/commands/setup_command.rb +255 -229
- data/lib/rubygems/commands/signin_command.rb +9 -11
- data/lib/rubygems/commands/signout_command.rb +7 -9
- data/lib/rubygems/commands/sources_command.rb +27 -25
- data/lib/rubygems/commands/specification_command.rb +25 -21
- data/lib/rubygems/commands/stale_command.rb +3 -5
- data/lib/rubygems/commands/uninstall_command.rb +41 -43
- data/lib/rubygems/commands/unpack_command.rb +13 -15
- data/lib/rubygems/commands/update_command.rb +132 -74
- data/lib/rubygems/commands/which_command.rb +7 -9
- data/lib/rubygems/commands/yank_command.rb +16 -19
- data/lib/rubygems/compatibility.rb +4 -2
- data/lib/rubygems/config_file.rb +42 -26
- data/lib/rubygems/core_ext/kernel_gem.rb +1 -1
- data/lib/rubygems/core_ext/kernel_require.rb +6 -3
- data/lib/rubygems/core_ext/kernel_warn.rb +12 -13
- data/lib/rubygems/core_ext/tcpsocket_init.rb +52 -0
- data/lib/rubygems/defaults.rb +108 -32
- data/lib/rubygems/dependency.rb +21 -22
- data/lib/rubygems/dependency_installer.rb +19 -91
- data/lib/rubygems/dependency_list.rb +13 -15
- data/lib/rubygems/deprecate.rb +102 -8
- data/lib/rubygems/doctor.rb +22 -22
- data/lib/rubygems/errors.rb +6 -21
- data/lib/rubygems/exceptions.rb +33 -34
- data/lib/rubygems/ext/build_error.rb +2 -0
- data/lib/rubygems/ext/builder.rb +48 -54
- data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +23 -0
- data/lib/rubygems/ext/cargo_builder.rb +321 -0
- data/lib/rubygems/ext/cmake_builder.rb +6 -9
- data/lib/rubygems/ext/configure_builder.rb +5 -8
- data/lib/rubygems/ext/ext_conf_builder.rb +42 -66
- data/lib/rubygems/ext/rake_builder.rb +7 -10
- data/lib/rubygems/ext.rb +7 -6
- data/lib/rubygems/gem_runner.rb +15 -26
- data/lib/rubygems/gemcutter_utilities.rb +153 -32
- data/lib/rubygems/indexer.rb +30 -49
- data/lib/rubygems/install_default_message.rb +2 -2
- data/lib/rubygems/install_message.rb +2 -2
- data/lib/rubygems/install_update_options.rb +73 -64
- data/lib/rubygems/installer.rb +194 -151
- data/lib/rubygems/installer_uninstaller_utils.rb +29 -0
- data/lib/rubygems/local_remote_options.rb +22 -24
- data/lib/rubygems/mock_gem_ui.rb +2 -8
- data/lib/rubygems/name_tuple.rb +9 -14
- data/lib/rubygems/openssl.rb +7 -0
- data/lib/rubygems/optparse/.document +1 -0
- data/lib/rubygems/optparse/COPYING +56 -0
- data/lib/rubygems/optparse/lib/optionparser.rb +2 -0
- data/lib/rubygems/optparse/lib/optparse/ac.rb +54 -0
- data/lib/rubygems/optparse/lib/optparse/date.rb +18 -0
- data/lib/rubygems/optparse/lib/optparse/kwargs.rb +22 -0
- data/lib/rubygems/optparse/lib/optparse/shellwords.rb +7 -0
- data/lib/rubygems/optparse/lib/optparse/time.rb +11 -0
- data/lib/rubygems/optparse/lib/optparse/uri.rb +7 -0
- data/lib/rubygems/optparse/lib/optparse/version.rb +71 -0
- data/lib/rubygems/optparse/lib/optparse.rb +2303 -0
- data/lib/rubygems/optparse.rb +3 -0
- data/lib/rubygems/package/digest_io.rb +0 -2
- data/lib/rubygems/package/file_source.rb +2 -4
- data/lib/rubygems/package/io_source.rb +4 -2
- data/lib/rubygems/package/old.rb +9 -11
- data/lib/rubygems/package/tar_header.rb +54 -56
- data/lib/rubygems/package/tar_reader/entry.rb +2 -5
- data/lib/rubygems/package/tar_reader.rb +1 -4
- data/lib/rubygems/package/tar_writer.rb +8 -18
- data/lib/rubygems/package.rb +101 -117
- data/lib/rubygems/package_task.rb +5 -11
- data/lib/rubygems/path_support.rb +2 -9
- data/lib/rubygems/platform.rb +101 -76
- data/lib/rubygems/psych_tree.rb +1 -3
- data/lib/rubygems/query_utils.rb +351 -0
- data/lib/rubygems/rdoc.rb +2 -14
- data/lib/rubygems/remote_fetcher.rb +48 -74
- data/lib/rubygems/request/connection_pools.rb +6 -10
- data/lib/rubygems/request/http_pool.rb +2 -4
- data/lib/rubygems/request/https_pool.rb +0 -2
- data/lib/rubygems/request.rb +26 -31
- data/lib/rubygems/request_set/gem_dependency_api.rb +23 -25
- data/lib/rubygems/request_set/lockfile/parser.rb +26 -28
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -7
- data/lib/rubygems/request_set/lockfile.rb +17 -21
- data/lib/rubygems/request_set.rb +27 -40
- data/lib/rubygems/requirement.rb +28 -48
- data/lib/rubygems/resolver/activation_request.rb +12 -6
- data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
- data/lib/rubygems/resolver/api_set.rb +32 -25
- data/lib/rubygems/resolver/api_specification.rb +29 -15
- data/lib/rubygems/resolver/best_set.rb +7 -9
- data/lib/rubygems/resolver/composed_set.rb +3 -5
- data/lib/rubygems/resolver/conflict.rb +12 -14
- data/lib/rubygems/resolver/current_set.rb +0 -2
- data/lib/rubygems/resolver/dependency_request.rb +3 -5
- data/lib/rubygems/resolver/git_set.rb +2 -4
- data/lib/rubygems/resolver/git_specification.rb +6 -8
- data/lib/rubygems/resolver/index_set.rb +4 -6
- data/lib/rubygems/resolver/index_specification.rb +38 -7
- data/lib/rubygems/resolver/installed_specification.rb +4 -6
- data/lib/rubygems/resolver/installer_set.rb +66 -24
- data/lib/rubygems/resolver/local_specification.rb +2 -4
- data/lib/rubygems/resolver/lock_set.rb +6 -8
- data/lib/rubygems/resolver/lock_specification.rb +4 -6
- data/lib/rubygems/resolver/molinillo/LICENSE +9 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +8 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +51 -12
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +41 -8
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +76 -8
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +13 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +510 -165
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
- data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
- data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
- data/lib/rubygems/resolver/molinillo.rb +1 -1
- data/lib/rubygems/resolver/requirement_list.rb +0 -2
- data/lib/rubygems/resolver/set.rb +0 -3
- data/lib/rubygems/resolver/source_set.rb +0 -2
- data/lib/rubygems/resolver/spec_specification.rb +14 -2
- data/lib/rubygems/resolver/specification.rb +14 -4
- data/lib/rubygems/resolver/stats.rb +0 -2
- data/lib/rubygems/resolver/vendor_set.rb +1 -3
- data/lib/rubygems/resolver/vendor_specification.rb +3 -5
- data/lib/rubygems/resolver.rb +53 -51
- data/lib/rubygems/s3_uri_signer.rb +7 -15
- data/lib/rubygems/safe_yaml.rb +14 -16
- data/lib/rubygems/security/policies.rb +11 -11
- data/lib/rubygems/security/policy.rb +25 -29
- data/lib/rubygems/security/signer.rb +13 -16
- data/lib/rubygems/security/trust_dir.rb +4 -5
- data/lib/rubygems/security.rb +103 -69
- data/lib/rubygems/security_option.rb +7 -7
- data/lib/rubygems/source/git.rb +30 -30
- data/lib/rubygems/source/installed.rb +1 -3
- data/lib/rubygems/source/local.rb +4 -6
- data/lib/rubygems/source/lock.rb +0 -2
- data/lib/rubygems/source/specific_file.rb +1 -3
- data/lib/rubygems/source/vendor.rb +0 -2
- data/lib/rubygems/source.rb +44 -38
- data/lib/rubygems/source_list.rb +9 -16
- data/lib/rubygems/spec_fetcher.rb +49 -48
- data/lib/rubygems/specification.rb +338 -295
- data/lib/rubygems/specification_policy.rb +112 -61
- data/lib/rubygems/stub_specification.rb +21 -28
- data/lib/rubygems/text.rb +21 -20
- data/lib/rubygems/tsort/.document +1 -0
- data/lib/rubygems/tsort/LICENSE.txt +22 -0
- data/lib/rubygems/tsort/lib/tsort.rb +454 -0
- data/lib/rubygems/tsort.rb +3 -0
- data/lib/rubygems/uninstaller.rb +98 -45
- data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
- data/lib/rubygems/uri.rb +126 -0
- data/lib/rubygems/uri_formatter.rb +2 -3
- data/lib/rubygems/user_interaction.rb +43 -54
- data/lib/rubygems/util/licenses.rb +115 -10
- data/lib/rubygems/util/list.rb +0 -2
- data/lib/rubygems/util.rb +18 -12
- data/lib/rubygems/validator.rb +6 -8
- data/lib/rubygems/version.rb +29 -20
- data/lib/rubygems/version_option.rb +11 -5
- data/lib/rubygems.rb +192 -289
- data/rubygems-update.gemspec +4 -4
- data/setup.rb +11 -22
- 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/{lib/rubygems/test_case.rb → test/rubygems/helper.rb} +380 -314
- data/{lib → test}/rubygems/installer_test_case.rb +38 -24
- data/{lib → test}/rubygems/package/tar_test_case.rb +4 -6
- data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
- data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
- data/test/rubygems/plugin/exception/rubygems_plugin.rb +1 -1
- data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -2
- data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
- data/test/rubygems/private_ec_key.pem +9 -0
- data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
- data/test/rubygems/rubygems_plugin.rb +2 -4
- data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +4 -6
- data/test/rubygems/test_bundled_ca.rb +43 -50
- data/test/rubygems/test_config.rb +5 -7
- data/test/rubygems/test_deprecate.rb +87 -10
- data/test/rubygems/test_exit.rb +11 -0
- data/test/rubygems/test_gem.rb +719 -639
- data/test/rubygems/test_gem_available_set.rb +24 -26
- data/test/rubygems/test_gem_bundler_version_finder.rb +37 -44
- data/test/rubygems/test_gem_command.rb +78 -49
- data/test/rubygems/test_gem_command_manager.rb +98 -35
- data/test/rubygems/test_gem_commands_build_command.rb +275 -57
- data/test/rubygems/test_gem_commands_cert_command.rb +180 -125
- data/test/rubygems/test_gem_commands_check_command.rb +9 -11
- data/test/rubygems/test_gem_commands_cleanup_command.rb +78 -69
- data/test/rubygems/test_gem_commands_contents_command.rb +73 -42
- data/test/rubygems/test_gem_commands_dependency_command.rb +38 -40
- data/test/rubygems/test_gem_commands_environment_command.rb +60 -38
- data/test/rubygems/test_gem_commands_fetch_command.rb +163 -32
- data/test/rubygems/test_gem_commands_generate_index_command.rb +8 -14
- data/test/rubygems/test_gem_commands_help_command.rb +34 -16
- data/test/rubygems/test_gem_commands_info_command.rb +33 -9
- data/test/rubygems/test_gem_commands_install_command.rb +401 -198
- data/test/rubygems/test_gem_commands_list_command.rb +5 -7
- data/test/rubygems/test_gem_commands_lock_command.rb +11 -13
- data/test/rubygems/test_gem_commands_mirror.rb +3 -5
- data/test/rubygems/test_gem_commands_open_command.rb +16 -19
- data/test/rubygems/test_gem_commands_outdated_command.rb +23 -7
- data/test/rubygems/test_gem_commands_owner_command.rb +100 -46
- data/test/rubygems/test_gem_commands_pristine_command.rb +131 -99
- data/test/rubygems/test_gem_commands_push_command.rb +134 -66
- data/test/rubygems/test_gem_commands_query_command.rb +91 -91
- data/test/rubygems/test_gem_commands_search_command.rb +2 -4
- data/test/rubygems/test_gem_commands_server_command.rb +6 -50
- data/test/rubygems/test_gem_commands_setup_command.rb +288 -179
- data/test/rubygems/test_gem_commands_signin_command.rb +162 -28
- data/test/rubygems/test_gem_commands_signout_command.rb +3 -10
- data/test/rubygems/test_gem_commands_sources_command.rb +139 -32
- data/test/rubygems/test_gem_commands_specification_command.rb +81 -55
- data/test/rubygems/test_gem_commands_stale_command.rb +4 -6
- data/test/rubygems/test_gem_commands_uninstall_command.rb +80 -82
- data/test/rubygems/test_gem_commands_unpack_command.rb +32 -34
- data/test/rubygems/test_gem_commands_update_command.rb +335 -88
- data/test/rubygems/test_gem_commands_which_command.rb +12 -14
- data/test/rubygems/test_gem_commands_yank_command.rb +80 -44
- data/test/rubygems/test_gem_config_file.rb +114 -97
- data/test/rubygems/test_gem_dependency.rb +87 -87
- data/test/rubygems/test_gem_dependency_installer.rb +277 -391
- data/test/rubygems/test_gem_dependency_list.rb +57 -59
- data/test/rubygems/test_gem_dependency_resolution_error.rb +5 -7
- data/test/rubygems/test_gem_doctor.rb +73 -47
- data/test/rubygems/test_gem_ext_builder.rb +115 -109
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.lock +243 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.toml +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/build.rb +21 -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/src/lib.rs +27 -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 +243 -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/build.rb +21 -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 +39 -0
- data/test/rubygems/test_gem_ext_cargo_builder.rb +178 -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 +75 -0
- data/test/rubygems/test_gem_ext_cmake_builder.rb +31 -38
- data/test/rubygems/test_gem_ext_configure_builder.rb +23 -39
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +66 -82
- data/test/rubygems/test_gem_ext_rake_builder.rb +49 -32
- data/test/rubygems/test_gem_gem_runner.rb +51 -8
- data/test/rubygems/test_gem_gemcutter_utilities.rb +87 -76
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -6
- data/test/rubygems/test_gem_indexer.rb +62 -64
- data/test/rubygems/test_gem_install_update_options.rb +31 -21
- data/test/rubygems/test_gem_installer.rb +798 -491
- data/test/rubygems/test_gem_local_remote_options.rb +11 -13
- data/test/rubygems/test_gem_name_tuple.rb +4 -6
- data/test/rubygems/test_gem_package.rb +318 -283
- data/test/rubygems/test_gem_package_old.rb +18 -20
- data/test/rubygems/test_gem_package_tar_header.rb +64 -47
- data/test/rubygems/test_gem_package_tar_reader.rb +8 -10
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +18 -20
- data/test/rubygems/test_gem_package_tar_writer.rb +96 -100
- data/test/rubygems/test_gem_package_task.rb +58 -25
- data/test/rubygems/test_gem_path_support.rb +15 -21
- data/test/rubygems/test_gem_platform.rb +354 -201
- data/test/rubygems/test_gem_rdoc.rb +19 -21
- data/test/rubygems/test_gem_remote_fetcher.rb +376 -337
- data/test/rubygems/test_gem_request.rb +114 -86
- data/test/rubygems/test_gem_request_connection_pools.rb +30 -34
- data/test/rubygems/test_gem_request_set.rb +123 -124
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +222 -226
- data/test/rubygems/test_gem_request_set_lockfile.rb +93 -95
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +68 -70
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +136 -138
- data/test/rubygems/test_gem_requirement.rb +133 -54
- data/test/rubygems/test_gem_resolver.rb +149 -117
- data/test/rubygems/test_gem_resolver_activation_request.rb +6 -8
- data/test/rubygems/test_gem_resolver_api_set.rb +79 -78
- data/test/rubygems/test_gem_resolver_api_specification.rb +47 -49
- data/test/rubygems/test_gem_resolver_best_set.rb +43 -22
- data/test/rubygems/test_gem_resolver_composed_set.rb +1 -3
- data/test/rubygems/test_gem_resolver_conflict.rb +12 -14
- data/test/rubygems/test_gem_resolver_dependency_request.rb +15 -17
- data/test/rubygems/test_gem_resolver_git_set.rb +22 -24
- data/test/rubygems/test_gem_resolver_git_specification.rb +22 -23
- data/test/rubygems/test_gem_resolver_index_set.rb +14 -16
- data/test/rubygems/test_gem_resolver_index_specification.rb +16 -18
- data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -7
- data/test/rubygems/test_gem_resolver_installer_set.rb +104 -44
- data/test/rubygems/test_gem_resolver_local_specification.rb +7 -9
- data/test/rubygems/test_gem_resolver_lock_set.rb +15 -17
- data/test/rubygems/test_gem_resolver_lock_specification.rb +17 -19
- data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -3
- data/test/rubygems/test_gem_resolver_specification.rb +8 -12
- data/test/rubygems/test_gem_resolver_vendor_set.rb +9 -11
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +10 -12
- data/test/rubygems/test_gem_security.rb +104 -78
- data/test/rubygems/test_gem_security_policy.rb +92 -97
- data/test/rubygems/test_gem_security_signer.rb +45 -47
- data/test/rubygems/test_gem_security_trust_dir.rb +12 -14
- data/test/rubygems/test_gem_silent_ui.rb +46 -42
- data/test/rubygems/test_gem_source.rb +53 -52
- data/test/rubygems/test_gem_source_fetch_problem.rb +16 -8
- data/test/rubygems/test_gem_source_git.rb +69 -69
- data/test/rubygems/test_gem_source_installed.rb +16 -18
- data/test/rubygems/test_gem_source_list.rb +5 -6
- data/test/rubygems/test_gem_source_local.rb +15 -17
- data/test/rubygems/test_gem_source_lock.rb +31 -33
- data/test/rubygems/test_gem_source_specific_file.rb +18 -20
- data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
- data/test/rubygems/test_gem_source_vendor.rb +13 -15
- data/test/rubygems/test_gem_spec_fetcher.rb +74 -67
- data/test/rubygems/test_gem_specification.rb +888 -1024
- data/test/rubygems/test_gem_stream_ui.rb +23 -23
- data/test/rubygems/test_gem_stub_specification.rb +39 -57
- data/test/rubygems/test_gem_text.rb +8 -4
- data/test/rubygems/test_gem_uninstaller.rb +233 -104
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -5
- data/test/rubygems/test_gem_uri.rb +39 -0
- data/test/rubygems/test_gem_uri_formatter.rb +14 -16
- data/test/rubygems/test_gem_util.rb +37 -35
- data/test/rubygems/test_gem_validator.rb +10 -12
- data/test/rubygems/test_gem_version.rb +31 -31
- data/test/rubygems/test_gem_version_option.rb +16 -18
- data/test/rubygems/test_kernel.rb +46 -60
- data/test/rubygems/test_project_sanity.rb +8 -3
- data/test/rubygems/test_remote_fetch_error.rb +7 -9
- data/test/rubygems/test_require.rb +240 -167
- data/test/rubygems/test_rubygems.rb +74 -0
- data/{lib/rubygems/test_utilities.rb → test/rubygems/utilities.rb} +30 -39
- data/test/test_changelog_generator.rb +17 -0
- metadata +158 -146
- data/.bundle/config +0 -2
- data/.rubocop.yml +0 -91
- data/Gemfile +0 -8
- data/Gemfile.lock +0 -43
- data/Rakefile +0 -428
- data/bundler/CODE_OF_CONDUCT.md +0 -136
- data/bundler/lib/bundler/gemdeps.rb +0 -29
- data/bundler/lib/bundler/psyched_yaml.rb +0 -37
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +0 -66
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
- data/bundler/man/bundle-add.1.txt +0 -58
- data/bundler/man/bundle-binstubs.1.txt +0 -48
- data/bundler/man/bundle-cache.1.txt +0 -78
- data/bundler/man/bundle-check.1.txt +0 -33
- data/bundler/man/bundle-clean.1.txt +0 -26
- data/bundler/man/bundle-config.1.txt +0 -528
- data/bundler/man/bundle-doctor.1.txt +0 -44
- data/bundler/man/bundle-exec.1.txt +0 -178
- data/bundler/man/bundle-gem.1.txt +0 -91
- data/bundler/man/bundle-info.1.txt +0 -21
- data/bundler/man/bundle-init.1.txt +0 -34
- data/bundler/man/bundle-inject.1.txt +0 -32
- data/bundler/man/bundle-install.1.txt +0 -401
- data/bundler/man/bundle-list.1.txt +0 -43
- data/bundler/man/bundle-lock.1.txt +0 -93
- data/bundler/man/bundle-open.1.txt +0 -29
- data/bundler/man/bundle-outdated.1.txt +0 -131
- data/bundler/man/bundle-platform.1.txt +0 -57
- data/bundler/man/bundle-pristine.1.txt +0 -44
- data/bundler/man/bundle-remove.1.txt +0 -34
- data/bundler/man/bundle-show.1.txt +0 -27
- data/bundler/man/bundle-update.1.txt +0 -390
- data/bundler/man/bundle-viz.1.txt +0 -39
- data/bundler/man/bundle.1.txt +0 -116
- data/bundler/man/gemfile.5.txt +0 -649
- data/lib/rubygems/psych_additions.rb +0 -10
- data/lib/rubygems/server.rb +0 -879
- data/lib/rubygems/source_local.rb +0 -7
- data/lib/rubygems/source_specific_file.rb +0 -6
- data/lib/rubygems/syck_hack.rb +0 -79
- data/lib/rubygems/uri_parser.rb +0 -36
- data/lib/rubygems/uri_parsing.rb +0 -23
- data/lib/ubygems.rb +0 -14
- data/test/rubygems/bogussources.rb +0 -9
- data/test/rubygems/data/null-type.gemspec.rz +0 -0
- data/test/rubygems/test_gem_server.rb +0 -612
- data/tmp/.keep +0 -0
- data/util/CL2notes +0 -55
- data/util/bisect +0 -10
- data/util/ci.sh +0 -62
- data/util/cops/deprecations.rb +0 -52
- data/util/create_certs.rb +0 -171
- data/util/create_certs.sh +0 -27
- data/util/create_encrypted_key.rb +0 -16
- data/util/generate_spdx_license_list.rb +0 -63
- data/util/patch_with_prs.rb +0 -77
- data/util/rubocop +0 -8
- data/util/update_bundled_ca_certificates.rb +0 -137
- data/util/update_changelog.rb +0 -64
- /data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
- /data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
- /data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
- /data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
- /data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +0 -0
- /data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
- /data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
- /data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
- /data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
- /data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "rubygems"
|
4
4
|
|
5
5
|
# If bundler gemspec exists, add to stubs
|
6
|
-
bundler_gemspec = File.expand_path("
|
6
|
+
bundler_gemspec = File.expand_path("../../bundler/bundler.gemspec", __dir__)
|
7
7
|
if File.exist?(bundler_gemspec)
|
8
8
|
Gem::Specification.dirs.unshift File.dirname(bundler_gemspec)
|
9
9
|
Gem::Specification.class_variable_set :@@stubs, nil
|
@@ -12,80 +12,82 @@ if File.exist?(bundler_gemspec)
|
|
12
12
|
end
|
13
13
|
|
14
14
|
begin
|
15
|
-
gem
|
15
|
+
gem "test-unit", "~> 3.0"
|
16
16
|
rescue Gem::LoadError
|
17
17
|
end
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
add_filter "/bundler/"
|
24
|
-
add_filter "/lib/rubygems/resolver/molinillo"
|
25
|
-
end
|
26
|
-
rescue LoadError
|
19
|
+
if File.exist?(bundler_gemspec)
|
20
|
+
require_relative "../../bundler/lib/bundler"
|
21
|
+
else
|
22
|
+
require "bundler"
|
27
23
|
end
|
28
24
|
|
29
|
-
require
|
25
|
+
require "test/unit"
|
30
26
|
|
31
|
-
|
27
|
+
ENV["JARS_SKIP"] = "true" if Gem.java_platform? # avoid unnecessary and noisy `jar-dependencies` post install hook
|
32
28
|
|
33
|
-
require
|
29
|
+
require "rubygems/deprecate"
|
34
30
|
|
35
|
-
require
|
36
|
-
require
|
37
|
-
require
|
38
|
-
require
|
39
|
-
require
|
40
|
-
require
|
41
|
-
require
|
42
|
-
require
|
43
|
-
require
|
44
|
-
require
|
31
|
+
require "fileutils"
|
32
|
+
require "pathname"
|
33
|
+
require "pp"
|
34
|
+
require "rubygems/package"
|
35
|
+
require "shellwords"
|
36
|
+
require "tmpdir"
|
37
|
+
require "uri"
|
38
|
+
require "zlib"
|
39
|
+
require "benchmark" # stdlib
|
40
|
+
require "rubygems/mock_gem_ui"
|
45
41
|
|
46
42
|
module Gem
|
47
43
|
|
48
44
|
##
|
49
|
-
# Allows setting the gem path searcher.
|
50
|
-
# requiring 'rubygems/test_case'
|
45
|
+
# Allows setting the gem path searcher.
|
51
46
|
|
52
47
|
def self.searcher=(searcher)
|
53
48
|
@searcher = searcher
|
54
49
|
end
|
55
50
|
|
56
51
|
##
|
57
|
-
# Allows toggling Windows behavior.
|
58
|
-
# 'rubygems/test_case'
|
52
|
+
# Allows toggling Windows behavior.
|
59
53
|
|
60
54
|
def self.win_platform=(val)
|
61
55
|
@@win_platform = val
|
62
56
|
end
|
63
57
|
|
64
58
|
##
|
65
|
-
# Allows setting path to Ruby.
|
66
|
-
# 'rubygems/test_case'
|
59
|
+
# Allows setting path to Ruby.
|
67
60
|
|
68
61
|
def self.ruby=(ruby)
|
69
62
|
@ruby = ruby
|
70
63
|
end
|
71
64
|
|
72
65
|
##
|
73
|
-
#
|
74
|
-
# MockGemUi.
|
66
|
+
# Sets the default user interaction to a MockGemUi.
|
75
67
|
|
76
68
|
module DefaultUserInteraction
|
77
69
|
@ui = Gem::MockGemUi.new
|
78
70
|
end
|
79
71
|
end
|
80
72
|
|
73
|
+
require "rubygems/command"
|
74
|
+
|
75
|
+
class Gem::Command
|
76
|
+
##
|
77
|
+
# Allows resetting the hash of specific args per command.
|
78
|
+
|
79
|
+
def self.specific_extra_args_hash=(value)
|
80
|
+
@specific_extra_args_hash = value
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
81
84
|
##
|
82
85
|
# RubyGemTestCase provides a variety of methods for testing rubygems and
|
83
86
|
# gem-related behavior in a sandbox. Through RubyGemTestCase you can install
|
84
87
|
# and uninstall gems, fetch remote gems through a stub fetcher and be assured
|
85
88
|
# your normal set of gems is not affected.
|
86
89
|
|
87
|
-
class Gem::TestCase <
|
88
|
-
|
90
|
+
class Gem::TestCase < Test::Unit::TestCase
|
89
91
|
extend Gem::Deprecate
|
90
92
|
|
91
93
|
attr_accessor :fetcher # :nodoc:
|
@@ -94,10 +96,6 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
94
96
|
|
95
97
|
attr_accessor :uri # :nodoc:
|
96
98
|
|
97
|
-
TEST_PATH = ENV.fetch('RUBYGEMS_TEST_PATH', File.expand_path('../../../test/rubygems', __FILE__))
|
98
|
-
|
99
|
-
SPECIFICATIONS = File.expand_path(File.join(TEST_PATH, "specifications"), __FILE__)
|
100
|
-
|
101
99
|
def assert_activate(expected, *specs)
|
102
100
|
specs.each do |spec|
|
103
101
|
case spec
|
@@ -115,32 +113,67 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
115
113
|
assert_equal expected.sort, loaded.sort if expected
|
116
114
|
end
|
117
115
|
|
118
|
-
# TODO: move to minitest
|
119
|
-
def assert_path_exists(path, msg = nil)
|
120
|
-
msg = message(msg) { "Expected path '#{path}' to exist" }
|
121
|
-
assert File.exist?(path), msg
|
122
|
-
end
|
123
|
-
|
124
116
|
def assert_directory_exists(path, msg = nil)
|
125
|
-
msg =
|
126
|
-
|
117
|
+
msg = build_message(msg, "Expected path '#{path}' to be a directory")
|
118
|
+
assert_path_exist path
|
127
119
|
assert File.directory?(path), msg
|
128
120
|
end
|
129
121
|
|
122
|
+
def refute_directory_exists(path, msg = nil)
|
123
|
+
msg = build_message(msg, "Expected path '#{path}' not to be a directory")
|
124
|
+
assert_path_not_exist path
|
125
|
+
refute File.directory?(path), msg
|
126
|
+
end
|
127
|
+
|
128
|
+
# https://github.com/seattlerb/minitest/blob/21d9e804b63c619f602f3f4ece6c71b48974707a/lib/minitest/assertions.rb#L188
|
129
|
+
def _synchronize
|
130
|
+
yield
|
131
|
+
end
|
132
|
+
|
133
|
+
# https://github.com/seattlerb/minitest/blob/21d9e804b63c619f602f3f4ece6c71b48974707a/lib/minitest/assertions.rb#L546
|
134
|
+
def capture_subprocess_io
|
135
|
+
_synchronize do
|
136
|
+
begin
|
137
|
+
require "tempfile"
|
138
|
+
|
139
|
+
captured_stdout, captured_stderr = Tempfile.new("out"), Tempfile.new("err")
|
140
|
+
|
141
|
+
orig_stdout, orig_stderr = $stdout.dup, $stderr.dup
|
142
|
+
$stdout.reopen captured_stdout
|
143
|
+
$stderr.reopen captured_stderr
|
144
|
+
|
145
|
+
yield
|
146
|
+
|
147
|
+
$stdout.rewind
|
148
|
+
$stderr.rewind
|
149
|
+
|
150
|
+
return captured_stdout.read, captured_stderr.read
|
151
|
+
ensure
|
152
|
+
$stdout.reopen orig_stdout
|
153
|
+
$stderr.reopen orig_stderr
|
154
|
+
|
155
|
+
orig_stdout.close
|
156
|
+
orig_stderr.close
|
157
|
+
captured_stdout.close!
|
158
|
+
captured_stderr.close!
|
159
|
+
end
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
130
163
|
##
|
131
164
|
# Sets the ENABLE_SHARED entry in RbConfig::CONFIG to +value+ and restores
|
132
165
|
# the original value when the block ends
|
133
166
|
|
134
167
|
def enable_shared(value)
|
135
|
-
enable_shared = RbConfig::CONFIG[
|
136
|
-
RbConfig::CONFIG[
|
168
|
+
enable_shared = RbConfig::CONFIG["ENABLE_SHARED"]
|
169
|
+
RbConfig::CONFIG["ENABLE_SHARED"] = value
|
137
170
|
|
138
171
|
yield
|
139
172
|
ensure
|
140
173
|
if enable_shared
|
141
|
-
RbConfig::CONFIG[
|
174
|
+
RbConfig::CONFIG["ENABLE_SHARED"] = enable_shared
|
142
175
|
else
|
143
|
-
RbConfig::CONFIG.delete
|
176
|
+
RbConfig::CONFIG.delete "ENABLE_SHARED"
|
144
177
|
end
|
145
178
|
end
|
146
179
|
|
@@ -149,20 +182,20 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
149
182
|
# original value when the block ends
|
150
183
|
#
|
151
184
|
def vendordir(value)
|
152
|
-
vendordir = RbConfig::CONFIG[
|
185
|
+
vendordir = RbConfig::CONFIG["vendordir"]
|
153
186
|
|
154
187
|
if value
|
155
|
-
RbConfig::CONFIG[
|
188
|
+
RbConfig::CONFIG["vendordir"] = value
|
156
189
|
else
|
157
|
-
RbConfig::CONFIG.delete
|
190
|
+
RbConfig::CONFIG.delete "vendordir"
|
158
191
|
end
|
159
192
|
|
160
193
|
yield
|
161
194
|
ensure
|
162
195
|
if vendordir
|
163
|
-
RbConfig::CONFIG[
|
196
|
+
RbConfig::CONFIG["vendordir"] = vendordir
|
164
197
|
else
|
165
|
-
RbConfig::CONFIG.delete
|
198
|
+
RbConfig::CONFIG.delete "vendordir"
|
166
199
|
end
|
167
200
|
end
|
168
201
|
|
@@ -172,21 +205,21 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
172
205
|
#
|
173
206
|
def bindir(value)
|
174
207
|
with_clean_path_to_ruby do
|
175
|
-
bindir = RbConfig::CONFIG[
|
208
|
+
bindir = RbConfig::CONFIG["bindir"]
|
176
209
|
|
177
210
|
if value
|
178
|
-
RbConfig::CONFIG[
|
211
|
+
RbConfig::CONFIG["bindir"] = value
|
179
212
|
else
|
180
|
-
RbConfig::CONFIG.delete
|
213
|
+
RbConfig::CONFIG.delete "bindir"
|
181
214
|
end
|
182
215
|
|
183
216
|
begin
|
184
217
|
yield
|
185
218
|
ensure
|
186
219
|
if bindir
|
187
|
-
RbConfig::CONFIG[
|
220
|
+
RbConfig::CONFIG["bindir"] = bindir
|
188
221
|
else
|
189
|
-
RbConfig::CONFIG.delete
|
222
|
+
RbConfig::CONFIG.delete "bindir"
|
190
223
|
end
|
191
224
|
end
|
192
225
|
end
|
@@ -197,79 +230,66 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
197
230
|
# original value when the block ends
|
198
231
|
#
|
199
232
|
def exeext(value)
|
200
|
-
exeext = RbConfig::CONFIG[
|
233
|
+
exeext = RbConfig::CONFIG["EXEEXT"]
|
201
234
|
|
202
235
|
if value
|
203
|
-
RbConfig::CONFIG[
|
236
|
+
RbConfig::CONFIG["EXEEXT"] = value
|
204
237
|
else
|
205
|
-
RbConfig::CONFIG.delete
|
238
|
+
RbConfig::CONFIG.delete "EXEEXT"
|
206
239
|
end
|
207
240
|
|
208
241
|
yield
|
209
242
|
ensure
|
210
243
|
if exeext
|
211
|
-
RbConfig::CONFIG[
|
244
|
+
RbConfig::CONFIG["EXEEXT"] = exeext
|
212
245
|
else
|
213
|
-
RbConfig::CONFIG.delete
|
246
|
+
RbConfig::CONFIG.delete "EXEEXT"
|
214
247
|
end
|
215
248
|
end
|
216
249
|
|
217
|
-
# TODO: move to minitest
|
218
|
-
def refute_path_exists(path, msg = nil)
|
219
|
-
msg = message(msg) { "Expected path '#{path}' to not exist" }
|
220
|
-
refute File.exist?(path), msg
|
221
|
-
end
|
222
|
-
|
223
250
|
def scan_make_command_lines(output)
|
224
251
|
output.scan(/^#{Regexp.escape make_command}(?:[[:blank:]].*)?$/)
|
225
252
|
end
|
226
253
|
|
227
|
-
def
|
228
|
-
|
254
|
+
def parse_make_command_line_targets(line)
|
255
|
+
args = line.sub(/^#{Regexp.escape make_command}/, "").shellsplit
|
229
256
|
|
230
257
|
targets = []
|
231
|
-
macros = {}
|
232
258
|
|
233
259
|
args.each do |arg|
|
234
260
|
case arg
|
235
261
|
when /\A(\w+)=/
|
236
|
-
macros[$1] = $'
|
237
262
|
else
|
238
263
|
targets << arg
|
239
264
|
end
|
240
265
|
end
|
241
266
|
|
242
|
-
targets <<
|
267
|
+
targets << "" if targets.empty?
|
243
268
|
|
244
|
-
|
245
|
-
:command => command,
|
246
|
-
:targets => targets,
|
247
|
-
:macros => macros,
|
248
|
-
}
|
269
|
+
targets
|
249
270
|
end
|
250
271
|
|
251
272
|
def assert_contains_make_command(target, output, msg = nil)
|
252
273
|
if output.match(/\n/)
|
253
|
-
msg =
|
254
|
-
|
255
|
-
(
|
256
|
-
output
|
274
|
+
msg = build_message(msg,
|
275
|
+
"Expected output containing make command \"%s\", but was \n\nBEGIN_OF_OUTPUT\n%sEND_OF_OUTPUT" % [
|
276
|
+
("%s %s" % [make_command, target]).rstrip,
|
277
|
+
output,
|
257
278
|
]
|
258
|
-
|
279
|
+
)
|
259
280
|
else
|
260
|
-
msg =
|
261
|
-
'Expected make command "%s"
|
262
|
-
(
|
263
|
-
output
|
281
|
+
msg = build_message(msg,
|
282
|
+
'Expected make command "%s", but was "%s"' % [
|
283
|
+
("%s %s" % [make_command, target]).rstrip,
|
284
|
+
output,
|
264
285
|
]
|
265
|
-
|
286
|
+
)
|
266
287
|
end
|
267
288
|
|
268
|
-
assert scan_make_command_lines(output).any? {
|
269
|
-
|
289
|
+
assert scan_make_command_lines(output).any? {|line|
|
290
|
+
targets = parse_make_command_line_targets(line)
|
270
291
|
|
271
|
-
if
|
272
|
-
yield make, line if block_given?
|
292
|
+
if targets.include?(target)
|
273
293
|
true
|
274
294
|
else
|
275
295
|
false
|
@@ -279,9 +299,6 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
279
299
|
|
280
300
|
include Gem::DefaultUserInteraction
|
281
301
|
|
282
|
-
undef_method :default_test if instance_methods.include? 'default_test' or
|
283
|
-
instance_methods.include? :default_test
|
284
|
-
|
285
302
|
##
|
286
303
|
# #setup prepares a sandboxed location to install gems. All installs are
|
287
304
|
# directed to a temporary directory. All install plugins are removed.
|
@@ -291,13 +308,22 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
291
308
|
# or <tt>i686-darwin8.10.1</tt> otherwise.
|
292
309
|
|
293
310
|
def setup
|
294
|
-
|
295
|
-
|
311
|
+
@orig_hooks = {}
|
296
312
|
@orig_env = ENV.to_hash
|
313
|
+
@tmp = File.expand_path("tmp")
|
297
314
|
|
298
|
-
|
299
|
-
|
300
|
-
|
315
|
+
FileUtils.mkdir_p @tmp
|
316
|
+
|
317
|
+
@tempdir = Dir.mktmpdir("test_rubygems_", @tmp)
|
318
|
+
@tempdir.tap(&Gem::UNTAINT)
|
319
|
+
|
320
|
+
ENV["GEM_VENDOR"] = nil
|
321
|
+
ENV["GEMRC"] = nil
|
322
|
+
ENV["XDG_CACHE_HOME"] = nil
|
323
|
+
ENV["XDG_CONFIG_HOME"] = nil
|
324
|
+
ENV["XDG_DATA_HOME"] = nil
|
325
|
+
ENV["SOURCE_DATE_EPOCH"] = nil
|
326
|
+
ENV["BUNDLER_VERSION"] = nil
|
301
327
|
|
302
328
|
@current_dir = Dir.pwd
|
303
329
|
@fetcher = nil
|
@@ -308,38 +334,25 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
308
334
|
# capture output
|
309
335
|
Gem::DefaultUserInteraction.ui = Gem::MockGemUi.new
|
310
336
|
|
311
|
-
|
312
|
-
|
337
|
+
@orig_SYSTEM_WIDE_CONFIG_FILE = Gem::ConfigFile::SYSTEM_WIDE_CONFIG_FILE
|
338
|
+
Gem::ConfigFile.send :remove_const, :SYSTEM_WIDE_CONFIG_FILE
|
339
|
+
Gem::ConfigFile.send :const_set, :SYSTEM_WIDE_CONFIG_FILE,
|
340
|
+
File.join(@tempdir, "system-gemrc")
|
313
341
|
|
314
|
-
@
|
315
|
-
@tempdir
|
342
|
+
@gemhome = File.join @tempdir, "gemhome"
|
343
|
+
@userhome = File.join @tempdir, "userhome"
|
344
|
+
ENV["GEM_SPEC_CACHE"] = File.join @tempdir, "spec_cache"
|
316
345
|
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
# path name. https://bugs.ruby-lang.org/issues/10819
|
322
|
-
# File.expand_path or File.realpath doesn't convert path name to long path
|
323
|
-
# name. Only Dir[] (= Dir.glob) works.
|
324
|
-
# Short and long path name is specific to Windows filesystem.
|
325
|
-
if win_platform?
|
326
|
-
@tempdir = Dir[@tempdir][0]
|
327
|
-
@tempdir.tap(&Gem::UNTAINT)
|
346
|
+
@orig_ruby = if ENV["RUBY"]
|
347
|
+
ruby = Gem.ruby
|
348
|
+
Gem.ruby = ENV["RUBY"]
|
349
|
+
ruby
|
328
350
|
end
|
329
351
|
|
330
|
-
@
|
331
|
-
@userhome = File.join @tempdir, 'userhome'
|
332
|
-
ENV["GEM_SPEC_CACHE"] = File.join @tempdir, 'spec_cache'
|
333
|
-
|
334
|
-
@orig_ruby = if ENV['RUBY']
|
335
|
-
ruby = Gem.ruby
|
336
|
-
Gem.ruby = ENV['RUBY']
|
337
|
-
ruby
|
338
|
-
end
|
339
|
-
|
340
|
-
@git = ENV['GIT'] || 'git'
|
352
|
+
@git = ENV["GIT"] || (win_platform? ? "git.exe" : "git")
|
341
353
|
|
342
354
|
Gem.ensure_gem_subdirectories @gemhome
|
355
|
+
Gem.ensure_default_gem_subdirectories @gemhome
|
343
356
|
|
344
357
|
@orig_LOAD_PATH = $LOAD_PATH.dup
|
345
358
|
$LOAD_PATH.map! do |s|
|
@@ -357,33 +370,42 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
357
370
|
|
358
371
|
Dir.chdir @tempdir
|
359
372
|
|
360
|
-
ENV[
|
373
|
+
ENV["HOME"] = @userhome
|
374
|
+
Gem.instance_variable_set :@config_file, nil
|
361
375
|
Gem.instance_variable_set :@user_home, nil
|
376
|
+
Gem.instance_variable_set :@config_home, nil
|
377
|
+
Gem.instance_variable_set :@data_home, nil
|
362
378
|
Gem.instance_variable_set :@gemdeps, nil
|
363
379
|
Gem.instance_variable_set :@env_requirements_by_name, nil
|
364
380
|
Gem.send :remove_instance_variable, :@ruby_version if
|
365
381
|
Gem.instance_variables.include? :@ruby_version
|
366
382
|
|
367
|
-
FileUtils.mkdir_p @gemhome
|
368
383
|
FileUtils.mkdir_p @userhome
|
369
384
|
|
370
|
-
ENV[
|
385
|
+
ENV["GEM_PRIVATE_KEY_PASSPHRASE"] = PRIVATE_KEY_PASSPHRASE
|
371
386
|
|
372
|
-
|
373
|
-
@default_spec_dir = File.join @default_dir, "specifications", "default"
|
387
|
+
Gem.instance_variable_set(:@default_specifications_dir, nil)
|
374
388
|
if Gem.java_platform?
|
375
|
-
@orig_default_gem_home = RbConfig::CONFIG[
|
376
|
-
RbConfig::CONFIG[
|
389
|
+
@orig_default_gem_home = RbConfig::CONFIG["default_gem_home"]
|
390
|
+
RbConfig::CONFIG["default_gem_home"] = @gemhome
|
377
391
|
else
|
378
|
-
Gem.instance_variable_set(:@default_dir, @
|
392
|
+
Gem.instance_variable_set(:@default_dir, @gemhome)
|
379
393
|
end
|
380
|
-
|
394
|
+
|
395
|
+
@orig_bindir = RbConfig::CONFIG["bindir"]
|
396
|
+
RbConfig::CONFIG["bindir"] = File.join @gemhome, "bin"
|
397
|
+
|
398
|
+
@orig_sitelibdir = RbConfig::CONFIG["sitelibdir"]
|
399
|
+
new_sitelibdir = @orig_sitelibdir.sub(RbConfig::CONFIG["prefix"], @gemhome)
|
400
|
+
$LOAD_PATH.insert(Gem.load_path_insert_index, new_sitelibdir)
|
401
|
+
RbConfig::CONFIG["sitelibdir"] = new_sitelibdir
|
402
|
+
|
403
|
+
@orig_mandir = RbConfig::CONFIG["mandir"]
|
404
|
+
RbConfig::CONFIG["mandir"] = File.join @gemhome, "share", "man"
|
381
405
|
|
382
406
|
Gem::Specification.unresolved_deps.clear
|
383
407
|
Gem.use_paths(@gemhome)
|
384
408
|
|
385
|
-
Gem::Security.reset
|
386
|
-
|
387
409
|
Gem.loaded_specs.clear
|
388
410
|
Gem.instance_variable_set(:@activated_gem_paths, 0)
|
389
411
|
Gem.clear_default_specs
|
@@ -401,15 +423,14 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
401
423
|
Gem.searcher = nil
|
402
424
|
Gem::SpecFetcher.fetcher = nil
|
403
425
|
|
404
|
-
@orig_arch = RbConfig::CONFIG[
|
426
|
+
@orig_arch = RbConfig::CONFIG["arch"]
|
405
427
|
|
406
428
|
if win_platform?
|
407
|
-
util_set_arch
|
429
|
+
util_set_arch "i386-mswin32"
|
408
430
|
else
|
409
|
-
util_set_arch
|
431
|
+
util_set_arch "i686-darwin8.10.1"
|
410
432
|
end
|
411
433
|
|
412
|
-
@orig_hooks = {}
|
413
434
|
%w[post_install_hooks done_installing_hooks post_uninstall_hooks pre_uninstall_hooks pre_install_hooks pre_reset_hooks post_reset_hooks post_build_hooks].each do |name|
|
414
435
|
@orig_hooks[name] = Gem.send(name).dup
|
415
436
|
end
|
@@ -426,18 +447,15 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
426
447
|
$LOAD_PATH.replace @orig_LOAD_PATH if @orig_LOAD_PATH
|
427
448
|
if @orig_LOADED_FEATURES
|
428
449
|
if @orig_LOAD_PATH
|
429
|
-
paths = @orig_LOAD_PATH.map {|path| File.join(File.expand_path(path), "/")}
|
430
450
|
($LOADED_FEATURES - @orig_LOADED_FEATURES).each do |feat|
|
431
|
-
|
432
|
-
$LOADED_FEATURES.delete(feat)
|
433
|
-
end
|
451
|
+
$LOADED_FEATURES.delete(feat) if feat.start_with?(@tmp)
|
434
452
|
end
|
435
453
|
else
|
436
454
|
$LOADED_FEATURES.replace @orig_LOADED_FEATURES
|
437
455
|
end
|
438
456
|
end
|
439
457
|
|
440
|
-
RbConfig::CONFIG[
|
458
|
+
RbConfig::CONFIG["arch"] = @orig_arch
|
441
459
|
|
442
460
|
if defined? Gem::RemoteFetcher
|
443
461
|
Gem::RemoteFetcher.fetcher = nil
|
@@ -449,15 +467,23 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
449
467
|
|
450
468
|
ENV.replace(@orig_env)
|
451
469
|
|
470
|
+
Gem::ConfigFile.send :remove_const, :SYSTEM_WIDE_CONFIG_FILE
|
471
|
+
Gem::ConfigFile.send :const_set, :SYSTEM_WIDE_CONFIG_FILE,
|
472
|
+
@orig_SYSTEM_WIDE_CONFIG_FILE
|
473
|
+
|
452
474
|
Gem.ruby = @orig_ruby if @orig_ruby
|
453
475
|
|
476
|
+
RbConfig::CONFIG["mandir"] = @orig_mandir
|
477
|
+
RbConfig::CONFIG["sitelibdir"] = @orig_sitelibdir
|
478
|
+
RbConfig::CONFIG["bindir"] = @orig_bindir
|
479
|
+
|
480
|
+
Gem.instance_variable_set :@default_specifications_dir, nil
|
454
481
|
if Gem.java_platform?
|
455
|
-
RbConfig::CONFIG[
|
482
|
+
RbConfig::CONFIG["default_gem_home"] = @orig_default_gem_home
|
456
483
|
else
|
457
484
|
Gem.instance_variable_set :@default_dir, nil
|
458
485
|
end
|
459
486
|
|
460
|
-
Gem::Specification._clear_load_cache
|
461
487
|
Gem::Specification.unresolved_deps.clear
|
462
488
|
Gem::refresh
|
463
489
|
|
@@ -468,6 +494,17 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
468
494
|
@back_ui.close
|
469
495
|
end
|
470
496
|
|
497
|
+
def credential_setup
|
498
|
+
@temp_cred = File.join(@userhome, ".gem", "credentials")
|
499
|
+
FileUtils.mkdir_p File.dirname(@temp_cred)
|
500
|
+
File.write @temp_cred, ":rubygems_api_key: 701229f217cdf23b1344c7b4b54ca97"
|
501
|
+
File.chmod 0600, @temp_cred
|
502
|
+
end
|
503
|
+
|
504
|
+
def credential_teardown
|
505
|
+
FileUtils.rm_rf @temp_cred
|
506
|
+
end
|
507
|
+
|
471
508
|
def common_installer_setup
|
472
509
|
common_installer_teardown
|
473
510
|
|
@@ -505,16 +542,20 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
505
542
|
Gem.pre_uninstall_hooks.clear
|
506
543
|
end
|
507
544
|
|
545
|
+
def without_any_upwards_gemfiles
|
546
|
+
ENV["BUNDLE_GEMFILE"] = File.join(@tempdir, "Gemfile")
|
547
|
+
end
|
548
|
+
|
508
549
|
##
|
509
550
|
# A git_gem is used with a gem dependencies file. The gem created here
|
510
551
|
# has no files, just a gem specification for the given +name+ and +version+.
|
511
552
|
#
|
512
553
|
# Yields the +specification+ to the block, if given
|
513
554
|
|
514
|
-
def git_gem(name =
|
555
|
+
def git_gem(name = "a", version = 1)
|
515
556
|
have_git?
|
516
557
|
|
517
|
-
directory = File.join
|
558
|
+
directory = File.join "git", name
|
518
559
|
directory = File.expand_path directory
|
519
560
|
|
520
561
|
git_spec = Gem::Specification.new name, version do |specification|
|
@@ -525,22 +566,22 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
525
566
|
|
526
567
|
gemspec = "#{name}.gemspec"
|
527
568
|
|
528
|
-
File.open File.join(directory, gemspec),
|
569
|
+
File.open File.join(directory, gemspec), "w" do |io|
|
529
570
|
io.write git_spec.to_ruby
|
530
571
|
end
|
531
572
|
|
532
573
|
head = nil
|
533
574
|
|
534
575
|
Dir.chdir directory do
|
535
|
-
unless File.exist?
|
536
|
-
system @git,
|
537
|
-
system @git,
|
538
|
-
system @git,
|
576
|
+
unless File.exist? ".git"
|
577
|
+
system @git, "init", "--quiet"
|
578
|
+
system @git, "config", "user.name", "RubyGems Tests"
|
579
|
+
system @git, "config", "user.email", "rubygems@example"
|
539
580
|
end
|
540
581
|
|
541
|
-
system @git,
|
542
|
-
system @git,
|
543
|
-
head = Gem::Util.popen(@git,
|
582
|
+
system @git, "add", gemspec
|
583
|
+
system @git, "commit", "-a", "-m", "a non-empty commit message", "--quiet"
|
584
|
+
head = Gem::Util.popen(@git, "rev-parse", "master").strip
|
544
585
|
end
|
545
586
|
|
546
587
|
return name, git_spec.version, directory, head
|
@@ -552,13 +593,13 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
552
593
|
def have_git?
|
553
594
|
return if in_path? @git
|
554
595
|
|
555
|
-
|
596
|
+
pend "cannot find git executable, use GIT environment variable to set"
|
556
597
|
end
|
557
598
|
|
558
599
|
def in_path?(executable) # :nodoc:
|
559
|
-
return true if %r
|
600
|
+
return true if %r{\A([A-Z]:|/)} =~ executable && File.exist?(executable)
|
560
601
|
|
561
|
-
ENV[
|
602
|
+
ENV["PATH"].split(File::PATH_SEPARATOR).any? do |directory|
|
562
603
|
File.exist? File.join directory, executable
|
563
604
|
end
|
564
605
|
end
|
@@ -567,9 +608,9 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
567
608
|
# Builds and installs the Gem::Specification +spec+
|
568
609
|
|
569
610
|
def install_gem(spec, options = {})
|
570
|
-
require
|
611
|
+
require "rubygems/installer"
|
571
612
|
|
572
|
-
gem =
|
613
|
+
gem = spec.cache_file
|
573
614
|
|
574
615
|
unless File.exist? gem
|
575
616
|
use_ui Gem::MockGemUi.new do
|
@@ -578,10 +619,10 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
578
619
|
end
|
579
620
|
end
|
580
621
|
|
581
|
-
gem = File.join(@tempdir, File.basename(
|
622
|
+
gem = File.join(@tempdir, File.basename(gem)).tap(&Gem::UNTAINT)
|
582
623
|
end
|
583
624
|
|
584
|
-
Gem::Installer.at(gem, options.merge({:wrappers => true})).install
|
625
|
+
Gem::Installer.at(gem, options.merge({ :wrappers => true })).install
|
585
626
|
end
|
586
627
|
|
587
628
|
##
|
@@ -594,7 +635,7 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
594
635
|
##
|
595
636
|
# Uninstalls the Gem::Specification +spec+
|
596
637
|
def uninstall_gem(spec)
|
597
|
-
require
|
638
|
+
require "rubygems/uninstaller"
|
598
639
|
|
599
640
|
Class.new(Gem::Uninstaller) do
|
600
641
|
def ask_if_ok(spec)
|
@@ -617,7 +658,7 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
617
658
|
# Reads a Marshal file at +path+
|
618
659
|
|
619
660
|
def read_cache(path)
|
620
|
-
File.open path.dup.tap(&Gem::UNTAINT),
|
661
|
+
File.open path.dup.tap(&Gem::UNTAINT), "rb" do |io|
|
621
662
|
Marshal.load io.read
|
622
663
|
end
|
623
664
|
end
|
@@ -637,13 +678,35 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
637
678
|
dir = File.dirname path
|
638
679
|
FileUtils.mkdir_p dir unless File.directory? dir
|
639
680
|
|
640
|
-
File.open path,
|
681
|
+
File.open path, "wb" do |io|
|
641
682
|
yield io if block_given?
|
642
683
|
end
|
643
684
|
|
644
685
|
path
|
645
686
|
end
|
646
687
|
|
688
|
+
##
|
689
|
+
# Load a YAML string, the psych 3 way
|
690
|
+
|
691
|
+
def load_yaml(yaml)
|
692
|
+
if Psych.respond_to?(:unsafe_load)
|
693
|
+
Psych.unsafe_load(yaml)
|
694
|
+
else
|
695
|
+
Psych.load(yaml)
|
696
|
+
end
|
697
|
+
end
|
698
|
+
|
699
|
+
##
|
700
|
+
# Load a YAML file, the psych 3 way
|
701
|
+
|
702
|
+
def load_yaml_file(file)
|
703
|
+
if Psych.respond_to?(:unsafe_load_file)
|
704
|
+
Psych.unsafe_load_file(file)
|
705
|
+
else
|
706
|
+
Psych.load_file(file)
|
707
|
+
end
|
708
|
+
end
|
709
|
+
|
647
710
|
def all_spec_names
|
648
711
|
Gem::Specification.map(&:full_name)
|
649
712
|
end
|
@@ -658,24 +721,22 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
658
721
|
#
|
659
722
|
# Use this with #write_file to build an installed gem.
|
660
723
|
|
661
|
-
def quick_gem(name, version=
|
662
|
-
require
|
724
|
+
def quick_gem(name, version="2")
|
725
|
+
require "rubygems/specification"
|
663
726
|
|
664
727
|
spec = Gem::Specification.new do |s|
|
665
728
|
s.platform = Gem::Platform::RUBY
|
666
729
|
s.name = name
|
667
730
|
s.version = version
|
668
|
-
s.author =
|
669
|
-
s.email =
|
670
|
-
s.homepage =
|
731
|
+
s.author = "A User"
|
732
|
+
s.email = "example@example.com"
|
733
|
+
s.homepage = "http://example.com"
|
671
734
|
s.summary = "this is a summary"
|
672
735
|
s.description = "This is a test description"
|
673
736
|
|
674
737
|
yield(s) if block_given?
|
675
738
|
end
|
676
739
|
|
677
|
-
Gem::Specification.map # HACK: force specs to (re-)load before we write
|
678
|
-
|
679
740
|
written_path = write_file spec.spec_file do |io|
|
680
741
|
io.write spec.to_ruby_for_cache
|
681
742
|
end
|
@@ -700,7 +761,7 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
700
761
|
next if File.exist? file
|
701
762
|
FileUtils.mkdir_p File.dirname(file)
|
702
763
|
|
703
|
-
File.open file,
|
764
|
+
File.open file, "w" do |fp|
|
704
765
|
fp.puts "# #{file}"
|
705
766
|
end
|
706
767
|
end
|
@@ -735,7 +796,7 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
735
796
|
|
736
797
|
def install_specs(*specs)
|
737
798
|
specs.each do |spec|
|
738
|
-
Gem::Installer.for_spec(spec).install
|
799
|
+
Gem::Installer.for_spec(spec, :force => true).install
|
739
800
|
end
|
740
801
|
|
741
802
|
Gem.searcher = nil
|
@@ -745,19 +806,6 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
745
806
|
# Installs the provided default specs including writing the spec file
|
746
807
|
|
747
808
|
def install_default_gems(*specs)
|
748
|
-
install_default_specs(*specs)
|
749
|
-
|
750
|
-
specs.each do |spec|
|
751
|
-
File.open spec.loaded_from, 'w' do |io|
|
752
|
-
io.write spec.to_ruby_for_cache
|
753
|
-
end
|
754
|
-
end
|
755
|
-
end
|
756
|
-
|
757
|
-
##
|
758
|
-
# Install the provided default specs
|
759
|
-
|
760
|
-
def install_default_specs(*specs)
|
761
809
|
specs.each do |spec|
|
762
810
|
installer = Gem::Installer.for_spec(spec, :install_as_default => true)
|
763
811
|
installer.install
|
@@ -773,24 +821,15 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
773
821
|
Gem::Specification.unresolved_deps.values.map(&:to_s).sort
|
774
822
|
end
|
775
823
|
|
776
|
-
def save_loaded_features
|
777
|
-
old_loaded_features = $LOADED_FEATURES.dup
|
778
|
-
yield
|
779
|
-
ensure
|
780
|
-
prefix = File.dirname(__FILE__) + "/"
|
781
|
-
new_features = ($LOADED_FEATURES - old_loaded_features)
|
782
|
-
old_loaded_features.concat(new_features.select {|f| f.rindex(prefix, 0)})
|
783
|
-
$LOADED_FEATURES.replace old_loaded_features
|
784
|
-
end
|
785
|
-
|
786
824
|
def new_default_spec(name, version, deps = nil, *files)
|
787
825
|
spec = util_spec name, version, deps
|
788
826
|
|
789
|
-
spec.loaded_from = File.join(@
|
827
|
+
spec.loaded_from = File.join(@gemhome, "specifications", "default", spec.spec_name)
|
790
828
|
spec.files = files
|
791
829
|
|
792
830
|
lib_dir = File.join(@tempdir, "default_gems", "lib")
|
793
831
|
lib_dir.instance_variable_set(:@gem_prelude_index, lib_dir)
|
832
|
+
Gem.instance_variable_set(:@default_gem_load_paths, [*Gem.send(:default_gem_load_paths), lib_dir])
|
794
833
|
$LOAD_PATH.unshift(lib_dir)
|
795
834
|
files.each do |file|
|
796
835
|
rb_path = File.join(lib_dir, file)
|
@@ -808,15 +847,15 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
808
847
|
# or a +block+ can be given for full customization of the specification.
|
809
848
|
|
810
849
|
def util_spec(name, version = 2, deps = nil, *files) # :yields: specification
|
811
|
-
raise "deps or block, not both" if deps
|
850
|
+
raise "deps or block, not both" if deps && block_given?
|
812
851
|
|
813
852
|
spec = Gem::Specification.new do |s|
|
814
853
|
s.platform = Gem::Platform::RUBY
|
815
854
|
s.name = name
|
816
855
|
s.version = version
|
817
|
-
s.author =
|
818
|
-
s.email =
|
819
|
-
s.homepage =
|
856
|
+
s.author = "A User"
|
857
|
+
s.email = "example@example.com"
|
858
|
+
s.homepage = "http://example.com"
|
820
859
|
s.summary = "this is a summary"
|
821
860
|
s.description = "This is a test description"
|
822
861
|
|
@@ -826,10 +865,8 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
826
865
|
end
|
827
866
|
|
828
867
|
if deps
|
829
|
-
|
830
|
-
|
831
|
-
deps.keys.sort.each do |n|
|
832
|
-
spec.add_dependency n, (deps[n] || '>= 0')
|
868
|
+
deps.keys.each do |n|
|
869
|
+
spec.add_dependency n, (deps[n] || ">= 0")
|
833
870
|
end
|
834
871
|
end
|
835
872
|
|
@@ -840,9 +877,6 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
840
877
|
|
841
878
|
util_build_gem spec
|
842
879
|
|
843
|
-
cache_file = File.join @tempdir, 'gems', "#{spec.full_name}.gem"
|
844
|
-
FileUtils.mkdir_p File.dirname cache_file
|
845
|
-
FileUtils.mv spec.cache_file, cache_file
|
846
880
|
FileUtils.rm spec.spec_file
|
847
881
|
end
|
848
882
|
|
@@ -858,11 +892,8 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
858
892
|
def util_gem(name, version, deps = nil, &block)
|
859
893
|
if deps
|
860
894
|
block = proc do |s|
|
861
|
-
|
862
|
-
|
863
|
-
# deterministic on all implementations.
|
864
|
-
deps.keys.sort.each do |n|
|
865
|
-
s.add_dependency n, (deps[n] || '>= 0')
|
895
|
+
deps.keys.each do |n|
|
896
|
+
s.add_dependency n, (deps[n] || ">= 0")
|
866
897
|
end
|
867
898
|
end
|
868
899
|
end
|
@@ -871,7 +902,7 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
871
902
|
|
872
903
|
util_build_gem spec
|
873
904
|
|
874
|
-
cache_file = File.join @tempdir,
|
905
|
+
cache_file = File.join @tempdir, "gems", "#{spec.original_name}.gem"
|
875
906
|
FileUtils.mkdir_p File.dirname cache_file
|
876
907
|
FileUtils.mv spec.cache_file, cache_file
|
877
908
|
FileUtils.rm spec.spec_file
|
@@ -913,11 +944,11 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
913
944
|
# TODO: nuke this and fix tests. this should speed up a lot
|
914
945
|
|
915
946
|
def util_make_gems(prerelease = false)
|
916
|
-
@a1 = quick_gem
|
947
|
+
@a1 = quick_gem "a", "1" do |s|
|
917
948
|
s.files = %w[lib/code.rb]
|
918
949
|
s.require_paths = %w[lib]
|
919
950
|
s.date = Gem::Specification::TODAY - 86400
|
920
|
-
s.homepage =
|
951
|
+
s.homepage = "http://a.example.com"
|
921
952
|
s.email = %w[example@example.com example2@example.com]
|
922
953
|
s.authors = %w[Example Example2]
|
923
954
|
s.description = <<-DESC
|
@@ -934,27 +965,27 @@ Also, a list:
|
|
934
965
|
s.require_paths = %w[lib]
|
935
966
|
end
|
936
967
|
|
937
|
-
@a2 = quick_gem(
|
938
|
-
@a3a = quick_gem(
|
939
|
-
@a_evil9 = quick_gem(
|
940
|
-
@b2 = quick_gem(
|
941
|
-
@c1_2 = quick_gem(
|
942
|
-
@x = quick_gem(
|
943
|
-
@dep_x = quick_gem(
|
968
|
+
@a2 = quick_gem("a", "2", &init)
|
969
|
+
@a3a = quick_gem("a", "3.a", &init)
|
970
|
+
@a_evil9 = quick_gem("a_evil", "9", &init)
|
971
|
+
@b2 = quick_gem("b", "2", &init)
|
972
|
+
@c1_2 = quick_gem("c", "1.2", &init)
|
973
|
+
@x = quick_gem("x", "1", &init)
|
974
|
+
@dep_x = quick_gem("dep_x", "1") do |s|
|
944
975
|
s.files = %w[lib/code.rb]
|
945
976
|
s.require_paths = %w[lib]
|
946
|
-
s.add_dependency
|
977
|
+
s.add_dependency "x", ">= 1"
|
947
978
|
end
|
948
979
|
|
949
|
-
@pl1 = quick_gem
|
980
|
+
@pl1 = quick_gem "pl", "1" do |s| # l for legacy
|
950
981
|
s.files = %w[lib/code.rb]
|
951
982
|
s.require_paths = %w[lib]
|
952
|
-
s.platform = Gem::Platform.new
|
953
|
-
s.instance_variable_set :@original_platform,
|
983
|
+
s.platform = Gem::Platform.new "i386-linux"
|
984
|
+
s.instance_variable_set :@original_platform, "i386-linux"
|
954
985
|
end
|
955
986
|
|
956
987
|
if prerelease
|
957
|
-
@a2_pre = quick_gem(
|
988
|
+
@a2_pre = quick_gem("a", "2.a", &init)
|
958
989
|
write_file File.join(*%W[gems #{@a2_pre.original_name} lib code.rb])
|
959
990
|
util_build_gem @a2_pre
|
960
991
|
end
|
@@ -980,7 +1011,7 @@ Also, a list:
|
|
980
1011
|
# Set the platform to +arch+
|
981
1012
|
|
982
1013
|
def util_set_arch(arch)
|
983
|
-
RbConfig::CONFIG[
|
1014
|
+
RbConfig::CONFIG["arch"] = arch
|
984
1015
|
platform = Gem::Platform.new arch
|
985
1016
|
|
986
1017
|
Gem.instance_variable_set :@platforms, nil
|
@@ -1009,7 +1040,7 @@ Also, a list:
|
|
1009
1040
|
|
1010
1041
|
spec_fetcher = Gem::SpecFetcher.fetcher
|
1011
1042
|
|
1012
|
-
prerelease, all = all_specs.partition {
|
1043
|
+
prerelease, all = all_specs.partition {|spec| spec.version.prerelease? }
|
1013
1044
|
latest = Gem::Specification._latest_specs all_specs
|
1014
1045
|
|
1015
1046
|
spec_fetcher.specs[@uri] = []
|
@@ -1031,7 +1062,7 @@ Also, a list:
|
|
1031
1062
|
unless Gem::RemoteFetcher === @fetcher
|
1032
1063
|
v = Gem.marshal_version
|
1033
1064
|
|
1034
|
-
specs = all.map {
|
1065
|
+
specs = all.map {|spec| spec.name_tuple }
|
1035
1066
|
s_zip = util_gzip Marshal.dump Gem::NameTuple.to_basic specs
|
1036
1067
|
|
1037
1068
|
latest_specs = latest.map do |spec|
|
@@ -1040,26 +1071,30 @@ Also, a list:
|
|
1040
1071
|
|
1041
1072
|
l_zip = util_gzip Marshal.dump Gem::NameTuple.to_basic latest_specs
|
1042
1073
|
|
1043
|
-
prerelease_specs = prerelease.map {
|
1074
|
+
prerelease_specs = prerelease.map {|spec| spec.name_tuple }
|
1044
1075
|
p_zip = util_gzip Marshal.dump Gem::NameTuple.to_basic prerelease_specs
|
1045
1076
|
|
1046
1077
|
@fetcher.data["#{@gem_repo}specs.#{v}.gz"] = s_zip
|
1047
1078
|
@fetcher.data["#{@gem_repo}latest_specs.#{v}.gz"] = l_zip
|
1048
1079
|
@fetcher.data["#{@gem_repo}prerelease_specs.#{v}.gz"] = p_zip
|
1049
1080
|
|
1050
|
-
|
1051
|
-
|
1052
|
-
all_specs.each do |spec|
|
1053
|
-
path = "#{@gem_repo}quick/Marshal.#{v}/#{spec.original_name}.gemspec.rz"
|
1054
|
-
data = Marshal.dump spec
|
1055
|
-
data_deflate = Zlib::Deflate.deflate data
|
1056
|
-
@fetcher.data[path] = data_deflate
|
1057
|
-
end
|
1081
|
+
write_marshalled_gemspecs(*all_specs)
|
1058
1082
|
end
|
1059
1083
|
|
1060
1084
|
nil # force errors
|
1061
1085
|
end
|
1062
1086
|
|
1087
|
+
def write_marshalled_gemspecs(*all_specs)
|
1088
|
+
v = Gem.marshal_version
|
1089
|
+
|
1090
|
+
all_specs.each do |spec|
|
1091
|
+
path = "#{@gem_repo}quick/Marshal.#{v}/#{spec.original_name}.gemspec.rz"
|
1092
|
+
data = Marshal.dump spec
|
1093
|
+
data_deflate = Zlib::Deflate.deflate data
|
1094
|
+
@fetcher.data[path] = data_deflate
|
1095
|
+
end
|
1096
|
+
end
|
1097
|
+
|
1063
1098
|
##
|
1064
1099
|
# Deflates +data+
|
1065
1100
|
|
@@ -1067,7 +1102,7 @@ Also, a list:
|
|
1067
1102
|
Zlib::Deflate.deflate data
|
1068
1103
|
end
|
1069
1104
|
|
1070
|
-
def util_set_RUBY_VERSION(version, patchlevel
|
1105
|
+
def util_set_RUBY_VERSION(version, patchlevel, revision, description, engine = "ruby", engine_version = nil)
|
1071
1106
|
if Gem.instance_variables.include? :@ruby_version
|
1072
1107
|
Gem.send :remove_instance_variable, :@ruby_version
|
1073
1108
|
end
|
@@ -1075,16 +1110,16 @@ Also, a list:
|
|
1075
1110
|
@RUBY_VERSION = RUBY_VERSION
|
1076
1111
|
@RUBY_PATCHLEVEL = RUBY_PATCHLEVEL if defined?(RUBY_PATCHLEVEL)
|
1077
1112
|
@RUBY_REVISION = RUBY_REVISION if defined?(RUBY_REVISION)
|
1078
|
-
@RUBY_DESCRIPTION = RUBY_DESCRIPTION
|
1113
|
+
@RUBY_DESCRIPTION = RUBY_DESCRIPTION
|
1079
1114
|
@RUBY_ENGINE = RUBY_ENGINE
|
1080
1115
|
@RUBY_ENGINE_VERSION = RUBY_ENGINE_VERSION if defined?(RUBY_ENGINE_VERSION)
|
1081
1116
|
|
1082
1117
|
util_clear_RUBY_VERSION
|
1083
1118
|
|
1084
1119
|
Object.const_set :RUBY_VERSION, version
|
1085
|
-
Object.const_set :RUBY_PATCHLEVEL, patchlevel
|
1086
|
-
Object.const_set :RUBY_REVISION, revision
|
1087
|
-
Object.const_set :RUBY_DESCRIPTION, description
|
1120
|
+
Object.const_set :RUBY_PATCHLEVEL, patchlevel
|
1121
|
+
Object.const_set :RUBY_REVISION, revision
|
1122
|
+
Object.const_set :RUBY_DESCRIPTION, description
|
1088
1123
|
Object.const_set :RUBY_ENGINE, engine
|
1089
1124
|
Object.const_set :RUBY_ENGINE_VERSION, engine_version if engine_version
|
1090
1125
|
end
|
@@ -1097,8 +1132,7 @@ Also, a list:
|
|
1097
1132
|
defined?(@RUBY_PATCHLEVEL)
|
1098
1133
|
Object.const_set :RUBY_REVISION, @RUBY_REVISION if
|
1099
1134
|
defined?(@RUBY_REVISION)
|
1100
|
-
Object.const_set :RUBY_DESCRIPTION, @RUBY_DESCRIPTION
|
1101
|
-
defined?(@RUBY_DESCRIPTION)
|
1135
|
+
Object.const_set :RUBY_DESCRIPTION, @RUBY_DESCRIPTION
|
1102
1136
|
Object.const_set :RUBY_ENGINE, @RUBY_ENGINE
|
1103
1137
|
Object.const_set :RUBY_ENGINE_VERSION, @RUBY_ENGINE_VERSION if
|
1104
1138
|
defined?(@RUBY_ENGINE_VERSION)
|
@@ -1146,7 +1180,7 @@ Also, a list:
|
|
1146
1180
|
# Borland) versus Cygwin, Mingw, etc.
|
1147
1181
|
|
1148
1182
|
def self.vc_windows?
|
1149
|
-
RUBY_PLATFORM.match(
|
1183
|
+
RUBY_PLATFORM.match("mswin")
|
1150
1184
|
end
|
1151
1185
|
|
1152
1186
|
##
|
@@ -1154,7 +1188,15 @@ Also, a list:
|
|
1154
1188
|
# Borland) versus Cygwin, Mingw, etc.
|
1155
1189
|
|
1156
1190
|
def vc_windows?
|
1157
|
-
RUBY_PLATFORM.match(
|
1191
|
+
RUBY_PLATFORM.match("mswin")
|
1192
|
+
end
|
1193
|
+
|
1194
|
+
##
|
1195
|
+
# Is this test being run on a ruby/ruby repository?
|
1196
|
+
#
|
1197
|
+
|
1198
|
+
def ruby_repo?
|
1199
|
+
!ENV["GEM_COMMAND"].nil?
|
1158
1200
|
end
|
1159
1201
|
|
1160
1202
|
##
|
@@ -1163,7 +1205,7 @@ Also, a list:
|
|
1163
1205
|
# other platforms, including Cygwin, it will return 'make'.
|
1164
1206
|
|
1165
1207
|
def self.make_command
|
1166
|
-
ENV["make"] || ENV["MAKE"] || (vc_windows? ?
|
1208
|
+
ENV["make"] || ENV["MAKE"] || (vc_windows? ? "nmake" : "make")
|
1167
1209
|
end
|
1168
1210
|
|
1169
1211
|
##
|
@@ -1172,14 +1214,14 @@ Also, a list:
|
|
1172
1214
|
# other platforms, including Cygwin, it will return 'make'.
|
1173
1215
|
|
1174
1216
|
def make_command
|
1175
|
-
ENV["make"] || ENV["MAKE"] || (vc_windows? ?
|
1217
|
+
ENV["make"] || ENV["MAKE"] || (vc_windows? ? "nmake" : "make")
|
1176
1218
|
end
|
1177
1219
|
|
1178
1220
|
##
|
1179
1221
|
# Returns whether or not the nmake command could be found.
|
1180
1222
|
|
1181
1223
|
def nmake_found?
|
1182
|
-
system(
|
1224
|
+
system("nmake /? 1>NUL 2>&1")
|
1183
1225
|
end
|
1184
1226
|
|
1185
1227
|
# In case we're building docs in a background process, this method waits for
|
@@ -1211,7 +1253,7 @@ Also, a list:
|
|
1211
1253
|
|
1212
1254
|
def build_rake_in(good=true)
|
1213
1255
|
gem_ruby = Gem.ruby
|
1214
|
-
Gem.ruby =
|
1256
|
+
Gem.ruby = self.class.rubybin
|
1215
1257
|
env_rake = ENV["rake"]
|
1216
1258
|
rake = (good ? @@good_rake : @@bad_rake)
|
1217
1259
|
ENV["rake"] = rake
|
@@ -1235,25 +1277,30 @@ Also, a list:
|
|
1235
1277
|
rubyexe = "#{ruby}.exe"
|
1236
1278
|
|
1237
1279
|
3.times do
|
1238
|
-
if File.exist?
|
1280
|
+
if File.exist?(ruby) && File.executable?(ruby) && !File.directory?(ruby)
|
1239
1281
|
return File.expand_path(ruby)
|
1240
1282
|
end
|
1241
|
-
if File.exist?
|
1283
|
+
if File.exist?(rubyexe) && File.executable?(rubyexe)
|
1242
1284
|
return File.expand_path(rubyexe)
|
1243
1285
|
end
|
1244
1286
|
ruby = File.join("..", ruby)
|
1245
1287
|
end
|
1246
1288
|
|
1247
1289
|
begin
|
1248
|
-
|
1249
|
-
File.join(RbConfig::CONFIG["bindir"],
|
1250
|
-
RbConfig::CONFIG["ruby_install_name"] +
|
1251
|
-
RbConfig::CONFIG["EXEEXT"])
|
1290
|
+
Gem.ruby
|
1252
1291
|
rescue LoadError
|
1253
1292
|
"ruby"
|
1254
1293
|
end
|
1255
1294
|
end
|
1256
1295
|
|
1296
|
+
def ruby_with_rubygems_in_load_path
|
1297
|
+
[Gem.ruby, "-I", rubygems_path]
|
1298
|
+
end
|
1299
|
+
|
1300
|
+
def rubygems_path
|
1301
|
+
$LOAD_PATH.find {|p| p == File.dirname($LOADED_FEATURES.find {|f| f.end_with?("/rubygems.rb") }) }
|
1302
|
+
end
|
1303
|
+
|
1257
1304
|
def with_clean_path_to_ruby
|
1258
1305
|
orig_ruby = Gem.ruby
|
1259
1306
|
|
@@ -1264,28 +1311,42 @@ Also, a list:
|
|
1264
1311
|
Gem.instance_variable_set :@ruby, orig_ruby
|
1265
1312
|
end
|
1266
1313
|
|
1267
|
-
|
1314
|
+
def with_internal_encoding(encoding)
|
1315
|
+
int_enc = Encoding.default_internal
|
1316
|
+
silence_warnings { Encoding.default_internal = encoding }
|
1268
1317
|
|
1318
|
+
yield
|
1319
|
+
ensure
|
1320
|
+
silence_warnings { Encoding.default_internal = int_enc }
|
1321
|
+
end
|
1322
|
+
|
1323
|
+
def silence_warnings
|
1324
|
+
old_verbose, $VERBOSE = $VERBOSE, false
|
1325
|
+
yield
|
1326
|
+
ensure
|
1327
|
+
$VERBOSE = old_verbose
|
1328
|
+
end
|
1329
|
+
|
1330
|
+
class << self
|
1269
1331
|
# :nodoc:
|
1270
1332
|
##
|
1271
1333
|
# Return the join path, with escaping backticks, dollars, and
|
1272
1334
|
# double-quotes. Unlike `shellescape`, equal-sign is not escaped.
|
1335
|
+
|
1273
1336
|
private
|
1274
1337
|
|
1275
1338
|
def escape_path(*path)
|
1276
1339
|
path = File.join(*path)
|
1277
|
-
if %r
|
1340
|
+
if %r{\A[-+:/=@,.\w]+\z} =~ path
|
1278
1341
|
path
|
1279
1342
|
else
|
1280
1343
|
"\"#{path.gsub(/[`$"]/, '\\&')}\""
|
1281
1344
|
end
|
1282
1345
|
end
|
1283
|
-
|
1284
1346
|
end
|
1285
1347
|
|
1286
|
-
@@
|
1287
|
-
@@
|
1288
|
-
@@bad_rake = "#{rubybin} #{escape_path(TEST_PATH, 'bad_rake.rb')}"
|
1348
|
+
@@good_rake = "#{rubybin} #{escape_path(__dir__, 'good_rake.rb')}"
|
1349
|
+
@@bad_rake = "#{rubybin} #{escape_path(__dir__, 'bad_rake.rb')}"
|
1289
1350
|
|
1290
1351
|
##
|
1291
1352
|
# Construct a new Gem::Dependency.
|
@@ -1368,8 +1429,8 @@ Also, a list:
|
|
1368
1429
|
#
|
1369
1430
|
# Yields the +specification+ to the block, if given
|
1370
1431
|
|
1371
|
-
def vendor_gem(name =
|
1372
|
-
directory = File.join
|
1432
|
+
def vendor_gem(name = "a", version = 1)
|
1433
|
+
directory = File.join "vendor", name
|
1373
1434
|
|
1374
1435
|
FileUtils.mkdir_p directory
|
1375
1436
|
|
@@ -1382,12 +1443,12 @@ Also, a list:
|
|
1382
1443
|
#
|
1383
1444
|
# Yields the +specification+ to the block, if given
|
1384
1445
|
|
1385
|
-
def save_gemspec(name =
|
1446
|
+
def save_gemspec(name = "a", version = 1, directory = ".")
|
1386
1447
|
vendor_spec = Gem::Specification.new name, version do |specification|
|
1387
1448
|
yield specification if block_given?
|
1388
1449
|
end
|
1389
1450
|
|
1390
|
-
File.open File.join(directory, "#{name}.gemspec"),
|
1451
|
+
File.open File.join(directory, "#{name}.gemspec"), "w" do |io|
|
1391
1452
|
io.write vendor_spec.to_ruby
|
1392
1453
|
end
|
1393
1454
|
|
@@ -1399,7 +1460,6 @@ Also, a list:
|
|
1399
1460
|
# It is available by requiring Gem::TestCase.
|
1400
1461
|
|
1401
1462
|
class StaticSet < Gem::Resolver::Set
|
1402
|
-
|
1403
1463
|
##
|
1404
1464
|
# A StaticSet ignores remote because it has a fixed set of gems.
|
1405
1465
|
|
@@ -1436,7 +1496,7 @@ Also, a list:
|
|
1436
1496
|
# Finds all gems matching +dep+ in this set.
|
1437
1497
|
|
1438
1498
|
def find_all(dep)
|
1439
|
-
@specs.find_all {
|
1499
|
+
@specs.find_all {|s| dep.match? s, @prerelease }
|
1440
1500
|
end
|
1441
1501
|
|
1442
1502
|
##
|
@@ -1454,7 +1514,6 @@ Also, a list:
|
|
1454
1514
|
|
1455
1515
|
def prefetch(reqs) # :nodoc:
|
1456
1516
|
end
|
1457
|
-
|
1458
1517
|
end
|
1459
1518
|
|
1460
1519
|
##
|
@@ -1474,81 +1533,88 @@ Also, a list:
|
|
1474
1533
|
|
1475
1534
|
def self.cert_path(cert_name)
|
1476
1535
|
if 32 == (Time.at(2**32) rescue 32)
|
1477
|
-
cert_file = "#{
|
1536
|
+
cert_file = "#{__dir__}/#{cert_name}_cert_32.pem"
|
1478
1537
|
|
1479
1538
|
return cert_file if File.exist? cert_file
|
1480
1539
|
end
|
1481
1540
|
|
1482
|
-
"#{
|
1541
|
+
"#{__dir__}/#{cert_name}_cert.pem"
|
1483
1542
|
end
|
1484
1543
|
|
1485
1544
|
##
|
1486
|
-
# Loads
|
1545
|
+
# Loads a private key named +key_name+ with +passphrase+ in <tt>test/rubygems/</tt>
|
1487
1546
|
|
1488
1547
|
def self.load_key(key_name, passphrase = nil)
|
1489
1548
|
key_file = key_path key_name
|
1490
1549
|
|
1491
1550
|
key = File.read key_file
|
1492
1551
|
|
1493
|
-
OpenSSL::PKey
|
1552
|
+
OpenSSL::PKey.read key, passphrase
|
1494
1553
|
end
|
1495
1554
|
|
1496
1555
|
##
|
1497
1556
|
# Returns the path to the key named +key_name+ from <tt>test/rubygems</tt>
|
1498
1557
|
|
1499
1558
|
def self.key_path(key_name)
|
1500
|
-
"#{
|
1559
|
+
"#{__dir__}/#{key_name}_key.pem"
|
1501
1560
|
end
|
1502
1561
|
|
1503
1562
|
# :stopdoc:
|
1504
1563
|
# only available in RubyGems tests
|
1505
1564
|
|
1506
|
-
PRIVATE_KEY_PASSPHRASE =
|
1565
|
+
PRIVATE_KEY_PASSPHRASE = "Foo bar".freeze
|
1507
1566
|
|
1508
1567
|
begin
|
1509
|
-
PRIVATE_KEY = load_key
|
1510
|
-
PRIVATE_KEY_PATH = key_path
|
1568
|
+
PRIVATE_KEY = load_key "private"
|
1569
|
+
PRIVATE_KEY_PATH = key_path "private"
|
1511
1570
|
|
1512
1571
|
# ENCRYPTED_PRIVATE_KEY is PRIVATE_KEY encrypted with PRIVATE_KEY_PASSPHRASE
|
1513
|
-
ENCRYPTED_PRIVATE_KEY = load_key
|
1514
|
-
ENCRYPTED_PRIVATE_KEY_PATH = key_path
|
1572
|
+
ENCRYPTED_PRIVATE_KEY = load_key "encrypted_private", PRIVATE_KEY_PASSPHRASE
|
1573
|
+
ENCRYPTED_PRIVATE_KEY_PATH = key_path "encrypted_private"
|
1515
1574
|
|
1516
1575
|
PUBLIC_KEY = PRIVATE_KEY.public_key
|
1517
1576
|
|
1518
|
-
PUBLIC_CERT = load_cert
|
1519
|
-
PUBLIC_CERT_PATH = cert_path
|
1577
|
+
PUBLIC_CERT = load_cert "public"
|
1578
|
+
PUBLIC_CERT_PATH = cert_path "public"
|
1520
1579
|
rescue Errno::ENOENT
|
1521
1580
|
PRIVATE_KEY = nil
|
1522
1581
|
PUBLIC_KEY = nil
|
1523
1582
|
PUBLIC_CERT = nil
|
1524
|
-
end if
|
1525
|
-
|
1583
|
+
end if Gem::HAVE_OPENSSL
|
1526
1584
|
end
|
1527
1585
|
|
1528
|
-
#
|
1529
|
-
|
1530
|
-
|
1531
|
-
|
1532
|
-
rescue Gem::LoadError
|
1533
|
-
end
|
1586
|
+
# https://github.com/seattlerb/minitest/blob/13c48a03d84a2a87855a4de0c959f96800100357/lib/minitest/mock.rb#L192
|
1587
|
+
class Object
|
1588
|
+
def stub(name, val_or_callable, *block_args)
|
1589
|
+
new_name = "__minitest_stub__#{name}"
|
1534
1590
|
|
1535
|
-
|
1536
|
-
require 'rake/packagetask'
|
1537
|
-
rescue LoadError
|
1538
|
-
end
|
1591
|
+
metaclass = class << self; self; end
|
1539
1592
|
|
1540
|
-
|
1541
|
-
|
1542
|
-
|
1593
|
+
if respond_to?(name) && !methods.map(&:to_s).include?(name.to_s)
|
1594
|
+
metaclass.send :define_method, name do |*args|
|
1595
|
+
super(*args)
|
1596
|
+
end
|
1597
|
+
end
|
1543
1598
|
|
1544
|
-
|
1545
|
-
rescue LoadError, Gem::LoadError
|
1546
|
-
end
|
1599
|
+
metaclass.send :alias_method, new_name, name
|
1547
1600
|
|
1548
|
-
|
1549
|
-
|
1550
|
-
|
1551
|
-
|
1601
|
+
metaclass.send :define_method, name do |*args, &blk|
|
1602
|
+
if val_or_callable.respond_to? :call
|
1603
|
+
val_or_callable.call(*args, &blk)
|
1604
|
+
else
|
1605
|
+
blk.call(*block_args) if blk
|
1606
|
+
val_or_callable
|
1607
|
+
end
|
1608
|
+
end
|
1609
|
+
|
1610
|
+
metaclass.send(:ruby2_keywords, name) if metaclass.respond_to?(:ruby2_keywords, true)
|
1611
|
+
|
1612
|
+
yield self
|
1613
|
+
ensure
|
1614
|
+
metaclass.send :undef_method, name
|
1615
|
+
metaclass.send :alias_method, name, new_name
|
1616
|
+
metaclass.send :undef_method, new_name
|
1617
|
+
end unless method_defined?(:stub) # lib/resolv/test_dns.rb also has the same method definition
|
1552
1618
|
end
|
1553
1619
|
|
1554
|
-
|
1620
|
+
require_relative "utilities"
|