rubygems-update 3.1.2 → 3.2.3
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/CODE_OF_CONDUCT.md +55 -19
- data/CONTRIBUTING.md +25 -11
- data/History.txt +460 -232
- data/Manifest.txt +47 -77
- data/POLICIES.md +6 -12
- data/README.md +5 -5
- data/Rakefile +59 -83
- data/bin/update_rubygems +1 -1
- data/bundler/CHANGELOG.md +1598 -1421
- data/bundler/README.md +6 -8
- data/bundler/UPGRADING.md +18 -32
- data/bundler/bundler.gemspec +3 -3
- data/bundler/exe/bundle +3 -0
- data/bundler/lib/bundler.rb +32 -7
- data/bundler/lib/bundler/build_metadata.rb +4 -12
- data/bundler/lib/bundler/cli.rb +58 -21
- 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 +1 -7
- data/bundler/lib/bundler/cli/clean.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +14 -0
- data/bundler/lib/bundler/cli/console.rb +1 -1
- data/bundler/lib/bundler/cli/doctor.rb +1 -1
- data/bundler/lib/bundler/cli/exec.rb +4 -4
- data/bundler/lib/bundler/cli/fund.rb +36 -0
- data/bundler/lib/bundler/cli/gem.rb +84 -11
- data/bundler/lib/bundler/cli/info.rb +15 -4
- data/bundler/lib/bundler/cli/init.rb +2 -2
- data/bundler/lib/bundler/cli/inject.rb +1 -1
- data/bundler/lib/bundler/cli/install.rb +16 -13
- data/bundler/lib/bundler/cli/issue.rb +2 -2
- data/bundler/lib/bundler/cli/list.rb +12 -10
- data/bundler/lib/bundler/cli/outdated.rb +87 -66
- data/bundler/lib/bundler/cli/plugin.rb +10 -0
- data/bundler/lib/bundler/cli/pristine.rb +5 -0
- data/bundler/lib/bundler/cli/show.rb +1 -1
- data/bundler/lib/bundler/cli/update.rb +3 -1
- data/bundler/lib/bundler/compact_index_client.rb +1 -1
- data/bundler/lib/bundler/compact_index_client/cache.rb +6 -14
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
- data/bundler/lib/bundler/compact_index_client/updater.rb +5 -5
- data/bundler/lib/bundler/definition.rb +65 -76
- data/bundler/lib/bundler/dep_proxy.rb +1 -1
- data/bundler/lib/bundler/dependency.rb +3 -10
- data/bundler/lib/bundler/dsl.rb +5 -9
- data/bundler/lib/bundler/endpoint_specification.rb +1 -1
- data/bundler/lib/bundler/env.rb +1 -1
- data/bundler/lib/bundler/environment_preserver.rb +26 -2
- data/bundler/lib/bundler/errors.rb +1 -0
- data/bundler/lib/bundler/feature_flag.rb +0 -3
- data/bundler/lib/bundler/fetcher.rb +4 -3
- data/bundler/lib/bundler/fetcher/base.rb +1 -1
- data/bundler/lib/bundler/fetcher/compact_index.rb +1 -1
- data/bundler/lib/bundler/fetcher/downloader.rb +1 -1
- data/bundler/lib/bundler/fetcher/index.rb +3 -4
- data/bundler/lib/bundler/friendly_errors.rb +22 -13
- data/bundler/lib/bundler/gem_helper.rb +33 -19
- data/bundler/lib/bundler/gem_helpers.rb +36 -25
- data/bundler/lib/bundler/gem_version_promoter.rb +2 -2
- data/bundler/lib/bundler/graph.rb +1 -1
- data/bundler/lib/bundler/index.rb +6 -2
- data/bundler/lib/bundler/injector.rb +22 -4
- data/bundler/lib/bundler/inline.rb +2 -2
- data/bundler/lib/bundler/installer.rb +35 -32
- data/bundler/lib/bundler/installer/gem_installer.rb +3 -3
- data/bundler/lib/bundler/installer/parallel_installer.rb +10 -10
- data/bundler/lib/bundler/installer/standalone.rb +2 -2
- data/bundler/lib/bundler/lazy_specification.rb +35 -11
- data/bundler/lib/bundler/lockfile_generator.rb +1 -1
- data/bundler/lib/bundler/lockfile_parser.rb +1 -1
- data/bundler/lib/bundler/man/.document +1 -0
- data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +0 -0
- data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +2 -4
- data/bundler/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +0 -0
- 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-config.ronn → lib/bundler/man/bundle-config.1.ronn} +19 -30
- data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
- data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +0 -0
- data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
- 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-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
- data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +25 -3
- data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
- 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-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
- data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +0 -0
- data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
- data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
- data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
- data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +0 -0
- data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
- data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +4 -4
- data/bundler/lib/bundler/mirror.rb +2 -2
- data/bundler/lib/bundler/plugin.rb +30 -5
- data/bundler/lib/bundler/plugin/api/source.rb +1 -1
- data/bundler/lib/bundler/plugin/dsl.rb +1 -1
- data/bundler/lib/bundler/plugin/index.rb +10 -1
- data/bundler/lib/bundler/plugin/installer.rb +1 -1
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -1
- data/bundler/lib/bundler/plugin/source_list.rb +1 -1
- data/bundler/lib/bundler/psyched_yaml.rb +0 -15
- data/bundler/lib/bundler/remote_specification.rb +5 -2
- data/bundler/lib/bundler/resolver.rb +37 -18
- data/bundler/lib/bundler/resolver/spec_group.rb +36 -21
- data/bundler/lib/bundler/retry.rb +1 -1
- data/bundler/lib/bundler/ruby_version.rb +1 -1
- data/bundler/lib/bundler/rubygems_ext.rb +53 -9
- data/bundler/lib/bundler/rubygems_gem_installer.rb +3 -9
- data/bundler/lib/bundler/rubygems_integration.rb +26 -61
- data/bundler/lib/bundler/runtime.rb +4 -14
- data/bundler/lib/bundler/settings.rb +49 -46
- data/bundler/lib/bundler/shared_helpers.rb +2 -2
- data/bundler/lib/bundler/similarity_detector.rb +1 -1
- data/bundler/lib/bundler/source.rb +1 -1
- data/bundler/lib/bundler/source/git.rb +5 -5
- data/bundler/lib/bundler/source/git/git_proxy.rb +57 -60
- data/bundler/lib/bundler/source/path.rb +7 -3
- data/bundler/lib/bundler/source/path/installer.rb +8 -10
- data/bundler/lib/bundler/source/rubygems.rb +13 -16
- data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
- data/bundler/lib/bundler/source_list.rb +2 -2
- data/bundler/lib/bundler/spec_set.rb +7 -9
- data/bundler/lib/bundler/stub_specification.rb +17 -7
- data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +9 -1
- data/bundler/lib/bundler/templates/newgem/README.md.tt +1 -2
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +19 -5
- data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
- data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
- data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +14 -6
- data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +10 -0
- data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
- data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
- data/bundler/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
- data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
- data/bundler/lib/bundler/ui/shell.rb +5 -5
- data/bundler/lib/bundler/uri_credentials_filter.rb +3 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +34 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +38 -40
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +79 -208
- data/bundler/lib/bundler/vendor/thor/lib/thor.rb +0 -7
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
- data/bundler/lib/bundler/vendored_persistent.rb +0 -7
- data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler/worker.rb +1 -1
- data/bundler/lib/bundler/yaml_serializer.rb +1 -1
- data/bundler/man/bundle-add.1 +1 -1
- data/bundler/man/bundle-binstubs.1 +5 -3
- data/bundler/man/bundle-cache.1 +1 -1
- data/bundler/man/bundle-check.1 +1 -1
- data/bundler/man/bundle-clean.1 +1 -1
- data/bundler/man/bundle-config.1 +16 -25
- data/bundler/man/bundle-doctor.1 +1 -1
- data/bundler/man/bundle-exec.1 +1 -1
- data/bundler/man/bundle-gem.1 +25 -3
- data/bundler/man/bundle-info.1 +1 -1
- data/bundler/man/bundle-init.1 +1 -1
- data/bundler/man/bundle-inject.1 +1 -1
- data/bundler/man/bundle-install.1 +30 -3
- data/bundler/man/bundle-list.1 +7 -7
- data/bundler/man/bundle-lock.1 +1 -1
- data/bundler/man/bundle-open.1 +1 -1
- data/bundler/man/bundle-outdated.1 +1 -1
- data/bundler/man/bundle-platform.1 +1 -1
- data/bundler/man/bundle-pristine.1 +1 -1
- data/bundler/man/bundle-remove.1 +1 -1
- data/bundler/man/bundle-show.1 +1 -1
- data/bundler/man/bundle-update.1 +1 -1
- data/bundler/man/bundle-viz.1 +1 -1
- data/bundler/man/bundle.1 +1 -1
- data/bundler/man/gemfile.5 +4 -4
- data/lib/rubygems.rb +138 -187
- data/lib/rubygems/available_set.rb +4 -6
- data/lib/rubygems/basic_specification.rb +12 -10
- data/lib/rubygems/bundler_version_finder.rb +14 -9
- data/lib/rubygems/command.rb +17 -17
- data/lib/rubygems/command_manager.rb +5 -6
- data/lib/rubygems/commands/build_command.rb +40 -20
- data/lib/rubygems/commands/cert_command.rb +2 -10
- data/lib/rubygems/commands/check_command.rb +0 -2
- data/lib/rubygems/commands/cleanup_command.rb +11 -7
- data/lib/rubygems/commands/contents_command.rb +4 -6
- data/lib/rubygems/commands/dependency_command.rb +6 -8
- data/lib/rubygems/commands/environment_command.rb +1 -3
- data/lib/rubygems/commands/fetch_command.rb +2 -4
- data/lib/rubygems/commands/generate_index_command.rb +0 -2
- data/lib/rubygems/commands/help_command.rb +4 -4
- data/lib/rubygems/commands/info_command.rb +8 -5
- data/lib/rubygems/commands/install_command.rb +3 -5
- data/lib/rubygems/commands/list_command.rb +8 -7
- data/lib/rubygems/commands/lock_command.rb +1 -3
- data/lib/rubygems/commands/mirror_command.rb +0 -2
- data/lib/rubygems/commands/open_command.rb +0 -4
- data/lib/rubygems/commands/outdated_command.rb +0 -2
- data/lib/rubygems/commands/owner_command.rb +9 -4
- data/lib/rubygems/commands/pristine_command.rb +11 -5
- data/lib/rubygems/commands/push_command.rb +10 -47
- data/lib/rubygems/commands/query_command.rb +14 -344
- data/lib/rubygems/commands/rdoc_command.rb +0 -2
- data/lib/rubygems/commands/search_command.rb +7 -7
- data/lib/rubygems/commands/server_command.rb +3 -1
- data/lib/rubygems/commands/setup_command.rb +131 -58
- data/lib/rubygems/commands/signin_command.rb +0 -2
- data/lib/rubygems/commands/signout_command.rb +0 -2
- data/lib/rubygems/commands/sources_command.rb +9 -7
- data/lib/rubygems/commands/specification_command.rb +8 -4
- data/lib/rubygems/commands/stale_command.rb +1 -3
- data/lib/rubygems/commands/uninstall_command.rb +2 -4
- data/lib/rubygems/commands/unpack_command.rb +1 -3
- data/lib/rubygems/commands/update_command.rb +59 -14
- data/lib/rubygems/commands/which_command.rb +0 -2
- data/lib/rubygems/commands/yank_command.rb +4 -7
- data/lib/rubygems/config_file.rb +11 -4
- data/lib/rubygems/core_ext/kernel_require.rb +29 -36
- data/lib/rubygems/core_ext/kernel_warn.rb +12 -13
- data/lib/rubygems/defaults.rb +101 -7
- data/lib/rubygems/dependency.rb +3 -8
- data/lib/rubygems/dependency_installer.rb +6 -78
- data/lib/rubygems/dependency_list.rb +7 -9
- data/lib/rubygems/deprecate.rb +46 -1
- data/lib/rubygems/doctor.rb +4 -4
- data/lib/rubygems/errors.rb +3 -14
- data/lib/rubygems/exceptions.rb +2 -33
- data/lib/rubygems/ext.rb +6 -6
- data/lib/rubygems/ext/build_error.rb +2 -0
- data/lib/rubygems/ext/builder.rb +16 -35
- data/lib/rubygems/ext/cmake_builder.rb +5 -7
- data/lib/rubygems/ext/configure_builder.rb +4 -6
- data/lib/rubygems/ext/ext_conf_builder.rb +21 -19
- data/lib/rubygems/ext/rake_builder.rb +4 -6
- data/lib/rubygems/gem_runner.rb +3 -10
- data/lib/rubygems/gemcutter_utilities.rb +102 -21
- data/lib/rubygems/indexer.rb +1 -22
- data/lib/rubygems/install_update_options.rb +7 -7
- data/lib/rubygems/installer.rb +59 -80
- data/lib/rubygems/installer_test_case.rb +25 -11
- data/lib/rubygems/installer_uninstaller_utils.rb +24 -0
- data/lib/rubygems/local_remote_options.rb +1 -1
- data/lib/rubygems/mock_gem_ui.rb +0 -6
- data/lib/rubygems/name_tuple.rb +3 -7
- data/lib/rubygems/openssl.rb +7 -0
- data/lib/rubygems/package.rb +14 -25
- data/lib/rubygems/package/digest_io.rb +0 -2
- data/lib/rubygems/package/file_source.rb +0 -2
- data/lib/rubygems/package/io_source.rb +0 -2
- data/lib/rubygems/package/old.rb +1 -3
- data/lib/rubygems/package/tar_header.rb +4 -6
- data/lib/rubygems/package/tar_reader.rb +0 -3
- data/lib/rubygems/package/tar_reader/entry.rb +0 -3
- data/lib/rubygems/package/tar_test_case.rb +2 -4
- data/lib/rubygems/package/tar_writer.rb +2 -12
- data/lib/rubygems/package_task.rb +1 -7
- data/lib/rubygems/path_support.rb +1 -3
- data/lib/rubygems/platform.rb +21 -12
- data/lib/rubygems/psych_tree.rb +0 -2
- data/lib/rubygems/query_utils.rb +353 -0
- data/lib/rubygems/rdoc.rb +0 -12
- data/lib/rubygems/remote_fetcher.rb +11 -28
- data/lib/rubygems/request.rb +4 -11
- data/lib/rubygems/request/connection_pools.rb +1 -5
- data/lib/rubygems/request/http_pool.rb +0 -2
- data/lib/rubygems/request/https_pool.rb +0 -2
- data/lib/rubygems/request_set.rb +7 -20
- data/lib/rubygems/request_set/gem_dependency_api.rb +6 -8
- data/lib/rubygems/request_set/lockfile.rb +8 -12
- data/lib/rubygems/request_set/lockfile/parser.rb +0 -2
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -3
- data/lib/rubygems/requirement.rb +20 -21
- data/lib/rubygems/resolver.rb +14 -12
- data/lib/rubygems/resolver/activation_request.rb +9 -3
- data/lib/rubygems/resolver/api_set.rb +31 -24
- data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
- data/lib/rubygems/resolver/api_specification.rb +24 -10
- data/lib/rubygems/resolver/best_set.rb +1 -3
- data/lib/rubygems/resolver/composed_set.rb +3 -5
- data/lib/rubygems/resolver/conflict.rb +2 -4
- data/lib/rubygems/resolver/current_set.rb +0 -2
- data/lib/rubygems/resolver/dependency_request.rb +1 -3
- data/lib/rubygems/resolver/git_set.rb +0 -2
- data/lib/rubygems/resolver/git_specification.rb +0 -2
- data/lib/rubygems/resolver/index_set.rb +1 -3
- data/lib/rubygems/resolver/index_specification.rb +26 -2
- data/lib/rubygems/resolver/installed_specification.rb +0 -2
- data/lib/rubygems/resolver/installer_set.rb +60 -13
- data/lib/rubygems/resolver/local_specification.rb +0 -2
- data/lib/rubygems/resolver/lock_set.rb +2 -4
- data/lib/rubygems/resolver/lock_specification.rb +0 -2
- data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +1 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +39 -5
- 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 +43 -10
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +75 -7
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +1 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +506 -165
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
- data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
- data/lib/rubygems/resolver/requirement_list.rb +0 -2
- data/lib/rubygems/resolver/set.rb +0 -2
- data/lib/rubygems/resolver/source_set.rb +0 -2
- data/lib/rubygems/resolver/spec_specification.rb +14 -2
- data/lib/rubygems/resolver/specification.rb +13 -3
- data/lib/rubygems/resolver/stats.rb +0 -2
- data/lib/rubygems/resolver/vendor_set.rb +0 -2
- data/lib/rubygems/resolver/vendor_specification.rb +0 -2
- data/lib/rubygems/s3_uri_signer.rb +2 -8
- data/lib/rubygems/safe_yaml.rb +4 -4
- data/lib/rubygems/security.rb +27 -34
- data/lib/rubygems/security/policy.rb +4 -8
- data/lib/rubygems/security/signer.rb +5 -7
- data/lib/rubygems/security/trust_dir.rb +1 -3
- data/lib/rubygems/server.rb +16 -13
- data/lib/rubygems/source.rb +23 -12
- data/lib/rubygems/source/git.rb +7 -8
- data/lib/rubygems/source/installed.rb +0 -2
- data/lib/rubygems/source/local.rb +2 -4
- data/lib/rubygems/source/lock.rb +0 -2
- data/lib/rubygems/source/specific_file.rb +0 -2
- data/lib/rubygems/source/vendor.rb +0 -2
- data/lib/rubygems/source_list.rb +4 -7
- data/lib/rubygems/spec_fetcher.rb +19 -18
- data/lib/rubygems/specification.rb +113 -126
- data/lib/rubygems/specification_policy.rb +88 -30
- data/lib/rubygems/ssl_certs/{index.rubygems.org → rubygems.org}/GlobalSignRootCA.pem +0 -0
- data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
- data/lib/rubygems/stub_specification.rb +1 -5
- data/lib/rubygems/syck_hack.rb +0 -2
- data/lib/rubygems/test_case.rb +105 -132
- data/lib/rubygems/test_utilities.rb +12 -19
- data/lib/rubygems/uninstaller.rb +35 -16
- data/lib/rubygems/uri_formatter.rb +2 -3
- data/lib/rubygems/uri_parser.rb +0 -2
- data/lib/rubygems/user_interaction.rb +1 -26
- data/lib/rubygems/util.rb +15 -3
- data/lib/rubygems/util/licenses.rb +4 -6
- data/lib/rubygems/util/list.rb +0 -2
- data/lib/rubygems/validator.rb +1 -3
- data/lib/rubygems/version.rb +5 -7
- data/lib/rubygems/version_option.rb +6 -0
- data/rubygems-update.gemspec +2 -2
- data/setup.rb +2 -7
- data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -2
- data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
- data/test/rubygems/rubygems_plugin.rb +0 -2
- data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
- data/test/rubygems/test_bundled_ca.rb +42 -45
- data/test/rubygems/test_config.rb +0 -2
- data/test/rubygems/test_deprecate.rb +40 -7
- data/test/rubygems/test_gem.rb +151 -99
- data/test/rubygems/test_gem_available_set.rb +3 -5
- data/test/rubygems/test_gem_bundler_version_finder.rb +19 -3
- data/test/rubygems/test_gem_command.rb +24 -7
- data/test/rubygems/test_gem_command_manager.rb +36 -5
- data/test/rubygems/test_gem_commands_build_command.rb +250 -15
- data/test/rubygems/test_gem_commands_cert_command.rb +4 -6
- data/test/rubygems/test_gem_commands_check_command.rb +0 -2
- data/test/rubygems/test_gem_commands_cleanup_command.rb +14 -5
- data/test/rubygems/test_gem_commands_contents_command.rb +50 -19
- data/test/rubygems/test_gem_commands_dependency_command.rb +0 -2
- data/test/rubygems/test_gem_commands_environment_command.rb +21 -23
- data/test/rubygems/test_gem_commands_fetch_command.rb +0 -2
- data/test/rubygems/test_gem_commands_generate_index_command.rb +1 -7
- data/test/rubygems/test_gem_commands_help_command.rb +15 -4
- data/test/rubygems/test_gem_commands_info_command.rb +6 -8
- data/test/rubygems/test_gem_commands_install_command.rb +163 -34
- data/test/rubygems/test_gem_commands_list_command.rb +0 -2
- data/test/rubygems/test_gem_commands_lock_command.rb +0 -2
- data/test/rubygems/test_gem_commands_mirror.rb +1 -3
- data/test/rubygems/test_gem_commands_open_command.rb +4 -6
- data/test/rubygems/test_gem_commands_outdated_command.rb +0 -2
- data/test/rubygems/test_gem_commands_owner_command.rb +59 -5
- data/test/rubygems/test_gem_commands_pristine_command.rb +43 -12
- data/test/rubygems/test_gem_commands_push_command.rb +77 -9
- data/test/rubygems/test_gem_commands_query_command.rb +12 -12
- data/test/rubygems/test_gem_commands_search_command.rb +0 -2
- data/test/rubygems/test_gem_commands_server_command.rb +0 -2
- data/test/rubygems/test_gem_commands_setup_command.rb +165 -124
- data/test/rubygems/test_gem_commands_signin_command.rb +33 -9
- data/test/rubygems/test_gem_commands_signout_command.rb +0 -7
- data/test/rubygems/test_gem_commands_sources_command.rb +99 -3
- data/test/rubygems/test_gem_commands_specification_command.rb +46 -20
- data/test/rubygems/test_gem_commands_stale_command.rb +0 -2
- data/test/rubygems/test_gem_commands_uninstall_command.rb +2 -3
- data/test/rubygems/test_gem_commands_unpack_command.rb +0 -2
- data/test/rubygems/test_gem_commands_update_command.rb +116 -7
- data/test/rubygems/test_gem_commands_which_command.rb +3 -5
- data/test/rubygems/test_gem_commands_yank_command.rb +44 -8
- data/test/rubygems/test_gem_config_file.rb +7 -12
- data/test/rubygems/test_gem_dependency.rb +0 -2
- data/test/rubygems/test_gem_dependency_installer.rb +90 -193
- data/test/rubygems/test_gem_dependency_list.rb +10 -12
- data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -3
- data/test/rubygems/test_gem_doctor.rb +28 -2
- data/test/rubygems/test_gem_ext_builder.rb +26 -47
- data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -23
- data/test/rubygems/test_gem_ext_configure_builder.rb +4 -20
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +9 -29
- data/test/rubygems/test_gem_ext_rake_builder.rb +39 -24
- data/test/rubygems/test_gem_gem_runner.rb +44 -1
- data/test/rubygems/test_gem_gemcutter_utilities.rb +8 -5
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -2
- data/test/rubygems/test_gem_indexer.rb +9 -15
- data/test/rubygems/test_gem_install_update_options.rb +14 -4
- data/test/rubygems/test_gem_installer.rb +258 -115
- data/test/rubygems/test_gem_local_remote_options.rb +0 -2
- data/test/rubygems/test_gem_name_tuple.rb +0 -2
- data/test/rubygems/test_gem_package.rb +41 -39
- data/test/rubygems/test_gem_package_old.rb +4 -6
- data/test/rubygems/test_gem_package_tar_header.rb +18 -1
- data/test/rubygems/test_gem_package_tar_reader.rb +0 -2
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -2
- data/test/rubygems/test_gem_package_tar_writer.rb +9 -6
- data/test/rubygems/test_gem_package_task.rb +46 -13
- data/test/rubygems/test_gem_path_support.rb +0 -2
- data/test/rubygems/test_gem_platform.rb +63 -6
- data/test/rubygems/test_gem_rdoc.rb +0 -2
- data/test/rubygems/test_gem_remote_fetcher.rb +168 -211
- data/test/rubygems/test_gem_request.rb +13 -17
- data/test/rubygems/test_gem_request_connection_pools.rb +0 -4
- data/test/rubygems/test_gem_request_set.rb +72 -22
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +3 -5
- data/test/rubygems/test_gem_request_set_lockfile.rb +4 -6
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -11
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -120
- data/test/rubygems/test_gem_requirement.rb +10 -4
- data/test/rubygems/test_gem_resolver.rb +6 -8
- data/test/rubygems/test_gem_resolver_activation_request.rb +0 -2
- data/test/rubygems/test_gem_resolver_api_set.rb +60 -59
- data/test/rubygems/test_gem_resolver_api_specification.rb +3 -5
- data/test/rubygems/test_gem_resolver_best_set.rb +5 -7
- data/test/rubygems/test_gem_resolver_composed_set.rb +0 -2
- data/test/rubygems/test_gem_resolver_conflict.rb +1 -3
- data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -2
- data/test/rubygems/test_gem_resolver_git_set.rb +0 -2
- data/test/rubygems/test_gem_resolver_git_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_index_set.rb +2 -4
- data/test/rubygems/test_gem_resolver_index_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_installer_set.rb +7 -9
- data/test/rubygems/test_gem_resolver_local_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_lock_set.rb +3 -5
- data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -2
- data/test/rubygems/test_gem_resolver_specification.rb +0 -4
- data/test/rubygems/test_gem_resolver_vendor_set.rb +1 -3
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -2
- data/test/rubygems/test_gem_security.rb +22 -24
- data/test/rubygems/test_gem_security_policy.rb +7 -12
- data/test/rubygems/test_gem_security_signer.rb +10 -12
- data/test/rubygems/test_gem_security_trust_dir.rb +4 -6
- data/test/rubygems/test_gem_server.rb +10 -14
- data/test/rubygems/test_gem_silent_ui.rb +0 -2
- data/test/rubygems/test_gem_source.rb +19 -18
- data/test/rubygems/test_gem_source_fetch_problem.rb +0 -2
- data/test/rubygems/test_gem_source_git.rb +12 -13
- data/test/rubygems/test_gem_source_installed.rb +7 -9
- data/test/rubygems/test_gem_source_list.rb +1 -2
- data/test/rubygems/test_gem_source_local.rb +8 -10
- data/test/rubygems/test_gem_source_lock.rb +10 -12
- data/test/rubygems/test_gem_source_specific_file.rb +7 -9
- data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
- data/test/rubygems/test_gem_source_vendor.rb +7 -9
- data/test/rubygems/test_gem_spec_fetcher.rb +11 -4
- data/test/rubygems/test_gem_specification.rb +182 -131
- data/test/rubygems/test_gem_stream_ui.rb +3 -3
- data/test/rubygems/test_gem_stub_specification.rb +4 -7
- data/test/rubygems/test_gem_text.rb +1 -3
- data/test/rubygems/test_gem_uninstaller.rb +134 -12
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -2
- data/test/rubygems/test_gem_uri_formatter.rb +0 -2
- data/test/rubygems/test_gem_util.rb +7 -7
- data/test/rubygems/test_gem_validator.rb +1 -3
- data/test/rubygems/test_gem_version.rb +1 -3
- data/test/rubygems/test_gem_version_option.rb +1 -3
- data/test/rubygems/test_kernel.rb +25 -10
- data/test/rubygems/test_project_sanity.rb +7 -2
- data/test/rubygems/test_remote_fetch_error.rb +0 -2
- data/test/rubygems/test_require.rb +291 -56
- data/test/test_changelog_generator.rb +17 -0
- metadata +65 -96
- data/.bundle/config +0 -2
- data/.rubocop.yml +0 -91
- data/Gemfile +0 -8
- data/Gemfile.lock +0 -43
- data/bundler/CODE_OF_CONDUCT.md +0 -136
- 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/source_local.rb +0 -7
- data/lib/rubygems/source_specific_file.rb +0 -6
- data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
- data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
- data/lib/ubygems.rb +0 -14
- data/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 -139
- data/util/update_changelog.rb +0 -67
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
|
|
3
3
|
require 'rubygems/source'
|
4
4
|
|
5
5
|
class TestGemSourceInstalled < Gem::TestCase
|
6
|
-
|
7
6
|
def test_spaceship
|
8
7
|
a1 = quick_gem 'a', '1'
|
9
8
|
util_build_gem a1
|
@@ -17,20 +16,19 @@ class TestGemSourceInstalled < Gem::TestCase
|
|
17
16
|
|
18
17
|
assert_equal(0, installed.<=>(installed), 'installed <=> installed')
|
19
18
|
|
20
|
-
assert_equal(-1, remote
|
19
|
+
assert_equal(-1, remote.<=>(installed), 'remote <=> installed')
|
21
20
|
assert_equal(1, installed.<=>(remote), 'installed <=> remote')
|
22
21
|
|
23
22
|
assert_equal(1, installed.<=>(local), 'installed <=> local')
|
24
|
-
assert_equal(-1, local
|
23
|
+
assert_equal(-1, local.<=>(installed), 'local <=> installed')
|
25
24
|
|
26
|
-
assert_equal(-1, specific
|
25
|
+
assert_equal(-1, specific.<=>(installed), 'specific <=> installed')
|
27
26
|
assert_equal(1, installed.<=>(specific), 'installed <=> specific')
|
28
27
|
|
29
|
-
assert_equal(1, git.
|
30
|
-
assert_equal(-1, installed.<=>(git),
|
28
|
+
assert_equal(1, git. <=>(installed), 'git <=> installed')
|
29
|
+
assert_equal(-1, installed.<=>(git), 'installed <=> git')
|
31
30
|
|
32
|
-
assert_equal(1, vendor
|
33
|
-
assert_equal(-1, installed.<=>(vendor),
|
31
|
+
assert_equal(1, vendor.<=>(installed), 'vendor <=> installed')
|
32
|
+
assert_equal(-1, installed.<=>(vendor), 'installed <=> vendor')
|
34
33
|
end
|
35
|
-
|
36
34
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
require 'rubygems'
|
2
3
|
require 'rubygems/source_list'
|
3
4
|
require 'rubygems/test_case'
|
4
5
|
|
5
6
|
class TestGemSourceList < Gem::TestCase
|
6
|
-
|
7
7
|
def setup
|
8
8
|
super
|
9
9
|
|
@@ -115,5 +115,4 @@ class TestGemSourceList < Gem::TestCase
|
|
115
115
|
@sl.delete Gem::Source.new(@uri)
|
116
116
|
assert_equal @sl.sources, []
|
117
117
|
end
|
118
|
-
|
119
118
|
end
|
@@ -5,7 +5,6 @@ require 'rubygems/source'
|
|
5
5
|
require 'fileutils'
|
6
6
|
|
7
7
|
class TestGemSourceLocal < Gem::TestCase
|
8
|
-
|
9
8
|
def setup
|
10
9
|
super
|
11
10
|
|
@@ -73,7 +72,7 @@ class TestGemSourceLocal < Gem::TestCase
|
|
73
72
|
|
74
73
|
@sl.load_specs :released
|
75
74
|
|
76
|
-
inner = [@a, @ap, @b].map {
|
75
|
+
inner = [@a, @ap, @b].map {|t| t.name_tuple }.inspect
|
77
76
|
|
78
77
|
assert_equal "#<Gem::Source::Local specs: #{inner}>", @sl.inspect
|
79
78
|
end
|
@@ -93,16 +92,15 @@ class TestGemSourceLocal < Gem::TestCase
|
|
93
92
|
installed = Gem::Source::Installed.new
|
94
93
|
local = Gem::Source::Local.new
|
95
94
|
|
96
|
-
assert_equal(0, local
|
95
|
+
assert_equal(0, local.<=>(local), 'local <=> local')
|
97
96
|
|
98
|
-
assert_equal(-1, remote
|
99
|
-
assert_equal(1, local
|
97
|
+
assert_equal(-1, remote.<=>(local), 'remote <=> local')
|
98
|
+
assert_equal(1, local.<=>(remote), 'local <=> remote')
|
100
99
|
|
101
|
-
assert_equal(1, installed.<=>(local),
|
102
|
-
assert_equal(-1, local
|
100
|
+
assert_equal(1, installed.<=>(local), 'installed <=> local')
|
101
|
+
assert_equal(-1, local.<=>(installed), 'local <=> installed')
|
103
102
|
|
104
|
-
assert_equal(-1, specific
|
105
|
-
assert_equal(1, local
|
103
|
+
assert_equal(-1, specific.<=>(local), 'specific <=> local')
|
104
|
+
assert_equal(1, local.<=>(specific), 'local <=> specific')
|
106
105
|
end
|
107
|
-
|
108
106
|
end
|
@@ -2,7 +2,6 @@
|
|
2
2
|
require 'rubygems/test_case'
|
3
3
|
|
4
4
|
class TestGemSourceLock < Gem::TestCase
|
5
|
-
|
6
5
|
def test_fetch_spec
|
7
6
|
spec_fetcher do |fetcher|
|
8
7
|
fetcher.spec 'a', 1
|
@@ -59,31 +58,31 @@ class TestGemSourceLock < Gem::TestCase
|
|
59
58
|
lock = Gem::Source::Lock.new git
|
60
59
|
|
61
60
|
assert_equal(1, lock.<=>(git), 'lock <=> git')
|
62
|
-
assert_equal(-1, git
|
61
|
+
assert_equal(-1, git.<=>(lock), 'git <=> lock')
|
63
62
|
end
|
64
63
|
|
65
64
|
def test_spaceship_installed
|
66
65
|
installed = Gem::Source::Installed.new
|
67
66
|
lock = Gem::Source::Lock.new installed
|
68
67
|
|
69
|
-
assert_equal(1, lock
|
70
|
-
assert_equal(-1, installed.<=>(lock),
|
68
|
+
assert_equal(1, lock.<=>(installed), 'lock <=> installed')
|
69
|
+
assert_equal(-1, installed.<=>(lock), 'installed <=> lock')
|
71
70
|
end
|
72
71
|
|
73
72
|
def test_spaceship_local
|
74
73
|
local = Gem::Source::Local.new
|
75
74
|
lock = Gem::Source::Lock.new local # nonsense
|
76
75
|
|
77
|
-
assert_equal(1, lock
|
78
|
-
assert_equal(-1, local.<=>(lock),
|
76
|
+
assert_equal(1, lock.<=>(local), 'lock <=> local')
|
77
|
+
assert_equal(-1, local.<=>(lock), 'local <=> lock')
|
79
78
|
end
|
80
79
|
|
81
80
|
def test_spaceship_remote
|
82
81
|
remote = Gem::Source.new @gem_repo
|
83
82
|
lock = Gem::Source::Lock.new remote
|
84
83
|
|
85
|
-
assert_equal(1, lock
|
86
|
-
assert_equal(-1, remote.<=>(lock),
|
84
|
+
assert_equal(1, lock.<=>(remote), 'lock <=> remote')
|
85
|
+
assert_equal(-1, remote.<=>(lock), 'remote <=> lock')
|
87
86
|
end
|
88
87
|
|
89
88
|
def test_spaceship_specific_file
|
@@ -92,7 +91,7 @@ class TestGemSourceLock < Gem::TestCase
|
|
92
91
|
specific = Gem::Source::SpecificFile.new gem
|
93
92
|
lock = Gem::Source::Lock.new specific # nonsense
|
94
93
|
|
95
|
-
assert_equal(1, lock
|
94
|
+
assert_equal(1, lock.<=>(specific), 'lock <=> specific')
|
96
95
|
assert_equal(-1, specific.<=>(lock), 'specific <=> lock')
|
97
96
|
end
|
98
97
|
|
@@ -100,8 +99,8 @@ class TestGemSourceLock < Gem::TestCase
|
|
100
99
|
vendor = Gem::Source::Vendor.new 'vendor/a'
|
101
100
|
lock = Gem::Source::Lock.new vendor
|
102
101
|
|
103
|
-
assert_equal(1, lock
|
104
|
-
assert_equal(-1, vendor.<=>(lock),
|
102
|
+
assert_equal(1, lock.<=>(vendor), 'lock <=> vendor')
|
103
|
+
assert_equal(-1, vendor.<=>(lock), 'vendor <=> lock')
|
105
104
|
end
|
106
105
|
|
107
106
|
def test_uri
|
@@ -110,5 +109,4 @@ class TestGemSourceLock < Gem::TestCase
|
|
110
109
|
|
111
110
|
assert_equal URI(@gem_repo), lock.uri
|
112
111
|
end
|
113
|
-
|
114
112
|
end
|
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
|
|
3
3
|
require 'rubygems/source'
|
4
4
|
|
5
5
|
class TestGemSourceSpecificFile < Gem::TestCase
|
6
|
-
|
7
6
|
def setup
|
8
7
|
super
|
9
8
|
|
@@ -46,16 +45,16 @@ class TestGemSourceSpecificFile < Gem::TestCase
|
|
46
45
|
installed = Gem::Source::Installed.new
|
47
46
|
local = Gem::Source::Local.new
|
48
47
|
|
49
|
-
assert_equal(0, specific
|
48
|
+
assert_equal(0, specific.<=>(specific), 'specific <=> specific')
|
50
49
|
|
51
|
-
assert_equal(-1, remote
|
52
|
-
assert_equal(1, specific
|
50
|
+
assert_equal(-1, remote.<=>(specific), 'remote <=> specific')
|
51
|
+
assert_equal(1, specific.<=>(remote), 'specific <=> remote')
|
53
52
|
|
54
|
-
assert_equal(-1, specific
|
55
|
-
assert_equal(1, local. <=>(specific), 'local
|
53
|
+
assert_equal(-1, specific.<=>(local), 'specific <=> local')
|
54
|
+
assert_equal(1, local. <=>(specific), 'local <=> specific')
|
56
55
|
|
57
|
-
assert_equal(-1, specific. <=>(installed), 'specific
|
58
|
-
assert_equal(1, installed.<=>(specific),
|
56
|
+
assert_equal(-1, specific. <=>(installed), 'specific <=> installed')
|
57
|
+
assert_equal(1, installed.<=>(specific), 'installed <=> specific')
|
59
58
|
|
60
59
|
a2 = quick_gem 'a', '2'
|
61
60
|
util_build_gem a2
|
@@ -73,5 +72,4 @@ class TestGemSourceSpecificFile < Gem::TestCase
|
|
73
72
|
assert_equal(0, a1_source.<=>(a1_source), 'a1_source <=> a1_source')
|
74
73
|
assert_equal(1, a2_source.<=>(a1_source), 'a2_source <=> a1_source')
|
75
74
|
end
|
76
|
-
|
77
75
|
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'rubygems/test_case'
|
3
|
+
require 'rubygems/source'
|
4
|
+
|
5
|
+
class TestGemSourceSubpathProblem < Gem::TestCase
|
6
|
+
def tuple(*args)
|
7
|
+
Gem::NameTuple.new(*args)
|
8
|
+
end
|
9
|
+
|
10
|
+
def setup
|
11
|
+
super
|
12
|
+
|
13
|
+
@gem_repo = "http://gems.example.com/private"
|
14
|
+
|
15
|
+
spec_fetcher
|
16
|
+
|
17
|
+
@source = Gem::Source.new(@gem_repo)
|
18
|
+
|
19
|
+
util_make_gems
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_dependency_resolver_set
|
23
|
+
response = Net::HTTPResponse.new '1.1', 200, 'OK'
|
24
|
+
response.uri = URI('http://example')
|
25
|
+
|
26
|
+
@fetcher.data["#{@gem_repo}/"] = response
|
27
|
+
|
28
|
+
set = @source.dependency_resolver_set
|
29
|
+
|
30
|
+
assert_kind_of Gem::Resolver::APISet, set
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_fetch_spec
|
34
|
+
@fetcher.data["#{@gem_repo}/#{Gem::MARSHAL_SPEC_DIR}#{@a1.spec_name}.rz"] = Zlib::Deflate.deflate(Marshal.dump(@a1))
|
35
|
+
|
36
|
+
spec = @source.fetch_spec tuple('a', Gem::Version.new(1), 'ruby')
|
37
|
+
assert_equal @a1.full_name, spec.full_name
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_load_specs
|
41
|
+
@fetcher.data["#{@gem_repo}/latest_specs.#{Gem.marshal_version}.gz"] = util_gzip(Marshal.dump([
|
42
|
+
Gem::NameTuple.new(@a1.name, @a1.version, 'ruby'),
|
43
|
+
Gem::NameTuple.new(@b2.name, @b2.version, 'ruby'),
|
44
|
+
]))
|
45
|
+
|
46
|
+
released = @source.load_specs(:latest).map {|spec| spec.full_name }
|
47
|
+
assert_equal %W[a-1 b-2], released
|
48
|
+
end
|
49
|
+
end
|
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
|
|
3
3
|
require 'rubygems/source'
|
4
4
|
|
5
5
|
class TestGemSourceVendor < Gem::TestCase
|
6
|
-
|
7
6
|
def test_initialize
|
8
7
|
source = Gem::Source::Vendor.new 'vendor/foo'
|
9
8
|
|
@@ -16,16 +15,15 @@ class TestGemSourceVendor < Gem::TestCase
|
|
16
15
|
git = Gem::Source::Git.new 'a', 'a', 'master'
|
17
16
|
installed = Gem::Source::Installed.new
|
18
17
|
|
19
|
-
assert_equal(0, vendor
|
18
|
+
assert_equal(0, vendor.<=>(vendor), 'vendor <=> vendor')
|
20
19
|
|
21
|
-
assert_equal(1, vendor
|
22
|
-
assert_equal(-1, remote
|
20
|
+
assert_equal(1, vendor.<=>(remote), 'vendor <=> remote')
|
21
|
+
assert_equal(-1, remote.<=>(vendor), 'remote <=> vendor')
|
23
22
|
|
24
|
-
assert_equal(1, vendor
|
25
|
-
assert_equal(-1, git
|
23
|
+
assert_equal(1, vendor.<=>(git), 'vendor <=> git')
|
24
|
+
assert_equal(-1, git.<=>(vendor), 'git <=> vendor')
|
26
25
|
|
27
|
-
assert_equal(1, vendor
|
28
|
-
assert_equal(-1, installed.<=>(vendor),
|
26
|
+
assert_equal(1, vendor.<=>(installed), 'vendor <=> installed')
|
27
|
+
assert_equal(-1, installed.<=>(vendor), 'installed <=> vendor')
|
29
28
|
end
|
30
|
-
|
31
29
|
end
|
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
|
|
3
3
|
require 'rubygems/spec_fetcher'
|
4
4
|
|
5
5
|
class TestGemSpecFetcher < Gem::TestCase
|
6
|
-
|
7
6
|
def tuple(*args)
|
8
7
|
Gem::NameTuple.new(*args)
|
9
8
|
end
|
@@ -173,10 +172,19 @@ class TestGemSpecFetcher < Gem::TestCase
|
|
173
172
|
spec_fetcher do|fetcher|
|
174
173
|
fetcher.spec 'example', 1
|
175
174
|
fetcher.spec 'other-example', 1
|
175
|
+
fetcher.spec 'examp', 1
|
176
176
|
end
|
177
177
|
|
178
|
-
suggestions = @sf.suggest_gems_from_name('examplw')
|
178
|
+
suggestions = @sf.suggest_gems_from_name('examplw', :latest, 1)
|
179
179
|
assert_equal ['example'], suggestions
|
180
|
+
|
181
|
+
suggestions = @sf.suggest_gems_from_name('other')
|
182
|
+
assert_equal ['other-example'], suggestions
|
183
|
+
|
184
|
+
suggestions = @sf.suggest_gems_from_name('exam')
|
185
|
+
assert suggestions.any? { ['examp'] }
|
186
|
+
assert suggestions.any? { ['example'] }
|
187
|
+
assert suggestions.any? { ['other-example'] }
|
180
188
|
end
|
181
189
|
|
182
190
|
def test_suggest_gems_from_name_prerelease
|
@@ -313,7 +321,7 @@ class TestGemSpecFetcher < Gem::TestCase
|
|
313
321
|
specs, _ = @sf.available_specs(:prerelease)
|
314
322
|
|
315
323
|
expected = Gem::NameTuple.from_list \
|
316
|
-
[['a',
|
324
|
+
[['a', v('2.a'), Gem::Platform::RUBY]]
|
317
325
|
|
318
326
|
assert_equal expected, specs[@source]
|
319
327
|
end
|
@@ -326,5 +334,4 @@ class TestGemSpecFetcher < Gem::TestCase
|
|
326
334
|
assert_equal({}, specs)
|
327
335
|
assert_kind_of Gem::SourceFetchProblem, errors.first
|
328
336
|
end
|
329
|
-
|
330
337
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
require 'benchmark'
|
3
3
|
require 'rubygems/test_case'
|
4
|
+
require 'date'
|
4
5
|
require 'pathname'
|
5
6
|
require 'stringio'
|
6
7
|
require 'rubygems/ext'
|
@@ -9,7 +10,6 @@ require 'rubygems/installer'
|
|
9
10
|
require 'rubygems/platform'
|
10
11
|
|
11
12
|
class TestGemSpecification < Gem::TestCase
|
12
|
-
|
13
13
|
LEGACY_YAML_SPEC = <<-EOF.freeze
|
14
14
|
--- !ruby/object:Gem::Specification
|
15
15
|
rubygems_version: "1.0"
|
@@ -83,6 +83,11 @@ end
|
|
83
83
|
def setup
|
84
84
|
super
|
85
85
|
|
86
|
+
# Setting `@default_source_date_epoch` to `nil` effectively resets the
|
87
|
+
# value used for `Gem.source_date_epoch` whenever `$SOURCE_DATE_EPOCH`
|
88
|
+
# is not set.
|
89
|
+
Gem.instance_variable_set(:'@default_source_date_epoch', nil)
|
90
|
+
|
86
91
|
@a1 = util_spec 'a', '1' do |s|
|
87
92
|
s.executable = 'exec'
|
88
93
|
s.test_file = 'test/suite.rb'
|
@@ -135,12 +140,12 @@ end
|
|
135
140
|
install_specs c1, c2, b1, b2, a1
|
136
141
|
|
137
142
|
a1.activate
|
138
|
-
assert_equal %w
|
143
|
+
assert_equal %w[a-1], loaded_spec_names
|
139
144
|
assert_equal ["b (> 0)"], unresolved_names
|
140
145
|
|
141
146
|
require "d#{$$}"
|
142
147
|
|
143
|
-
assert_equal %w
|
148
|
+
assert_equal %w[a-1 b-2 c-2], loaded_spec_names
|
144
149
|
assert_equal [], unresolved_names
|
145
150
|
end
|
146
151
|
end
|
@@ -182,12 +187,12 @@ end
|
|
182
187
|
install_specs c1, c2, b1, b2, a1
|
183
188
|
|
184
189
|
a1.activate
|
185
|
-
assert_equal %w
|
190
|
+
assert_equal %w[a-1], loaded_spec_names
|
186
191
|
assert_equal ["b (> 0)"], unresolved_names
|
187
192
|
|
188
193
|
require "d#{$$}"
|
189
194
|
|
190
|
-
assert_equal %w
|
195
|
+
assert_equal %w[a-1 b-2 c-2], loaded_spec_names
|
191
196
|
assert_equal [], unresolved_names
|
192
197
|
end
|
193
198
|
end
|
@@ -204,12 +209,12 @@ end
|
|
204
209
|
install_specs c1, b1, a1, a2, c2, b2
|
205
210
|
|
206
211
|
a2.activate
|
207
|
-
assert_equal %w
|
212
|
+
assert_equal %w[a-2], loaded_spec_names
|
208
213
|
assert_equal ["b (> 0)"], unresolved_names
|
209
214
|
|
210
215
|
require "d#{$$}"
|
211
216
|
|
212
|
-
assert_equal %w
|
217
|
+
assert_equal %w[a-2 b-1 c-1], loaded_spec_names
|
213
218
|
assert_equal [], unresolved_names
|
214
219
|
end
|
215
220
|
end
|
@@ -226,12 +231,12 @@ end
|
|
226
231
|
install_specs d1, c1, c2, b1, b2, a1
|
227
232
|
|
228
233
|
a1.activate
|
229
|
-
assert_equal %w
|
234
|
+
assert_equal %w[a-1], loaded_spec_names
|
230
235
|
assert_equal ["b (> 0)"], unresolved_names
|
231
236
|
|
232
237
|
require "d#{$$}"
|
233
238
|
|
234
|
-
assert_equal %w
|
239
|
+
assert_equal %w[a-1 d-1], loaded_spec_names
|
235
240
|
assert_equal ["b (> 0)"], unresolved_names
|
236
241
|
end
|
237
242
|
end
|
@@ -241,7 +246,7 @@ end
|
|
241
246
|
a1 = util_spec "a", "1", "b" => "> 0"
|
242
247
|
b1 = util_spec "b", "1", "c" => ">= 0" # unresolved
|
243
248
|
b2 = util_spec "b", "2", "c" => ">= 0"
|
244
|
-
c1 = util_spec "c", "1", nil, "lib/c#{$$}.rb"
|
249
|
+
c1 = util_spec "c", "1", nil, "lib/c#{$$}.rb" # 1st level
|
245
250
|
c2 = util_spec "c", "2", nil, "lib/c#{$$}.rb"
|
246
251
|
|
247
252
|
install_specs c1, c2, b1, b2, a1
|
@@ -250,7 +255,7 @@ end
|
|
250
255
|
|
251
256
|
require "c#{$$}"
|
252
257
|
|
253
|
-
assert_equal %w
|
258
|
+
assert_equal %w[a-1 b-2 c-2], loaded_spec_names
|
254
259
|
end
|
255
260
|
end
|
256
261
|
|
@@ -259,7 +264,7 @@ end
|
|
259
264
|
a1 = util_spec "a", "1", "b" => "> 0"
|
260
265
|
b1 = util_spec "b", "1", "c" => ">= 0" # unresolved
|
261
266
|
b2 = util_spec "b", "2", "c" => ">= 0"
|
262
|
-
c1 = util_spec "c", "1", "d" => ">= 0"
|
267
|
+
c1 = util_spec "c", "1", "d" => ">= 0" # 1st level
|
263
268
|
c2 = util_spec "c", "2", "d" => ">= 0"
|
264
269
|
d1 = util_spec "d", "1", nil, "lib/d#{$$}.rb" # 2nd level
|
265
270
|
d2 = util_spec "d", "2", nil, "lib/d#{$$}.rb"
|
@@ -270,7 +275,7 @@ end
|
|
270
275
|
|
271
276
|
require "d#{$$}"
|
272
277
|
|
273
|
-
assert_equal %w
|
278
|
+
assert_equal %w[a-1 b-2 c-2 d-2], loaded_spec_names
|
274
279
|
end
|
275
280
|
end
|
276
281
|
|
@@ -291,7 +296,7 @@ end
|
|
291
296
|
|
292
297
|
require "d#{$$}"
|
293
298
|
|
294
|
-
assert_equal %w
|
299
|
+
assert_equal %w[a-1 b-2 c-2 d-2], loaded_spec_names
|
295
300
|
end
|
296
301
|
end
|
297
302
|
|
@@ -313,7 +318,7 @@ end
|
|
313
318
|
|
314
319
|
require "d#{$$}"
|
315
320
|
|
316
|
-
assert_equal %w
|
321
|
+
assert_equal %w[a-1 b-2 c-2 d-2], loaded_spec_names
|
317
322
|
end
|
318
323
|
end
|
319
324
|
|
@@ -331,12 +336,12 @@ end
|
|
331
336
|
install_specs c1, c2, c3, b1, b2, a1, a2, base
|
332
337
|
|
333
338
|
base.activate
|
334
|
-
assert_equal %w
|
339
|
+
assert_equal %w[0-1], loaded_spec_names
|
335
340
|
assert_equal ["A (>= 1)"], unresolved_names
|
336
341
|
|
337
342
|
require "d#{$$}"
|
338
343
|
|
339
|
-
assert_equal %w
|
344
|
+
assert_equal %w[0-1 A-2 b-2 c-2], loaded_spec_names
|
340
345
|
assert_equal [], unresolved_names
|
341
346
|
end
|
342
347
|
end
|
@@ -359,7 +364,7 @@ end
|
|
359
364
|
|
360
365
|
require "d#{$$}"
|
361
366
|
|
362
|
-
assert_includes [%w
|
367
|
+
assert_includes [%w[a-1 b-2 c-3 d-2],%w[a-1 b-2 d-2]], loaded_spec_names
|
363
368
|
end
|
364
369
|
end
|
365
370
|
|
@@ -381,7 +386,7 @@ end
|
|
381
386
|
|
382
387
|
require "d#{$$}"
|
383
388
|
|
384
|
-
assert_includes [%w
|
389
|
+
assert_includes [%w[a-1 b-2 d-2 xc-3], %w[a-1 b-2 d-2]], loaded_spec_names
|
385
390
|
end
|
386
391
|
end
|
387
392
|
|
@@ -510,16 +515,16 @@ end
|
|
510
515
|
require "b/c"
|
511
516
|
end
|
512
517
|
|
513
|
-
assert_equal %w
|
518
|
+
assert_equal %w[a-1 b-1], loaded_spec_names
|
514
519
|
end
|
515
520
|
|
516
521
|
def test_self_activate_via_require_wtf
|
517
522
|
save_loaded_features do
|
518
|
-
a1 = util_spec "a", "1", "b" => "> 0", "d" => "> 0"
|
523
|
+
a1 = util_spec "a", "1", "b" => "> 0", "d" => "> 0" # this
|
519
524
|
b1 = util_spec "b", "1", { "c" => ">= 1" }, "lib/b#{$$}.rb"
|
520
525
|
b2 = util_spec "b", "2", { "c" => ">= 2" }, "lib/b#{$$}.rb" # this
|
521
526
|
c1 = util_spec "c", "1"
|
522
|
-
c2 = util_spec "c", "2"
|
527
|
+
c2 = util_spec "c", "2" # this
|
523
528
|
d1 = util_spec "d", "1", { "c" => "< 2" }, "lib/d#{$$}.rb"
|
524
529
|
d2 = util_spec "d", "2", { "c" => "< 2" }, "lib/d#{$$}.rb" # this
|
525
530
|
|
@@ -527,7 +532,7 @@ end
|
|
527
532
|
|
528
533
|
a1.activate
|
529
534
|
|
530
|
-
assert_equal %w
|
535
|
+
assert_equal %w[a-1], loaded_spec_names
|
531
536
|
assert_equal ["b (> 0)", "d (> 0)"], unresolved_names
|
532
537
|
|
533
538
|
require "b#{$$}"
|
@@ -538,7 +543,7 @@ end
|
|
538
543
|
|
539
544
|
assert_equal "unable to find a version of 'd' to activate", e.message
|
540
545
|
|
541
|
-
assert_equal %w
|
546
|
+
assert_equal %w[a-1 b-2 c-2], loaded_spec_names
|
542
547
|
assert_equal ["d (> 0)"], unresolved_names
|
543
548
|
end
|
544
549
|
end
|
@@ -553,7 +558,7 @@ end
|
|
553
558
|
install_specs c1, c2, b1, b2, a1
|
554
559
|
|
555
560
|
a1.activate
|
556
|
-
assert_equal %w
|
561
|
+
assert_equal %w[a-1 b-1 c-1], loaded_spec_names
|
557
562
|
end
|
558
563
|
|
559
564
|
def test_self_activate_loaded
|
@@ -715,7 +720,7 @@ end
|
|
715
720
|
version
|
716
721
|
]
|
717
722
|
|
718
|
-
actual_value = Gem::Specification.attribute_names.map {
|
723
|
+
actual_value = Gem::Specification.attribute_names.map {|a| a.to_s }.sort
|
719
724
|
|
720
725
|
assert_equal expected_value, actual_value
|
721
726
|
end
|
@@ -790,7 +795,7 @@ bindir:
|
|
790
795
|
op = spec.dependencies.first.requirement.requirements.first.first
|
791
796
|
refute_kind_of YAML::Syck::DefaultKey, op
|
792
797
|
|
793
|
-
refute_match %r
|
798
|
+
refute_match %r{DefaultKey}, spec.to_ruby
|
794
799
|
end
|
795
800
|
|
796
801
|
def test_self_from_yaml_cleans_up_defaultkey
|
@@ -824,7 +829,7 @@ bindir:
|
|
824
829
|
op = spec.dependencies.first.requirement.requirements.first.first
|
825
830
|
refute_kind_of YAML::Syck::DefaultKey, op
|
826
831
|
|
827
|
-
refute_match %r
|
832
|
+
refute_match %r{DefaultKey}, spec.to_ruby
|
828
833
|
end
|
829
834
|
|
830
835
|
def test_self_from_yaml_cleans_up_defaultkey_from_newer_192
|
@@ -858,7 +863,7 @@ bindir:
|
|
858
863
|
op = spec.dependencies.first.requirement.requirements.first.first
|
859
864
|
refute_kind_of YAML::Syck::DefaultKey, op
|
860
865
|
|
861
|
-
refute_match %r
|
866
|
+
refute_match %r{DefaultKey}, spec.to_ruby
|
862
867
|
end
|
863
868
|
|
864
869
|
def test_self_from_yaml_cleans_up_Date_objects
|
@@ -939,7 +944,7 @@ dependencies: []
|
|
939
944
|
assert_equal File.join(@tempdir, 'a-2.gemspec'), spec.loaded_from
|
940
945
|
end
|
941
946
|
|
942
|
-
if RUBY_VERSION < '2.7'
|
947
|
+
if RUBY_ENGINE == 'ruby' and RUBY_VERSION < '2.7'
|
943
948
|
def test_self_load_tainted
|
944
949
|
full_path = @a2.spec_file
|
945
950
|
write_file full_path do |io|
|
@@ -1108,13 +1113,13 @@ dependencies: []
|
|
1108
1113
|
install_specs @a1
|
1109
1114
|
|
1110
1115
|
assert_includes Gem::Specification.all_names, 'a-1'
|
1111
|
-
assert_includes Gem::Specification.stubs.map {
|
1116
|
+
assert_includes Gem::Specification.stubs.map {|s| s.full_name }, 'a-1'
|
1112
1117
|
|
1113
1118
|
uninstall_gem @a1
|
1114
1119
|
Gem::Specification.reset
|
1115
1120
|
|
1116
1121
|
refute_includes Gem::Specification.all_names, 'a-1'
|
1117
|
-
refute_includes Gem::Specification.stubs.map {
|
1122
|
+
refute_includes Gem::Specification.stubs.map {|s| s.full_name }, 'a-1'
|
1118
1123
|
end
|
1119
1124
|
|
1120
1125
|
def test_self_remove_spec_removed
|
@@ -1129,48 +1134,30 @@ dependencies: []
|
|
1129
1134
|
Gem::Specification.reset
|
1130
1135
|
|
1131
1136
|
refute_includes Gem::Specification.all_names, 'a-1'
|
1132
|
-
refute_includes Gem::Specification.stubs.map {
|
1133
|
-
end
|
1134
|
-
|
1135
|
-
def test_self_stubs
|
1136
|
-
Gem.loaded_specs.clear
|
1137
|
-
Gem::Specification.class_variable_set(:@@stubs, nil)
|
1138
|
-
|
1139
|
-
dir_standard_specs = File.join Gem.dir, 'specifications'
|
1140
|
-
dir_default_specs = Gem.default_specifications_dir
|
1141
|
-
|
1142
|
-
# Create gemspecs in three locations used in stubs
|
1143
|
-
loaded_spec = Gem::Specification.new 'a', '3'
|
1144
|
-
Gem.loaded_specs['a'] = loaded_spec
|
1145
|
-
save_gemspec 'a', '2', dir_default_specs
|
1146
|
-
save_gemspec 'a', '1', dir_standard_specs
|
1147
|
-
|
1148
|
-
full_names = ['a-3', 'a-2', 'a-1']
|
1149
|
-
assert_equal full_names, Gem::Specification.stubs.map { |s| s.full_name }
|
1150
|
-
|
1151
|
-
Gem.loaded_specs.delete 'a'
|
1152
|
-
Gem::Specification.class_variable_set(:@@stubs, nil)
|
1137
|
+
refute_includes Gem::Specification.stubs.map {|s| s.full_name }, 'a-1'
|
1153
1138
|
end
|
1154
1139
|
|
1155
|
-
def
|
1140
|
+
def test_self_stubs_for_lazy_loading
|
1156
1141
|
Gem.loaded_specs.clear
|
1157
1142
|
Gem::Specification.class_variable_set(:@@stubs, nil)
|
1158
1143
|
|
1159
1144
|
dir_standard_specs = File.join Gem.dir, 'specifications'
|
1160
|
-
dir_default_specs = Gem.default_specifications_dir
|
1161
|
-
|
1162
|
-
# Create gemspecs in three locations used in stubs
|
1163
|
-
loaded_spec = Gem::Specification.new 'a', '3'
|
1164
|
-
Gem.loaded_specs['a'] = loaded_spec
|
1165
|
-
save_gemspec('a-2', '2', dir_default_specs) { |s| s.name = 'a' }
|
1166
|
-
save_gemspec('a-1', '1', dir_standard_specs) { |s| s.name = 'a' }
|
1167
1145
|
|
1168
|
-
|
1146
|
+
save_gemspec('a-1', '1', dir_standard_specs){|s| s.name = 'a' }
|
1147
|
+
save_gemspec('b-1', '1', dir_standard_specs){|s| s.name = 'b' }
|
1169
1148
|
|
1170
|
-
assert_equal
|
1149
|
+
assert_equal ['a-1'], Gem::Specification.stubs_for('a').map {|s| s.full_name }
|
1171
1150
|
assert_equal 1, Gem::Specification.class_variable_get(:@@stubs_by_name).length
|
1151
|
+
assert_equal ['b-1'], Gem::Specification.stubs_for('b').map {|s| s.full_name }
|
1152
|
+
assert_equal 2, Gem::Specification.class_variable_get(:@@stubs_by_name).length
|
1153
|
+
|
1154
|
+
assert_equal(
|
1155
|
+
Gem::Specification.stubs_for('a').map {|s| s.object_id },
|
1156
|
+
Gem::Specification.stubs_for('a').map {|s| s.object_id }
|
1157
|
+
)
|
1172
1158
|
|
1173
1159
|
Gem.loaded_specs.delete 'a'
|
1160
|
+
Gem.loaded_specs.delete 'b'
|
1174
1161
|
Gem::Specification.class_variable_set(:@@stubs, nil)
|
1175
1162
|
end
|
1176
1163
|
|
@@ -1182,7 +1169,7 @@ dependencies: []
|
|
1182
1169
|
|
1183
1170
|
# create user spec
|
1184
1171
|
user_spec_dir = File.join Gem.user_dir, 'specifications'
|
1185
|
-
FileUtils.mkdir_p(user_spec_dir)
|
1172
|
+
FileUtils.mkdir_p(user_spec_dir) unless Dir.exist? user_spec_dir
|
1186
1173
|
# dirs doesn't include user ?
|
1187
1174
|
Gem::Specification.dirs << user_spec_dir
|
1188
1175
|
|
@@ -1192,7 +1179,7 @@ dependencies: []
|
|
1192
1179
|
|
1193
1180
|
#create specs
|
1194
1181
|
platforms.each do |plat|
|
1195
|
-
spec = Gem::Specification.new(gem, v) {
|
1182
|
+
spec = Gem::Specification.new(gem, v) {|s| s.platform = plat }
|
1196
1183
|
File.open File.join(user_spec_dir, "#{gem}-#{v}-#{plat}.gemspec"), 'w' do |io|
|
1197
1184
|
io.write spec.to_ruby
|
1198
1185
|
end
|
@@ -1383,12 +1370,12 @@ dependencies: []
|
|
1383
1370
|
awesome.add_dependency :gem_name
|
1384
1371
|
end
|
1385
1372
|
|
1386
|
-
assert_equal %w[true gem_name], gem.dependencies.map {
|
1373
|
+
assert_equal %w[true gem_name], gem.dependencies.map {|dep| dep.name }
|
1387
1374
|
end
|
1388
1375
|
|
1389
1376
|
def test_add_dependency_from_existing_dependency
|
1390
1377
|
dep = Gem::Dependency.new("existing_dep", Gem::Requirement.new('> 1'), :runtime)
|
1391
|
-
spec = Gem::Specification.new {
|
1378
|
+
spec = Gem::Specification.new {|s| s.add_dependency dep }
|
1392
1379
|
assert_equal dep, spec.dependencies.first
|
1393
1380
|
end
|
1394
1381
|
|
@@ -1397,7 +1384,7 @@ dependencies: []
|
|
1397
1384
|
awesome.add_development_dependency "monkey"
|
1398
1385
|
end
|
1399
1386
|
|
1400
|
-
monkey = gem.dependencies.detect {
|
1387
|
+
monkey = gem.dependencies.detect {|d| d.name == "monkey" }
|
1401
1388
|
assert_equal(:development, monkey.type)
|
1402
1389
|
end
|
1403
1390
|
|
@@ -1495,7 +1482,7 @@ dependencies: []
|
|
1495
1482
|
default = new_default_spec 'default', 2
|
1496
1483
|
install_default_gems default
|
1497
1484
|
|
1498
|
-
stub = Gem::Specification.stubs.find {
|
1485
|
+
stub = Gem::Specification.stubs.find {|s| s.name == 'default' }
|
1499
1486
|
assert_predicate stub, :default_gem?
|
1500
1487
|
|
1501
1488
|
stub = Gem::Specification.find_all_by_name('default').first
|
@@ -1850,7 +1837,6 @@ dependencies: []
|
|
1850
1837
|
RbConfig::CONFIG['ENABLE_SHARED'], 'no'
|
1851
1838
|
|
1852
1839
|
class << Gem
|
1853
|
-
|
1854
1840
|
alias orig_default_ext_dir_for default_ext_dir_for
|
1855
1841
|
|
1856
1842
|
remove_method :default_ext_dir_for
|
@@ -1858,7 +1844,6 @@ dependencies: []
|
|
1858
1844
|
def Gem.default_ext_dir_for(base_dir)
|
1859
1845
|
'elsewhere'
|
1860
1846
|
end
|
1861
|
-
|
1862
1847
|
end
|
1863
1848
|
|
1864
1849
|
ext_spec
|
@@ -1872,20 +1857,18 @@ dependencies: []
|
|
1872
1857
|
RbConfig::CONFIG['ENABLE_SHARED'] = enable_shared
|
1873
1858
|
|
1874
1859
|
class << Gem
|
1875
|
-
|
1876
1860
|
remove_method :default_ext_dir_for
|
1877
1861
|
|
1878
1862
|
alias default_ext_dir_for orig_default_ext_dir_for
|
1879
|
-
|
1880
1863
|
end
|
1881
1864
|
end
|
1882
1865
|
|
1883
1866
|
def test_files
|
1884
|
-
@a1.files = %w
|
1885
|
-
@a1.test_files = %w
|
1886
|
-
@a1.executables = %w
|
1887
|
-
@a1.extra_rdoc_files = %w
|
1888
|
-
@a1.extensions = %w
|
1867
|
+
@a1.files = %w[files bin/common]
|
1868
|
+
@a1.test_files = %w[test_files bin/common]
|
1869
|
+
@a1.executables = %w[executables common]
|
1870
|
+
@a1.extra_rdoc_files = %w[extra_rdoc_files bin/common]
|
1871
|
+
@a1.extensions = %w[extensions bin/common]
|
1889
1872
|
|
1890
1873
|
expected = %w[
|
1891
1874
|
bin/common
|
@@ -1899,11 +1882,11 @@ dependencies: []
|
|
1899
1882
|
end
|
1900
1883
|
|
1901
1884
|
def test_files_append
|
1902
|
-
@a1.files = %w
|
1903
|
-
@a1.test_files = %w
|
1904
|
-
@a1.executables = %w
|
1905
|
-
@a1.extra_rdoc_files = %w
|
1906
|
-
@a1.extensions = %w
|
1885
|
+
@a1.files = %w[files bin/common]
|
1886
|
+
@a1.test_files = %w[test_files bin/common]
|
1887
|
+
@a1.executables = %w[executables common]
|
1888
|
+
@a1.extra_rdoc_files = %w[extra_rdoc_files bin/common]
|
1889
|
+
@a1.extensions = %w[extensions bin/common]
|
1907
1890
|
|
1908
1891
|
expected = %w[
|
1909
1892
|
bin/common
|
@@ -2017,7 +2000,7 @@ dependencies: []
|
|
2017
2000
|
test_cases = {
|
2018
2001
|
'i386-mswin32' => 'a-1-x86-mswin32-60',
|
2019
2002
|
'i386-mswin32_80' => 'a-1-x86-mswin32-80',
|
2020
|
-
'i386-mingw32' => 'a-1-x86-mingw32'
|
2003
|
+
'i386-mingw32' => 'a-1-x86-mingw32',
|
2021
2004
|
}
|
2022
2005
|
|
2023
2006
|
test_cases.each do |arch, expected|
|
@@ -2166,11 +2149,9 @@ dependencies: []
|
|
2166
2149
|
|
2167
2150
|
def test_require_paths_default_ext_dir_for
|
2168
2151
|
class << Gem
|
2169
|
-
|
2170
2152
|
send :alias_method, :orig_default_ext_dir_for, :default_ext_dir_for
|
2171
2153
|
|
2172
2154
|
remove_method :default_ext_dir_for
|
2173
|
-
|
2174
2155
|
end
|
2175
2156
|
|
2176
2157
|
def Gem.default_ext_dir_for(base_dir)
|
@@ -2186,11 +2167,9 @@ dependencies: []
|
|
2186
2167
|
end
|
2187
2168
|
ensure
|
2188
2169
|
class << Gem
|
2189
|
-
|
2190
2170
|
send :remove_method, :default_ext_dir_for
|
2191
2171
|
send :alias_method, :default_ext_dir_for, :orig_default_ext_dir_for
|
2192
2172
|
send :remove_method, :orig_default_ext_dir_for
|
2193
|
-
|
2194
2173
|
end
|
2195
2174
|
end
|
2196
2175
|
|
@@ -2292,12 +2271,12 @@ dependencies: []
|
|
2292
2271
|
install_specs a1 # , a2, b1, b2, c1, c2
|
2293
2272
|
|
2294
2273
|
a1.activate
|
2295
|
-
assert_equal %w
|
2274
|
+
assert_equal %w[a-1], loaded_spec_names
|
2296
2275
|
assert_equal [], unresolved_names
|
2297
2276
|
|
2298
2277
|
assert require "d#{$$}"
|
2299
2278
|
|
2300
|
-
assert_equal %w
|
2279
|
+
assert_equal %w[a-1], loaded_spec_names
|
2301
2280
|
assert_equal [], unresolved_names
|
2302
2281
|
end
|
2303
2282
|
end
|
@@ -2315,12 +2294,12 @@ dependencies: []
|
|
2315
2294
|
|
2316
2295
|
a1.activate
|
2317
2296
|
c1.activate
|
2318
|
-
assert_equal %w
|
2297
|
+
assert_equal %w[a-1 c-1], loaded_spec_names
|
2319
2298
|
assert_equal ["b (> 0)"], unresolved_names
|
2320
2299
|
|
2321
2300
|
assert require "d#{$$}"
|
2322
2301
|
|
2323
|
-
assert_equal %w
|
2302
|
+
assert_equal %w[a-1 c-1], loaded_spec_names
|
2324
2303
|
assert_equal ["b (> 0)"], unresolved_names
|
2325
2304
|
end
|
2326
2305
|
end
|
@@ -2343,7 +2322,7 @@ dependencies: []
|
|
2343
2322
|
|
2344
2323
|
expected = %w[rake jabber4r pqa]
|
2345
2324
|
|
2346
|
-
assert_equal expected, @c1.runtime_dependencies.map {
|
2325
|
+
assert_equal expected, @c1.runtime_dependencies.map {|d| d.name }
|
2347
2326
|
end
|
2348
2327
|
|
2349
2328
|
def test_spaceship_name
|
@@ -2453,6 +2432,9 @@ end
|
|
2453
2432
|
end
|
2454
2433
|
|
2455
2434
|
def test_to_ruby_with_rsa_key
|
2435
|
+
require 'rubygems/openssl'
|
2436
|
+
skip 'openssl is missing' unless defined?(OpenSSL::PKey::RSA)
|
2437
|
+
|
2456
2438
|
rsa_key = OpenSSL::PKey::RSA.new(2048)
|
2457
2439
|
@a2.signing_key = rsa_key
|
2458
2440
|
ruby_code = @a2.to_ruby
|
@@ -2656,7 +2638,7 @@ end
|
|
2656
2638
|
def test_to_yaml_platform_empty_string
|
2657
2639
|
@a1.instance_variable_set :@original_platform, ''
|
2658
2640
|
|
2659
|
-
assert_match %r
|
2641
|
+
assert_match %r{^platform: ruby$}, @a1.to_yaml
|
2660
2642
|
end
|
2661
2643
|
|
2662
2644
|
def test_to_yaml_platform_legacy
|
@@ -2674,7 +2656,7 @@ end
|
|
2674
2656
|
def test_to_yaml_platform_nil
|
2675
2657
|
@a1.instance_variable_set :@original_platform, nil
|
2676
2658
|
|
2677
|
-
assert_match %r
|
2659
|
+
assert_match %r{^platform: ruby$}, @a1.to_yaml
|
2678
2660
|
end
|
2679
2661
|
|
2680
2662
|
def test_validate
|
@@ -2718,7 +2700,7 @@ end
|
|
2718
2700
|
@a1.validate
|
2719
2701
|
end
|
2720
2702
|
|
2721
|
-
assert_equal %
|
2703
|
+
assert_equal %("#{f}" or "#{t}" is not an author), e.message
|
2722
2704
|
|
2723
2705
|
@a1.authors = ["#{t} (who is writing this software)"]
|
2724
2706
|
|
@@ -2726,7 +2708,7 @@ end
|
|
2726
2708
|
@a1.validate
|
2727
2709
|
end
|
2728
2710
|
|
2729
|
-
assert_equal %
|
2711
|
+
assert_equal %("#{f}" or "#{t}" is not an author), e.message
|
2730
2712
|
end
|
2731
2713
|
end
|
2732
2714
|
|
@@ -2784,7 +2766,7 @@ end
|
|
2784
2766
|
add_runtime_dependency 'l', '~> 1.2', '> 1.2.3'
|
2785
2767
|
#{w}: open-ended dependency on o (>= 0) is not recommended
|
2786
2768
|
use a bounded requirement, such as '~> x.y'
|
2787
|
-
#{w}: See
|
2769
|
+
#{w}: See https://guides.rubygems.org/specification-reference/ for help
|
2788
2770
|
EXPECTED
|
2789
2771
|
|
2790
2772
|
assert_equal expected, @ui.error, 'warning'
|
@@ -2816,7 +2798,7 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
|
|
2816
2798
|
end
|
2817
2799
|
|
2818
2800
|
assert_equal <<-EXPECTED, @ui.error
|
2819
|
-
#{w}: See
|
2801
|
+
#{w}: See https://guides.rubygems.org/specification-reference/ for help
|
2820
2802
|
EXPECTED
|
2821
2803
|
end
|
2822
2804
|
end
|
@@ -2851,6 +2833,37 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
|
|
2851
2833
|
end
|
2852
2834
|
end
|
2853
2835
|
|
2836
|
+
def test_validate_rake_extension_have_rake_dependency_warning
|
2837
|
+
util_setup_validate
|
2838
|
+
|
2839
|
+
Dir.chdir @tempdir do
|
2840
|
+
@a1.extensions = ['Rakefile']
|
2841
|
+
File.write File.join(@tempdir, 'Rakefile'), ''
|
2842
|
+
|
2843
|
+
use_ui @ui do
|
2844
|
+
@a1.validate
|
2845
|
+
end
|
2846
|
+
|
2847
|
+
assert_match(/add rake as a dependency/, @ui.error)
|
2848
|
+
end
|
2849
|
+
end
|
2850
|
+
|
2851
|
+
def test_validate_rake_extension_have_rake_dependency_no_warning
|
2852
|
+
util_setup_validate
|
2853
|
+
|
2854
|
+
Dir.chdir @tempdir do
|
2855
|
+
@a1.extensions = ['Rakefile']
|
2856
|
+
@a1.add_runtime_dependency 'rake'
|
2857
|
+
File.write File.join(@tempdir, 'Rakefile'), ''
|
2858
|
+
|
2859
|
+
use_ui @ui do
|
2860
|
+
@a1.validate
|
2861
|
+
end
|
2862
|
+
|
2863
|
+
refute_match(/add rake as a dependency/, @ui.error)
|
2864
|
+
end
|
2865
|
+
end
|
2866
|
+
|
2854
2867
|
def test_validate_description
|
2855
2868
|
util_setup_validate
|
2856
2869
|
|
@@ -2878,7 +2891,7 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
|
|
2878
2891
|
@a1.validate
|
2879
2892
|
end
|
2880
2893
|
|
2881
|
-
assert_equal %
|
2894
|
+
assert_equal %("#{f}" or "#{t}" is not a description), e.message
|
2882
2895
|
|
2883
2896
|
@a1.description = "#{t} (describe your package)"
|
2884
2897
|
|
@@ -2886,7 +2899,7 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
|
|
2886
2899
|
@a1.validate
|
2887
2900
|
end
|
2888
2901
|
|
2889
|
-
assert_equal %
|
2902
|
+
assert_equal %("#{f}" or "#{t}" is not a description), e.message
|
2890
2903
|
end
|
2891
2904
|
end
|
2892
2905
|
|
@@ -2900,7 +2913,7 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
|
|
2900
2913
|
@a1.validate
|
2901
2914
|
end
|
2902
2915
|
|
2903
|
-
assert_equal %
|
2916
|
+
assert_equal %("#{f}" or "#{t}" is not an email), e.message
|
2904
2917
|
|
2905
2918
|
@a1.email = "#{t} (your e-mail)"
|
2906
2919
|
|
@@ -2908,7 +2921,7 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
|
|
2908
2921
|
@a1.validate
|
2909
2922
|
end
|
2910
2923
|
|
2911
|
-
assert_equal %
|
2924
|
+
assert_equal %("#{f}" or "#{t}" is not an email), e.message
|
2912
2925
|
end
|
2913
2926
|
end
|
2914
2927
|
|
@@ -2927,7 +2940,7 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
|
|
2927
2940
|
end
|
2928
2941
|
end
|
2929
2942
|
|
2930
|
-
assert_match 'See
|
2943
|
+
assert_match 'See https://guides.rubygems.org/specification-reference/ for help', @ui.error
|
2931
2944
|
end
|
2932
2945
|
|
2933
2946
|
def test_validate_executables
|
@@ -3022,8 +3035,8 @@ Please report a bug if this causes problems.
|
|
3022
3035
|
|
3023
3036
|
specification.define_singleton_method(:find_all_by_name) do |dep_name|
|
3024
3037
|
[
|
3025
|
-
specification.new {
|
3026
|
-
specification.new {
|
3038
|
+
specification.new {|s| s.name = "z", s.version = Gem::Version.new("1") },
|
3039
|
+
specification.new {|s| s.name = "z", s.version = Gem::Version.new("2") },
|
3027
3040
|
]
|
3028
3041
|
end
|
3029
3042
|
|
@@ -3042,6 +3055,13 @@ Please report a bug if this causes problems.
|
|
3042
3055
|
end
|
3043
3056
|
end
|
3044
3057
|
|
3058
|
+
def test_duplicate_runtime_dependency
|
3059
|
+
expected = "WARNING: duplicated b dependency [\"~> 3.0\", \"~> 3.0\"]\n"
|
3060
|
+
assert_output nil, expected do
|
3061
|
+
@a1.add_runtime_dependency "b", "~> 3.0", "~> 3.0"
|
3062
|
+
end
|
3063
|
+
end
|
3064
|
+
|
3045
3065
|
def set_orig(cls)
|
3046
3066
|
s_cls = cls.singleton_class
|
3047
3067
|
s_cls.send :alias_method, :orig_unresolved_deps , :unresolved_deps
|
@@ -3100,7 +3120,7 @@ Please report a bug if this causes problems.
|
|
3100
3120
|
|
3101
3121
|
assert_equal '"ftp://rubygems.org" is not a valid HTTP URI', e.message
|
3102
3122
|
|
3103
|
-
@a1.homepage = '
|
3123
|
+
@a1.homepage = 'https://rubygems.org/'
|
3104
3124
|
assert_equal true, @a1.validate
|
3105
3125
|
|
3106
3126
|
@a1.homepage = 'https://rubygems.org'
|
@@ -3117,10 +3137,36 @@ Please report a bug if this causes problems.
|
|
3117
3137
|
@a1.validate
|
3118
3138
|
end
|
3119
3139
|
|
3120
|
-
assert_match <<-
|
3140
|
+
assert_match <<-WARNING, @ui.error
|
3121
3141
|
WARNING: licenses is empty, but is recommended. Use a license identifier from
|
3122
3142
|
http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
|
3123
|
-
|
3143
|
+
WARNING
|
3144
|
+
end
|
3145
|
+
|
3146
|
+
def test_validate_license_in_a_non_packaging_context
|
3147
|
+
util_setup_validate
|
3148
|
+
|
3149
|
+
use_ui @ui do
|
3150
|
+
@a1.licenses.clear
|
3151
|
+
@a1.validate(false)
|
3152
|
+
end
|
3153
|
+
|
3154
|
+
assert_empty @ui.error
|
3155
|
+
end
|
3156
|
+
|
3157
|
+
def test_removed_methods
|
3158
|
+
assert_equal Gem::Specification::REMOVED_METHODS, [:rubyforge_project=]
|
3159
|
+
end
|
3160
|
+
|
3161
|
+
def test_validate_removed_rubyforge_project
|
3162
|
+
util_setup_validate
|
3163
|
+
|
3164
|
+
use_ui @ui do
|
3165
|
+
@a1.rubyforge_project = 'invalid-attribute'
|
3166
|
+
@a1.validate
|
3167
|
+
end
|
3168
|
+
|
3169
|
+
assert_match "rubyforge_project= is deprecated", @ui.error
|
3124
3170
|
end
|
3125
3171
|
|
3126
3172
|
def test_validate_license_values
|
@@ -3131,10 +3177,10 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
|
|
3131
3177
|
@a1.validate
|
3132
3178
|
end
|
3133
3179
|
|
3134
|
-
assert_match <<-
|
3180
|
+
assert_match <<-WARNING, @ui.error
|
3135
3181
|
WARNING: license value 'BSD' is invalid. Use a license identifier from
|
3136
3182
|
http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
|
3137
|
-
|
3183
|
+
WARNING
|
3138
3184
|
end
|
3139
3185
|
|
3140
3186
|
def test_validate_license_values_plus
|
@@ -3178,14 +3224,14 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
|
|
3178
3224
|
@a1.validate
|
3179
3225
|
end
|
3180
3226
|
|
3181
|
-
assert_match <<-
|
3227
|
+
assert_match <<-WARNING, @ui.error
|
3182
3228
|
WARNING: license value 'GPL-2.0+ FOO' is invalid. Use a license identifier from
|
3183
3229
|
http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
|
3184
|
-
|
3185
|
-
assert_match <<-
|
3230
|
+
WARNING
|
3231
|
+
assert_match <<-WARNING, @ui.error
|
3186
3232
|
WARNING: license value 'GPL-2.0 FOO' is invalid. Use a license identifier from
|
3187
3233
|
http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
|
3188
|
-
|
3234
|
+
WARNING
|
3189
3235
|
end
|
3190
3236
|
|
3191
3237
|
def test_validate_license_with_invalid_exception
|
@@ -3196,10 +3242,10 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
|
|
3196
3242
|
@a1.validate
|
3197
3243
|
end
|
3198
3244
|
|
3199
|
-
assert_match <<-
|
3245
|
+
assert_match <<-WARNING, @ui.error
|
3200
3246
|
WARNING: license value 'GPL-2.0+ WITH Autocofn-exception-2.0' is invalid. Use a license identifier from
|
3201
3247
|
http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
|
3202
|
-
|
3248
|
+
WARNING
|
3203
3249
|
end
|
3204
3250
|
|
3205
3251
|
def test_validate_license_gives_suggestions
|
@@ -3210,11 +3256,11 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
|
|
3210
3256
|
@a1.validate
|
3211
3257
|
end
|
3212
3258
|
|
3213
|
-
assert_match <<-
|
3259
|
+
assert_match <<-WARNING, @ui.error
|
3214
3260
|
WARNING: license value 'ruby' is invalid. Use a license identifier from
|
3215
3261
|
http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
|
3216
3262
|
Did you mean 'Ruby'?
|
3217
|
-
|
3263
|
+
WARNING
|
3218
3264
|
end
|
3219
3265
|
|
3220
3266
|
def test_validate_empty_files
|
@@ -3310,7 +3356,7 @@ Did you mean 'Ruby'?
|
|
3310
3356
|
spec.validate
|
3311
3357
|
end
|
3312
3358
|
|
3313
|
-
assert_match %r
|
3359
|
+
assert_match %r{^#{name}}, e.message
|
3314
3360
|
end
|
3315
3361
|
end
|
3316
3362
|
end
|
@@ -3410,7 +3456,7 @@ Did you mean 'Ruby'?
|
|
3410
3456
|
@a1.validate
|
3411
3457
|
end
|
3412
3458
|
|
3413
|
-
assert_equal %
|
3459
|
+
assert_equal %("#{f}" or "#{t}" is not a summary), e.message
|
3414
3460
|
|
3415
3461
|
@a1.summary = "#{t} (describe your package)"
|
3416
3462
|
|
@@ -3418,7 +3464,7 @@ Did you mean 'Ruby'?
|
|
3418
3464
|
@a1.validate
|
3419
3465
|
end
|
3420
3466
|
|
3421
|
-
assert_equal %
|
3467
|
+
assert_equal %("#{f}" or "#{t}" is not a summary), e.message
|
3422
3468
|
end
|
3423
3469
|
end
|
3424
3470
|
|
@@ -3430,7 +3476,7 @@ Did you mean 'Ruby'?
|
|
3430
3476
|
@a1.validate
|
3431
3477
|
end
|
3432
3478
|
|
3433
|
-
assert_match 'See
|
3479
|
+
assert_match 'See https://guides.rubygems.org/specification-reference/ for help', @ui.error
|
3434
3480
|
end
|
3435
3481
|
|
3436
3482
|
def test_version
|
@@ -3532,7 +3578,8 @@ Did you mean 'Ruby'?
|
|
3532
3578
|
s.metadata = {
|
3533
3579
|
"one" => "two",
|
3534
3580
|
"home" => "three",
|
3535
|
-
"homepage_uri" => "https://example.com/user/repo"
|
3581
|
+
"homepage_uri" => "https://example.com/user/repo",
|
3582
|
+
"funding_uri" => "https://example.com/donate",
|
3536
3583
|
}
|
3537
3584
|
end
|
3538
3585
|
|
@@ -3792,7 +3839,7 @@ end
|
|
3792
3839
|
|
3793
3840
|
default_gem_spec = new_default_spec("default", "2.0.0.0",
|
3794
3841
|
nil, "default/gem.rb")
|
3795
|
-
spec_path = File.join(@
|
3842
|
+
spec_path = File.join(@gemhome, "specifications", "default", default_gem_spec.spec_name)
|
3796
3843
|
write_file(spec_path) do |file|
|
3797
3844
|
file.print(default_gem_spec.to_ruby)
|
3798
3845
|
end
|
@@ -3817,12 +3864,17 @@ end
|
|
3817
3864
|
FileUtils.mkdir_p "test"
|
3818
3865
|
FileUtils.mkdir_p "bin"
|
3819
3866
|
|
3820
|
-
|
3821
|
-
|
3822
|
-
|
3867
|
+
begin
|
3868
|
+
umask_orig = File.umask(2)
|
3869
|
+
FileUtils.touch File.join("ext", "a", "extconf.rb")
|
3870
|
+
FileUtils.touch File.join("lib", "code.rb")
|
3871
|
+
FileUtils.touch File.join("test", "suite.rb")
|
3823
3872
|
|
3824
|
-
|
3825
|
-
|
3873
|
+
File.open "bin/exec", "w", 0755 do |fp|
|
3874
|
+
fp.puts "#!#{Gem.ruby}"
|
3875
|
+
end
|
3876
|
+
ensure
|
3877
|
+
File.umask(umask_orig)
|
3826
3878
|
end
|
3827
3879
|
end
|
3828
3880
|
end
|
@@ -3876,5 +3928,4 @@ end
|
|
3876
3928
|
ensure
|
3877
3929
|
$VERBOSE = old_verbose
|
3878
3930
|
end
|
3879
|
-
|
3880
3931
|
end
|