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
@@ -1,11 +1,9 @@
|
|
1
|
-
# coding: UTF-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
3
|
require 'rubygems/test_case'
|
5
4
|
require 'rubygems/ext'
|
6
5
|
|
7
6
|
class TestGemExtExtConfBuilder < Gem::TestCase
|
8
|
-
|
9
7
|
def setup
|
10
8
|
super
|
11
9
|
|
@@ -31,12 +29,9 @@ class TestGemExtExtConfBuilder < Gem::TestCase
|
|
31
29
|
|
32
30
|
output = []
|
33
31
|
|
34
|
-
|
35
|
-
result =
|
36
|
-
Gem::Ext::ExtConfBuilder.build 'extconf.rb', @dest_path, output
|
32
|
+
result = Gem::Ext::ExtConfBuilder.build 'extconf.rb', @dest_path, output, [], nil, @ext
|
37
33
|
|
38
|
-
|
39
|
-
end
|
34
|
+
assert_same result, output
|
40
35
|
|
41
36
|
assert_match(/^current directory:/, output[0])
|
42
37
|
assert_match(/^#{Gem.ruby}.* extconf.rb/, output[1])
|
@@ -61,9 +56,7 @@ class TestGemExtExtConfBuilder < Gem::TestCase
|
|
61
56
|
|
62
57
|
output = []
|
63
58
|
|
64
|
-
|
65
|
-
Gem::Ext::ExtConfBuilder.build 'extconf.rb', @dest_path, output
|
66
|
-
end
|
59
|
+
Gem::Ext::ExtConfBuilder.build 'extconf.rb', @dest_path, output, [], nil, @ext
|
67
60
|
|
68
61
|
assert_equal "creating Makefile\n", output[2]
|
69
62
|
assert_contains_make_command 'clean', output[4]
|
@@ -88,9 +81,7 @@ class TestGemExtExtConfBuilder < Gem::TestCase
|
|
88
81
|
output = []
|
89
82
|
|
90
83
|
assert_raises Gem::InstallError do
|
91
|
-
|
92
|
-
Gem::Ext::ExtConfBuilder.build 'extconf.rb', @dest_path, output
|
93
|
-
end
|
84
|
+
Gem::Ext::ExtConfBuilder.build 'extconf.rb', @dest_path, output, [], nil, @ext
|
94
85
|
end
|
95
86
|
|
96
87
|
assert_equal "creating Makefile\n", output[2]
|
@@ -114,9 +105,7 @@ class TestGemExtExtConfBuilder < Gem::TestCase
|
|
114
105
|
output = []
|
115
106
|
|
116
107
|
error = assert_raises Gem::InstallError do
|
117
|
-
|
118
|
-
Gem::Ext::ExtConfBuilder.build 'extconf.rb', @dest_path, output
|
119
|
-
end
|
108
|
+
Gem::Ext::ExtConfBuilder.build 'extconf.rb', @dest_path, output, [], nil, @ext
|
120
109
|
end
|
121
110
|
|
122
111
|
assert_equal 'extconf failed, exit code 1', error.message
|
@@ -141,9 +130,7 @@ class TestGemExtExtConfBuilder < Gem::TestCase
|
|
141
130
|
|
142
131
|
output = []
|
143
132
|
|
144
|
-
|
145
|
-
Gem::Ext::ExtConfBuilder.build 'extconf.rb', @dest_path, output
|
146
|
-
end
|
133
|
+
Gem::Ext::ExtConfBuilder.build 'extconf.rb', @dest_path, output, [], nil, @ext
|
147
134
|
|
148
135
|
refute_includes(output, "To see why this extension failed to compile, please check the mkmf.log which can be found here:\n")
|
149
136
|
|
@@ -183,9 +170,7 @@ end
|
|
183
170
|
|
184
171
|
output = []
|
185
172
|
|
186
|
-
|
187
|
-
Gem::Ext::ExtConfBuilder.build 'extconf.rb', @dest_path, output
|
188
|
-
end
|
173
|
+
Gem::Ext::ExtConfBuilder.build 'extconf.rb', @dest_path, output, [], nil, @ext
|
189
174
|
|
190
175
|
assert_contains_make_command 'clean', output[4]
|
191
176
|
assert_contains_make_command '', output[7]
|
@@ -209,9 +194,7 @@ end
|
|
209
194
|
makefile.puts "install:"
|
210
195
|
end
|
211
196
|
|
212
|
-
|
213
|
-
Gem::Ext::ExtConfBuilder.make @ext, output
|
214
|
-
end
|
197
|
+
Gem::Ext::ExtConfBuilder.make @ext, output, @ext
|
215
198
|
|
216
199
|
assert_contains_make_command 'clean', output[1]
|
217
200
|
assert_contains_make_command '', output[4]
|
@@ -220,9 +203,7 @@ end
|
|
220
203
|
|
221
204
|
def test_class_make_no_Makefile
|
222
205
|
error = assert_raises Gem::InstallError do
|
223
|
-
|
224
|
-
Gem::Ext::ExtConfBuilder.make @ext, ['output']
|
225
|
-
end
|
206
|
+
Gem::Ext::ExtConfBuilder.make @ext, ['output'], @ext
|
226
207
|
end
|
227
208
|
|
228
209
|
assert_equal 'Makefile not found', error.message
|
@@ -241,5 +222,4 @@ end
|
|
241
222
|
RbConfig::CONFIG.delete 'configure_args'
|
242
223
|
end
|
243
224
|
end
|
244
|
-
|
245
225
|
end
|
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
|
|
3
3
|
require 'rubygems/ext'
|
4
4
|
|
5
5
|
class TestGemExtRakeBuilder < Gem::TestCase
|
6
|
-
|
7
6
|
def setup
|
8
7
|
super
|
9
8
|
|
@@ -19,15 +18,13 @@ class TestGemExtRakeBuilder < Gem::TestCase
|
|
19
18
|
output = []
|
20
19
|
|
21
20
|
build_rake_in do |rake|
|
22
|
-
|
23
|
-
Gem::Ext::RakeBuilder.build 'mkrf_conf.rb', @dest_path, output
|
24
|
-
end
|
21
|
+
Gem::Ext::RakeBuilder.build 'mkrf_conf.rb', @dest_path, output, [], nil, @ext
|
25
22
|
|
26
23
|
output = output.join "\n"
|
27
24
|
|
28
|
-
refute_match %r
|
29
|
-
assert_match %r
|
30
|
-
assert_match %r
|
25
|
+
refute_match %r{^rake failed:}, output
|
26
|
+
assert_match %r{^#{Regexp.escape Gem.ruby} mkrf_conf\.rb}, output
|
27
|
+
assert_match %r{^#{Regexp.escape rake} RUBYARCHDIR\\=#{Regexp.escape @dest_path} RUBYLIBDIR\\=#{Regexp.escape @dest_path}}, output
|
31
28
|
end
|
32
29
|
end
|
33
30
|
|
@@ -39,31 +36,52 @@ class TestGemExtRakeBuilder < Gem::TestCase
|
|
39
36
|
output = []
|
40
37
|
|
41
38
|
build_rake_in do |rake|
|
42
|
-
|
43
|
-
|
44
|
-
Gem::Ext::RakeBuilder.build 'mkrf_conf.rb', @dest_path, output, non_empty_args_list
|
45
|
-
end
|
39
|
+
non_empty_args_list = ['']
|
40
|
+
Gem::Ext::RakeBuilder.build 'mkrf_conf.rb', @dest_path, output, non_empty_args_list, nil, @ext
|
46
41
|
|
47
42
|
output = output.join "\n"
|
48
43
|
|
49
|
-
refute_match %r
|
50
|
-
assert_match %r
|
51
|
-
assert_match %r
|
44
|
+
refute_match %r{^rake failed:}, output
|
45
|
+
assert_match %r{^#{Regexp.escape Gem.ruby} mkrf_conf\.rb}, output
|
46
|
+
assert_match %r{^#{Regexp.escape rake} RUBYARCHDIR\\=#{Regexp.escape @dest_path} RUBYLIBDIR\\=#{Regexp.escape @dest_path}}, output
|
52
47
|
end
|
53
48
|
end
|
54
49
|
|
50
|
+
def test_class_no_openssl_override
|
51
|
+
create_temp_mkrf_file('task :default')
|
52
|
+
|
53
|
+
rake = util_spec 'rake' do |s|
|
54
|
+
s.executables = %w[rake]
|
55
|
+
s.files = %w[bin/rake]
|
56
|
+
end
|
57
|
+
|
58
|
+
output = []
|
59
|
+
|
60
|
+
write_file File.join(@tempdir, 'bin', 'rake') do |fp|
|
61
|
+
fp.puts "#!/usr/bin/ruby"
|
62
|
+
fp.puts "require 'openssl'; puts OpenSSL"
|
63
|
+
end
|
64
|
+
|
65
|
+
install_gem rake
|
66
|
+
|
67
|
+
Gem::Ext::RakeBuilder.build 'mkrf_conf.rb', @dest_path, output, [''], nil, @ext
|
68
|
+
|
69
|
+
output = output.join "\n"
|
70
|
+
|
71
|
+
assert_match "OpenSSL", output
|
72
|
+
assert_match %r{^#{Regexp.escape Gem.ruby} mkrf_conf\.rb}, output
|
73
|
+
end
|
74
|
+
|
55
75
|
def test_class_build_no_mkrf_passes_args
|
56
76
|
output = []
|
57
77
|
|
58
78
|
build_rake_in do |rake|
|
59
|
-
|
60
|
-
Gem::Ext::RakeBuilder.build "ext/Rakefile", @dest_path, output, ["test1", "test2"]
|
61
|
-
end
|
79
|
+
Gem::Ext::RakeBuilder.build "ext/Rakefile", @dest_path, output, ["test1", "test2"], nil, @ext
|
62
80
|
|
63
81
|
output = output.join "\n"
|
64
82
|
|
65
|
-
refute_match %r
|
66
|
-
assert_match %r
|
83
|
+
refute_match %r{^rake failed:}, output
|
84
|
+
assert_match %r{^#{Regexp.escape rake} RUBYARCHDIR\\=#{Regexp.escape @dest_path} RUBYLIBDIR\\=#{Regexp.escape @dest_path} test1 test2}, output
|
67
85
|
end
|
68
86
|
end
|
69
87
|
|
@@ -73,12 +91,10 @@ class TestGemExtRakeBuilder < Gem::TestCase
|
|
73
91
|
|
74
92
|
build_rake_in(false) do |rake|
|
75
93
|
error = assert_raises Gem::InstallError do
|
76
|
-
|
77
|
-
Gem::Ext::RakeBuilder.build "mkrf_conf.rb", @dest_path, output
|
78
|
-
end
|
94
|
+
Gem::Ext::RakeBuilder.build "mkrf_conf.rb", @dest_path, output, [], nil, @ext
|
79
95
|
end
|
80
96
|
|
81
|
-
assert_match %r
|
97
|
+
assert_match %r{^rake failed}, error.message
|
82
98
|
end
|
83
99
|
end
|
84
100
|
|
@@ -91,5 +107,4 @@ class TestGemExtRakeBuilder < Gem::TestCase
|
|
91
107
|
EO_MKRF
|
92
108
|
end
|
93
109
|
end
|
94
|
-
|
95
110
|
end
|
@@ -2,12 +2,13 @@
|
|
2
2
|
require 'rubygems/test_case'
|
3
3
|
|
4
4
|
class TestGemGemRunner < Gem::TestCase
|
5
|
-
|
6
5
|
def setup
|
7
6
|
super
|
8
7
|
|
9
8
|
require 'rubygems/command'
|
10
9
|
@orig_args = Gem::Command.build_args
|
10
|
+
@orig_specific_extra_args = Gem::Command.specific_extra_args_hash.dup
|
11
|
+
@orig_extra_args = Gem::Command.extra_args.dup
|
11
12
|
|
12
13
|
require 'rubygems/gem_runner'
|
13
14
|
@runner = Gem::GemRunner.new
|
@@ -17,6 +18,8 @@ class TestGemGemRunner < Gem::TestCase
|
|
17
18
|
super
|
18
19
|
|
19
20
|
Gem::Command.build_args = @orig_args
|
21
|
+
Gem::Command.specific_extra_args_hash = @orig_specific_extra_args
|
22
|
+
Gem::Command.extra_args = @orig_extra_args
|
20
23
|
end
|
21
24
|
|
22
25
|
def test_do_configuration
|
@@ -67,4 +70,44 @@ class TestGemGemRunner < Gem::TestCase
|
|
67
70
|
assert_equal %w[--foo], args
|
68
71
|
end
|
69
72
|
|
73
|
+
def test_query_is_deprecated
|
74
|
+
args = %w[query]
|
75
|
+
|
76
|
+
use_ui @ui do
|
77
|
+
@runner.run(args)
|
78
|
+
end
|
79
|
+
|
80
|
+
assert_match(/WARNING: query command is deprecated. It will be removed in Rubygems [0-9]+/, @ui.error)
|
81
|
+
assert_match(/WARNING: It is recommended that you use `gem search` or `gem list` instead/, @ui.error)
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_info_succeeds
|
85
|
+
args = %w[info]
|
86
|
+
|
87
|
+
use_ui @ui do
|
88
|
+
@runner.run(args)
|
89
|
+
end
|
90
|
+
|
91
|
+
assert_empty @ui.error
|
92
|
+
end
|
93
|
+
|
94
|
+
def test_list_succeeds
|
95
|
+
args = %w[list]
|
96
|
+
|
97
|
+
use_ui @ui do
|
98
|
+
@runner.run(args)
|
99
|
+
end
|
100
|
+
|
101
|
+
assert_empty @ui.error
|
102
|
+
end
|
103
|
+
|
104
|
+
def test_search_succeeds
|
105
|
+
args = %w[search]
|
106
|
+
|
107
|
+
use_ui @ui do
|
108
|
+
@runner.run(args)
|
109
|
+
end
|
110
|
+
|
111
|
+
assert_empty @ui.error
|
112
|
+
end
|
70
113
|
end
|
@@ -5,9 +5,11 @@ require 'rubygems/command'
|
|
5
5
|
require 'rubygems/gemcutter_utilities'
|
6
6
|
|
7
7
|
class TestGemGemcutterUtilities < Gem::TestCase
|
8
|
-
|
9
8
|
def setup
|
10
9
|
super
|
10
|
+
|
11
|
+
credential_setup
|
12
|
+
|
11
13
|
# below needed for random testing, class property
|
12
14
|
Gem.configuration.disable_default_gem_server = nil
|
13
15
|
|
@@ -22,13 +24,15 @@ class TestGemGemcutterUtilities < Gem::TestCase
|
|
22
24
|
ENV['RUBYGEMS_HOST'] = nil
|
23
25
|
Gem.configuration.rubygems_api_key = nil
|
24
26
|
|
27
|
+
credential_teardown
|
28
|
+
|
25
29
|
super
|
26
30
|
end
|
27
31
|
|
28
32
|
def test_alternate_key_alternate_host
|
29
33
|
keys = {
|
30
34
|
:rubygems_api_key => 'KEY',
|
31
|
-
"http://rubygems.engineyard.com" => "EYKEY"
|
35
|
+
"http://rubygems.engineyard.com" => "EYKEY",
|
32
36
|
}
|
33
37
|
|
34
38
|
FileUtils.mkdir_p File.dirname Gem.configuration.credentials_path
|
@@ -198,7 +202,7 @@ class TestGemGemcutterUtilities < Gem::TestCase
|
|
198
202
|
|
199
203
|
assert_match 'You have enabled multi-factor authentication. Please enter OTP code.', @sign_in_ui.output
|
200
204
|
assert_match 'Code: ', @sign_in_ui.output
|
201
|
-
assert_match 'Signed in
|
205
|
+
assert_match 'Signed in with API key:', @sign_in_ui.output
|
202
206
|
assert_equal '111111', @fetcher.last_request['OTP']
|
203
207
|
end
|
204
208
|
|
@@ -229,7 +233,7 @@ class TestGemGemcutterUtilities < Gem::TestCase
|
|
229
233
|
@fetcher.data["#{host}/api/v1/api_key"] = response
|
230
234
|
Gem::RemoteFetcher.fetcher = @fetcher
|
231
235
|
|
232
|
-
@sign_in_ui = Gem::MockGemUi.new("#{email}\n#{password}\n" + extra_input)
|
236
|
+
@sign_in_ui = Gem::MockGemUi.new("#{email}\n#{password}\n\n\n\n\n\n\n\n\n" + extra_input)
|
233
237
|
|
234
238
|
use_ui @sign_in_ui do
|
235
239
|
if args.length > 0
|
@@ -257,5 +261,4 @@ class TestGemGemcutterUtilities < Gem::TestCase
|
|
257
261
|
@cmd.verify_api_key :missing
|
258
262
|
end
|
259
263
|
end
|
260
|
-
|
261
264
|
end
|
@@ -2,7 +2,6 @@
|
|
2
2
|
require 'rubygems/test_case'
|
3
3
|
|
4
4
|
class TestGemImpossibleDependenciesError < Gem::TestCase
|
5
|
-
|
6
5
|
def test_message_conflict
|
7
6
|
request = dependency_request dep('net-ssh', '>= 2.0.13'), 'rye', '0.9.8'
|
8
7
|
|
@@ -57,5 +56,4 @@ rye-0.9.8 requires net-ssh (>= 2.0.13) but it conflicted:
|
|
57
56
|
|
58
57
|
assert_equal expected, error.message
|
59
58
|
end
|
60
|
-
|
61
59
|
end
|
@@ -2,12 +2,7 @@
|
|
2
2
|
require 'rubygems/test_case'
|
3
3
|
require 'rubygems/indexer'
|
4
4
|
|
5
|
-
unless defined?(Builder::XChar)
|
6
|
-
warn "Gem::Indexer tests are being skipped. Install builder gem."
|
7
|
-
end
|
8
|
-
|
9
5
|
class TestGemIndexer < Gem::TestCase
|
10
|
-
|
11
6
|
def setup
|
12
7
|
super
|
13
8
|
|
@@ -189,15 +184,15 @@ class TestGemIndexer < Gem::TestCase
|
|
189
184
|
@indexer.generate_index
|
190
185
|
end
|
191
186
|
|
192
|
-
assert_match %r
|
193
|
-
assert_match %r
|
187
|
+
assert_match %r{^\.\.\.\.\.\.\.\.\.\.\.\.$}, @ui.output
|
188
|
+
assert_match %r{^Generating Marshal quick index gemspecs for 12 gems$},
|
194
189
|
@ui.output
|
195
|
-
assert_match %r
|
196
|
-
assert_match %r
|
197
|
-
assert_match %r
|
198
|
-
assert_match %r
|
199
|
-
assert_match %r
|
200
|
-
assert_match %r
|
190
|
+
assert_match %r{^Complete$}, @ui.output
|
191
|
+
assert_match %r{^Generating specs index$}, @ui.output
|
192
|
+
assert_match %r{^Generating latest specs index$}, @ui.output
|
193
|
+
assert_match %r{^Generating prerelease specs index$}, @ui.output
|
194
|
+
assert_match %r{^Complete$}, @ui.output
|
195
|
+
assert_match %r{^Compressing indices$}, @ui.output
|
201
196
|
|
202
197
|
assert_equal '', @ui.error
|
203
198
|
end
|
@@ -359,5 +354,4 @@ class TestGemIndexer < Gem::TestCase
|
|
359
354
|
file = File.join dir, name
|
360
355
|
refute File.exist?(file), "#{file} exists"
|
361
356
|
end
|
362
|
-
|
363
|
-
end if defined?(Builder::XChar)
|
357
|
+
end
|
@@ -5,7 +5,6 @@ require 'rubygems/command'
|
|
5
5
|
require 'rubygems/dependency_installer'
|
6
6
|
|
7
7
|
class TestGemInstallUpdateOptions < Gem::InstallerTestCase
|
8
|
-
|
9
8
|
def setup
|
10
9
|
super
|
11
10
|
|
@@ -31,7 +30,7 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
|
|
31
30
|
|
32
31
|
args.concat %w[--vendor] unless Gem.java_platform?
|
33
32
|
|
34
|
-
args.concat %w[-P HighSecurity] if
|
33
|
+
args.concat %w[-P HighSecurity] if Gem::HAVE_OPENSSL
|
35
34
|
|
36
35
|
assert @cmd.handles?(args)
|
37
36
|
end
|
@@ -93,7 +92,7 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
|
|
93
92
|
end
|
94
93
|
|
95
94
|
def test_security_policy
|
96
|
-
skip 'openssl is missing' unless
|
95
|
+
skip 'openssl is missing' unless Gem::HAVE_OPENSSL
|
97
96
|
|
98
97
|
@cmd.handle_options %w[-P HighSecurity]
|
99
98
|
|
@@ -101,7 +100,7 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
|
|
101
100
|
end
|
102
101
|
|
103
102
|
def test_security_policy_unknown
|
104
|
-
skip 'openssl is missing' unless
|
103
|
+
skip 'openssl is missing' unless Gem::HAVE_OPENSSL
|
105
104
|
|
106
105
|
@cmd.add_install_update_options
|
107
106
|
|
@@ -194,4 +193,15 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
|
|
194
193
|
assert_equal true, @cmd.options[:post_install_message]
|
195
194
|
end
|
196
195
|
|
196
|
+
def test_minimal_deps_no
|
197
|
+
@cmd.handle_options %w[--no-minimal-deps]
|
198
|
+
|
199
|
+
assert_equal false, @cmd.options[:minimal_deps]
|
200
|
+
end
|
201
|
+
|
202
|
+
def test_minimal_deps
|
203
|
+
@cmd.handle_options %w[--minimal-deps]
|
204
|
+
|
205
|
+
assert_equal true, @cmd.options[:minimal_deps]
|
206
|
+
end
|
197
207
|
end
|
@@ -2,25 +2,6 @@
|
|
2
2
|
require 'rubygems/installer_test_case'
|
3
3
|
|
4
4
|
class TestGemInstaller < Gem::InstallerTestCase
|
5
|
-
|
6
|
-
@@symlink_supported = nil
|
7
|
-
|
8
|
-
# Our CI does not currently hit the "symlink not supported" case, but this is
|
9
|
-
# needed for Windows developers without symlink support enabled (the default
|
10
|
-
# for non admin) to be able to run the tests successfully
|
11
|
-
def symlink_supported?
|
12
|
-
if @@symlink_supported.nil?
|
13
|
-
begin
|
14
|
-
File.symlink("", "")
|
15
|
-
rescue Errno::ENOENT, Errno::EEXIST
|
16
|
-
@@symlink_supported = true
|
17
|
-
rescue NotImplementedError, SystemCallError
|
18
|
-
@@symlink_supported = false
|
19
|
-
end
|
20
|
-
end
|
21
|
-
@@symlink_supported
|
22
|
-
end
|
23
|
-
|
24
5
|
def setup
|
25
6
|
super
|
26
7
|
common_installer_setup
|
@@ -98,11 +79,11 @@ end
|
|
98
79
|
assert_path_exists installed_exec
|
99
80
|
|
100
81
|
wrapper = File.read installed_exec
|
101
|
-
assert_match %r
|
82
|
+
assert_match %r{generated by RubyGems}, wrapper
|
102
83
|
end
|
103
84
|
|
104
85
|
def test_check_executable_overwrite_default_bin_dir
|
105
|
-
installer = setup_base_installer
|
86
|
+
installer = setup_base_installer(false)
|
106
87
|
|
107
88
|
bindir(Gem.bindir) do
|
108
89
|
util_conflict_executable false
|
@@ -114,7 +95,7 @@ end
|
|
114
95
|
end
|
115
96
|
|
116
97
|
conflicted = File.join @gemhome, 'bin', 'executable'
|
117
|
-
assert_match %r
|
98
|
+
assert_match %r{\A"executable" from a conflicts with (?:#{Regexp.quote(conflicted)}|installed executable from conflict)\z},
|
118
99
|
e.message
|
119
100
|
end
|
120
101
|
end
|
@@ -156,13 +137,13 @@ gem 'other', version
|
|
156
137
|
assert_path_exists installed_exec
|
157
138
|
|
158
139
|
wrapper = File.read installed_exec
|
159
|
-
assert_match %r
|
140
|
+
assert_match %r{generated by RubyGems}, wrapper
|
160
141
|
ensure
|
161
142
|
Gem::Installer.exec_format = nil
|
162
143
|
end
|
163
144
|
|
164
145
|
def test_check_executable_overwrite_other_gem
|
165
|
-
installer = setup_base_installer
|
146
|
+
installer = setup_base_installer(false)
|
166
147
|
|
167
148
|
util_conflict_executable true
|
168
149
|
|
@@ -191,7 +172,7 @@ gem 'other', version
|
|
191
172
|
assert_path_exists installed_exec
|
192
173
|
|
193
174
|
wrapper = File.read installed_exec
|
194
|
-
assert_match %r
|
175
|
+
assert_match %r{generated by RubyGems}, wrapper
|
195
176
|
end
|
196
177
|
|
197
178
|
def test_check_executable_overwrite_other_non_gem
|
@@ -206,7 +187,7 @@ gem 'other', version
|
|
206
187
|
assert_path_exists installed_exec
|
207
188
|
|
208
189
|
wrapper = File.read installed_exec
|
209
|
-
assert_match %r
|
190
|
+
assert_match %r{generated by RubyGems}, wrapper
|
210
191
|
end unless Gem.win_platform?
|
211
192
|
|
212
193
|
def test_check_that_user_bin_dir_is_in_path
|
@@ -215,7 +196,7 @@ gem 'other', version
|
|
215
196
|
bin_dir = installer.bin_dir
|
216
197
|
|
217
198
|
if Gem.win_platform?
|
218
|
-
bin_dir = bin_dir.downcase
|
199
|
+
bin_dir = bin_dir.downcase
|
219
200
|
end
|
220
201
|
|
221
202
|
orig_PATH, ENV['PATH'] =
|
@@ -226,6 +207,16 @@ gem 'other', version
|
|
226
207
|
end
|
227
208
|
|
228
209
|
assert_empty @ui.error
|
210
|
+
|
211
|
+
return unless win_platform?
|
212
|
+
|
213
|
+
ENV['PATH'] = [orig_PATH, bin_dir.tr(File::SEPARATOR, File::ALT_SEPARATOR)].join(File::PATH_SEPARATOR)
|
214
|
+
|
215
|
+
use_ui @ui do
|
216
|
+
installer.check_that_user_bin_dir_is_in_path
|
217
|
+
end
|
218
|
+
|
219
|
+
assert_empty @ui.error
|
229
220
|
ensure
|
230
221
|
ENV['PATH'] = orig_PATH
|
231
222
|
end
|
@@ -258,7 +249,7 @@ gem 'other', version
|
|
258
249
|
expected = installer.bin_dir
|
259
250
|
|
260
251
|
if Gem.win_platform?
|
261
|
-
expected = expected.downcase
|
252
|
+
expected = expected.downcase
|
262
253
|
end
|
263
254
|
|
264
255
|
assert_match expected, @ui.error
|
@@ -296,7 +287,7 @@ gem 'other', version
|
|
296
287
|
end
|
297
288
|
|
298
289
|
def test_ensure_loadable_spec_security_policy
|
299
|
-
skip 'openssl is missing' unless
|
290
|
+
skip 'openssl is missing' unless Gem::HAVE_OPENSSL
|
300
291
|
|
301
292
|
_, a_gem = util_gem 'a', 2 do |s|
|
302
293
|
s.add_dependency 'garbage ~> 5'
|
@@ -342,7 +333,7 @@ gem 'other', version
|
|
342
333
|
assert_equal mask, File.stat(installed_exec).mode unless win_platform?
|
343
334
|
|
344
335
|
wrapper = File.read installed_exec
|
345
|
-
assert_match %r
|
336
|
+
assert_match %r{generated by RubyGems}, wrapper
|
346
337
|
end
|
347
338
|
|
348
339
|
def test_generate_bin_bindir_with_user_install_warning
|
@@ -354,7 +345,7 @@ gem 'other', version
|
|
354
345
|
|
355
346
|
options = {
|
356
347
|
:bin_dir => bin_dir,
|
357
|
-
:install_dir => "/non/existent"
|
348
|
+
:install_dir => "/non/existent",
|
358
349
|
}
|
359
350
|
|
360
351
|
inst = Gem::Installer.at '', options
|
@@ -385,7 +376,7 @@ gem 'other', version
|
|
385
376
|
assert_equal mask, File.stat(installed_exec).mode unless win_platform?
|
386
377
|
|
387
378
|
wrapper = File.read installed_exec
|
388
|
-
assert_match %r
|
379
|
+
assert_match %r{generated by RubyGems}, wrapper
|
389
380
|
end
|
390
381
|
|
391
382
|
def test_generate_bin_script_format
|
@@ -444,7 +435,7 @@ gem 'other', version
|
|
444
435
|
assert_equal mask, File.stat(installed_exec).mode unless win_platform?
|
445
436
|
|
446
437
|
wrapper = File.read installed_exec
|
447
|
-
assert_match %r
|
438
|
+
assert_match %r{generated by RubyGems}, wrapper
|
448
439
|
end
|
449
440
|
|
450
441
|
def test_generate_bin_script_no_execs
|
@@ -501,7 +492,7 @@ gem 'other', version
|
|
501
492
|
assert_equal mask, File.stat(installed_exec).mode unless win_platform?
|
502
493
|
|
503
494
|
wrapper = File.read installed_exec
|
504
|
-
assert_match %r
|
495
|
+
assert_match %r{generated by RubyGems}, wrapper
|
505
496
|
# HACK some gems don't have #! in their executables, restore 2008/06
|
506
497
|
#assert_no_match %r|generated by RubyGems|, wrapper
|
507
498
|
end
|
@@ -527,9 +518,9 @@ gem 'other', version
|
|
527
518
|
assert_path_exists installed_exec
|
528
519
|
assert_equal mask, File.stat(installed_exec).mode unless win_platform?
|
529
520
|
|
530
|
-
assert_match %r
|
521
|
+
assert_match %r{generated by RubyGems}, File.read(installed_exec)
|
531
522
|
|
532
|
-
refute_match %r
|
523
|
+
refute_match %r{generated by RubyGems}, File.read(real_exec),
|
533
524
|
'real executable overwritten'
|
534
525
|
end
|
535
526
|
|
@@ -739,11 +730,152 @@ gem 'other', version
|
|
739
730
|
installer.generate_bin
|
740
731
|
|
741
732
|
default_shebang = Gem.ruby
|
742
|
-
shebang_line = open("#{@gemhome}/bin/executable") {
|
733
|
+
shebang_line = open("#{@gemhome}/bin/executable") {|f| f.readlines.first }
|
743
734
|
assert_match(/\A#!/, shebang_line)
|
744
735
|
assert_match(/#{default_shebang}/, shebang_line)
|
745
736
|
end
|
746
737
|
|
738
|
+
def test_generate_plugins
|
739
|
+
installer = util_setup_installer do |spec|
|
740
|
+
write_file File.join(@tempdir, 'lib', 'rubygems_plugin.rb') do |io|
|
741
|
+
io.write "puts __FILE__"
|
742
|
+
end
|
743
|
+
|
744
|
+
spec.files += %w[lib/rubygems_plugin.rb]
|
745
|
+
end
|
746
|
+
|
747
|
+
build_rake_in do
|
748
|
+
installer.install
|
749
|
+
end
|
750
|
+
|
751
|
+
plugin_path = File.join Gem.plugindir, 'a_plugin.rb'
|
752
|
+
|
753
|
+
FileUtils.rm plugin_path
|
754
|
+
|
755
|
+
installer.generate_plugins
|
756
|
+
|
757
|
+
assert File.exist?(plugin_path), 'plugin not written'
|
758
|
+
end
|
759
|
+
|
760
|
+
def test_generate_plugins_with_install_dir
|
761
|
+
spec = quick_gem 'a' do |s|
|
762
|
+
write_file File.join(@tempdir, 'lib', 'rubygems_plugin.rb') do |io|
|
763
|
+
io.write "puts __FILE__"
|
764
|
+
end
|
765
|
+
|
766
|
+
s.files += %w[lib/rubygems_plugin.rb]
|
767
|
+
end
|
768
|
+
|
769
|
+
util_build_gem spec
|
770
|
+
|
771
|
+
plugin_path = File.join "#{@gemhome}2", 'plugins', 'a_plugin.rb'
|
772
|
+
installer = util_installer spec, "#{@gemhome}2"
|
773
|
+
|
774
|
+
assert_equal spec, installer.install
|
775
|
+
|
776
|
+
assert File.exist?(plugin_path), 'plugin not written to install_dir'
|
777
|
+
end
|
778
|
+
|
779
|
+
def test_generate_plugins_with_user_install
|
780
|
+
spec = quick_gem 'a' do |s|
|
781
|
+
write_file File.join(@tempdir, 'lib', 'rubygems_plugin.rb') do |io|
|
782
|
+
io.write "puts __FILE__"
|
783
|
+
end
|
784
|
+
|
785
|
+
s.files += %w[lib/rubygems_plugin.rb]
|
786
|
+
end
|
787
|
+
|
788
|
+
util_build_gem spec
|
789
|
+
|
790
|
+
File.chmod(0555, Gem.plugindir)
|
791
|
+
system_path = File.join(Gem.plugindir, 'a_plugin.rb')
|
792
|
+
user_path = File.join(Gem.plugindir(Gem.user_dir), 'a_plugin.rb')
|
793
|
+
installer = util_installer spec, Gem.dir, :user
|
794
|
+
|
795
|
+
assert_equal spec, installer.install
|
796
|
+
|
797
|
+
assert !File.exist?(system_path), 'plugin incorrectly written to system plugins_dir'
|
798
|
+
assert File.exist?(user_path), 'plugin not written to user plugins_dir'
|
799
|
+
end
|
800
|
+
|
801
|
+
def test_generate_plugins_with_build_root
|
802
|
+
spec = quick_gem 'a' do |s|
|
803
|
+
write_file File.join(@tempdir, 'lib', 'rubygems_plugin.rb') do |io|
|
804
|
+
io.write "puts __FILE__"
|
805
|
+
end
|
806
|
+
|
807
|
+
s.files += %w[lib/rubygems_plugin.rb]
|
808
|
+
end
|
809
|
+
|
810
|
+
util_build_gem spec
|
811
|
+
|
812
|
+
File.chmod(0555, Gem.plugindir)
|
813
|
+
system_path = File.join(Gem.plugindir, 'a_plugin.rb')
|
814
|
+
|
815
|
+
build_root = File.join(@tempdir, 'build_root')
|
816
|
+
build_root_path = File.join(build_root, Gem.plugindir.gsub(/^[a-zA-Z]:/, ''), 'a_plugin.rb')
|
817
|
+
|
818
|
+
installer = Gem::Installer.at spec.cache_file, :build_root => build_root
|
819
|
+
|
820
|
+
assert_equal spec, installer.install
|
821
|
+
|
822
|
+
assert !File.exist?(system_path), 'plugin written incorrect written to system plugins_dir'
|
823
|
+
assert File.exist?(build_root_path), 'plugin not written to build_root'
|
824
|
+
end
|
825
|
+
|
826
|
+
def test_keeps_plugins_up_to_date
|
827
|
+
# NOTE: version a-2 is already installed by setup hooks
|
828
|
+
|
829
|
+
write_file File.join(@tempdir, 'lib', 'rubygems_plugin.rb') do |io|
|
830
|
+
io.write "puts __FILE__"
|
831
|
+
end
|
832
|
+
|
833
|
+
build_rake_in do
|
834
|
+
util_setup_installer do |spec|
|
835
|
+
spec.version = '1'
|
836
|
+
spec.files += %w[lib/rubygems_plugin.rb]
|
837
|
+
end.install
|
838
|
+
|
839
|
+
plugin_path = File.join Gem.plugindir, 'a_plugin.rb'
|
840
|
+
refute File.exist?(plugin_path), 'old version installed while newer version without plugin also installed, but plugin written'
|
841
|
+
|
842
|
+
util_setup_installer do |spec|
|
843
|
+
spec.version = '2'
|
844
|
+
spec.files += %w[lib/rubygems_plugin.rb]
|
845
|
+
end.install
|
846
|
+
|
847
|
+
plugin_path = File.join Gem.plugindir, 'a_plugin.rb'
|
848
|
+
assert File.exist?(plugin_path), 'latest version reinstalled, but plugin not written'
|
849
|
+
assert_match %r{\Arequire.*a-2/lib/rubygems_plugin\.rb}, File.read(plugin_path), 'written plugin has incorrect content'
|
850
|
+
|
851
|
+
util_setup_installer do |spec|
|
852
|
+
spec.version = '3'
|
853
|
+
spec.files += %w[lib/rubygems_plugin.rb]
|
854
|
+
end.install
|
855
|
+
|
856
|
+
plugin_path = File.join Gem.plugindir, 'a_plugin.rb'
|
857
|
+
assert File.exist?(plugin_path), 'latest version installed, but plugin removed'
|
858
|
+
assert_match %r{\Arequire.*a-3/lib/rubygems_plugin\.rb}, File.read(plugin_path), 'written plugin has incorrect content'
|
859
|
+
|
860
|
+
util_setup_installer do |spec|
|
861
|
+
spec.version = '4'
|
862
|
+
end.install
|
863
|
+
|
864
|
+
refute File.exist?(plugin_path), 'new version installed without a plugin while older version with a plugin installed, but plugin not removed'
|
865
|
+
end
|
866
|
+
end
|
867
|
+
|
868
|
+
def test_generates_plugins_dir_under_install_dir_if_not_there
|
869
|
+
Gem.use_paths "#{@gemhome}2" # Set GEM_HOME to an uninitialized repo
|
870
|
+
|
871
|
+
@spec = util_spec 'a'
|
872
|
+
|
873
|
+
path = Gem::Package.build @spec
|
874
|
+
|
875
|
+
installer = Gem::Installer.at path, :install_dir => "#{@gemhome}3"
|
876
|
+
assert_equal @spec, installer.install
|
877
|
+
end
|
878
|
+
|
747
879
|
def test_initialize
|
748
880
|
spec = util_spec 'a' do |s|
|
749
881
|
s.platform = Gem::Platform.new 'mswin32'
|
@@ -940,7 +1072,13 @@ gem 'other', version
|
|
940
1072
|
end
|
941
1073
|
|
942
1074
|
def test_install_creates_binstub_that_prefers_user_installed_gem_to_default
|
943
|
-
|
1075
|
+
default_spec = new_default_spec('default', '2', nil, 'exe/executable')
|
1076
|
+
default_spec.executables = 'executable'
|
1077
|
+
install_default_gems default_spec
|
1078
|
+
|
1079
|
+
exe = File.join @gemhome, 'bin', 'executable'
|
1080
|
+
|
1081
|
+
assert_path_exists exe, "default gem's executable not installed"
|
944
1082
|
|
945
1083
|
installer = util_setup_installer do |spec|
|
946
1084
|
spec.name = 'default'
|
@@ -958,8 +1096,6 @@ gem 'other', version
|
|
958
1096
|
end
|
959
1097
|
end
|
960
1098
|
|
961
|
-
exe = File.join @gemhome, 'bin', 'executable'
|
962
|
-
|
963
1099
|
e = assert_raises RuntimeError do
|
964
1100
|
instance_eval File.read(exe)
|
965
1101
|
end
|
@@ -1023,7 +1159,7 @@ gem 'other', version
|
|
1023
1159
|
Gem::Package.build @spec
|
1024
1160
|
end
|
1025
1161
|
end
|
1026
|
-
installer = Gem::Installer.at @gem
|
1162
|
+
installer = Gem::Installer.at @gem, :force => true
|
1027
1163
|
build_rake_in do
|
1028
1164
|
use_ui @ui do
|
1029
1165
|
assert_equal @spec, installer.install
|
@@ -1036,15 +1172,28 @@ gem 'other', version
|
|
1036
1172
|
end
|
1037
1173
|
|
1038
1174
|
def test_install_force
|
1175
|
+
_, missing_dep_gem = util_gem 'missing_dep', '1' do |s|
|
1176
|
+
s.add_dependency 'doesnt_exist', '1'
|
1177
|
+
end
|
1178
|
+
|
1039
1179
|
use_ui @ui do
|
1040
|
-
installer = Gem::Installer.at
|
1180
|
+
installer = Gem::Installer.at missing_dep_gem, :force => true
|
1041
1181
|
installer.install
|
1042
1182
|
end
|
1043
1183
|
|
1044
|
-
gem_dir = File.join(@gemhome, 'gems', '
|
1184
|
+
gem_dir = File.join(@gemhome, 'gems', 'missing_dep-1')
|
1045
1185
|
assert_path_exists gem_dir
|
1046
1186
|
end
|
1047
1187
|
|
1188
|
+
def test_install_build_root
|
1189
|
+
build_root = File.join(@tempdir, 'build_root')
|
1190
|
+
|
1191
|
+
@gem = setup_base_gem
|
1192
|
+
installer = Gem::Installer.at @gem, :build_root => build_root
|
1193
|
+
|
1194
|
+
assert_equal @spec, installer.install
|
1195
|
+
end
|
1196
|
+
|
1048
1197
|
def test_install_missing_dirs
|
1049
1198
|
installer = setup_base_installer
|
1050
1199
|
|
@@ -1153,7 +1302,7 @@ gem 'other', version
|
|
1153
1302
|
installer.install
|
1154
1303
|
end
|
1155
1304
|
|
1156
|
-
assert_match %r
|
1305
|
+
assert_match %r{I am a shiny gem!}, @ui.output
|
1157
1306
|
end
|
1158
1307
|
|
1159
1308
|
def test_install_with_skipped_message
|
@@ -1167,7 +1316,7 @@ gem 'other', version
|
|
1167
1316
|
installer.install
|
1168
1317
|
end
|
1169
1318
|
|
1170
|
-
refute_match %r
|
1319
|
+
refute_match %r{I am a shiny gem!}, @ui.output
|
1171
1320
|
end
|
1172
1321
|
|
1173
1322
|
def test_install_extension_dir
|
@@ -1226,7 +1375,7 @@ gem 'other', version
|
|
1226
1375
|
|
1227
1376
|
# reinstall the gem, this is also the same as pristine
|
1228
1377
|
use_ui @ui do
|
1229
|
-
installer = Gem::Installer.at path
|
1378
|
+
installer = Gem::Installer.at path, :force => true
|
1230
1379
|
installer.install
|
1231
1380
|
end
|
1232
1381
|
|
@@ -1303,7 +1452,7 @@ gem 'other', version
|
|
1303
1452
|
installer.install
|
1304
1453
|
end
|
1305
1454
|
|
1306
|
-
expected = File.join @spec.full_require_paths.find {
|
1455
|
+
expected = File.join @spec.full_require_paths.find {|path|
|
1307
1456
|
File.exist? File.join path, 'b.rb'
|
1308
1457
|
}, 'b.rb'
|
1309
1458
|
assert_equal expected, @spec.matches_for_glob('b.rb').first
|
@@ -1371,7 +1520,7 @@ gem 'other', version
|
|
1371
1520
|
end
|
1372
1521
|
|
1373
1522
|
# empty depend file for no auto dependencies
|
1374
|
-
@spec.files += %W
|
1523
|
+
@spec.files += %W[depend #{@spec.name}.c].each do |file|
|
1375
1524
|
write_file File.join(@tempdir, file)
|
1376
1525
|
end
|
1377
1526
|
|
@@ -1426,6 +1575,7 @@ gem 'other', version
|
|
1426
1575
|
installer = setup_base_installer
|
1427
1576
|
@spec.add_dependency 'b', '> 5'
|
1428
1577
|
installer = util_setup_gem
|
1578
|
+
installer.force = false
|
1429
1579
|
|
1430
1580
|
use_ui @ui do
|
1431
1581
|
assert_raises Gem::InstallError do
|
@@ -1474,54 +1624,6 @@ gem 'other', version
|
|
1474
1624
|
end
|
1475
1625
|
end
|
1476
1626
|
|
1477
|
-
def test_pre_install_checks_ruby_version
|
1478
|
-
use_ui @ui do
|
1479
|
-
installer = Gem::Installer.at old_ruby_required('= 1.4.6')
|
1480
|
-
e = assert_raises Gem::RuntimeRequirementNotMetError do
|
1481
|
-
installer.pre_install_checks
|
1482
|
-
end
|
1483
|
-
rv = Gem.ruby_version
|
1484
|
-
assert_equal "old_ruby_required requires Ruby version = 1.4.6. The current ruby version is #{rv}.",
|
1485
|
-
e.message
|
1486
|
-
end
|
1487
|
-
end
|
1488
|
-
|
1489
|
-
def test_pre_install_checks_ruby_version_with_prereleases
|
1490
|
-
util_set_RUBY_VERSION '2.6.0', -1, '63539', 'ruby 2.6.0preview2 (2018-05-31 trunk 63539) [x86_64-linux]'
|
1491
|
-
|
1492
|
-
installer = Gem::Installer.at old_ruby_required('>= 2.6.0.preview2')
|
1493
|
-
assert installer.pre_install_checks
|
1494
|
-
|
1495
|
-
installer = Gem::Installer.at old_ruby_required('> 2.6.0.preview2')
|
1496
|
-
e = assert_raises Gem::RuntimeRequirementNotMetError do
|
1497
|
-
assert installer.pre_install_checks
|
1498
|
-
end
|
1499
|
-
assert_equal "old_ruby_required requires Ruby version > 2.6.0.preview2. The current ruby version is 2.6.0.preview2.",
|
1500
|
-
e.message
|
1501
|
-
ensure
|
1502
|
-
util_restore_RUBY_VERSION
|
1503
|
-
end
|
1504
|
-
|
1505
|
-
def test_pre_install_checks_wrong_rubygems_version
|
1506
|
-
spec = util_spec 'old_rubygems_required', '1' do |s|
|
1507
|
-
s.required_rubygems_version = '< 0'
|
1508
|
-
end
|
1509
|
-
|
1510
|
-
util_build_gem spec
|
1511
|
-
|
1512
|
-
gem = File.join(@gemhome, 'cache', spec.file_name)
|
1513
|
-
|
1514
|
-
use_ui @ui do
|
1515
|
-
installer = Gem::Installer.at gem
|
1516
|
-
e = assert_raises Gem::RuntimeRequirementNotMetError do
|
1517
|
-
installer.pre_install_checks
|
1518
|
-
end
|
1519
|
-
rgv = Gem::VERSION
|
1520
|
-
assert_equal "old_rubygems_required requires RubyGems version < 0. The current RubyGems version is #{rgv}. " +
|
1521
|
-
"Try 'gem update --system' to update RubyGems itself.", e.message
|
1522
|
-
end
|
1523
|
-
end
|
1524
|
-
|
1525
1627
|
def test_pre_install_checks_malicious_name
|
1526
1628
|
spec = util_spec '../malicious', '1'
|
1527
1629
|
def spec.full_name # so the spec is buildable
|
@@ -1670,13 +1772,24 @@ gem 'other', version
|
|
1670
1772
|
|
1671
1773
|
def test_process_options_build_root
|
1672
1774
|
build_root = File.join @tempdir, 'build_root'
|
1775
|
+
bin_dir = File.join(build_root, @gemhome.gsub(/^[a-zA-Z]:/, ''), 'bin')
|
1776
|
+
gem_home = File.join(build_root, @gemhome.gsub(/^[a-zA-Z]:/, ''))
|
1777
|
+
plugins_dir = File.join(build_root, @gemhome.gsub(/^[a-zA-Z]:/, ''), 'plugins')
|
1673
1778
|
|
1674
1779
|
@gem = setup_base_gem
|
1675
|
-
installer = Gem::Installer.at @gem, :build_root => build_root
|
1780
|
+
installer = use_ui(@ui) { Gem::Installer.at @gem, :build_root => build_root }
|
1781
|
+
|
1782
|
+
assert_equal build_root, installer.build_root
|
1783
|
+
assert_equal bin_dir, installer.bin_dir
|
1784
|
+
assert_equal gem_home, installer.gem_home
|
1676
1785
|
|
1677
|
-
|
1678
|
-
|
1679
|
-
assert_equal
|
1786
|
+
errors = @ui.error.split("\n")
|
1787
|
+
|
1788
|
+
assert_equal "WARNING: You build with buildroot.", errors.shift
|
1789
|
+
assert_equal " Build root: #{build_root}", errors.shift
|
1790
|
+
assert_equal " Bin dir: #{bin_dir}", errors.shift
|
1791
|
+
assert_equal " Gem home: #{gem_home}", errors.shift
|
1792
|
+
assert_equal " Plugins dir: #{plugins_dir}", errors.shift
|
1680
1793
|
end
|
1681
1794
|
|
1682
1795
|
def test_shebang_arguments
|
@@ -1726,9 +1839,9 @@ gem 'other', version
|
|
1726
1839
|
|
1727
1840
|
shebang = installer.shebang 'executable'
|
1728
1841
|
|
1729
|
-
|
1842
|
+
bin_env = get_bin_env
|
1730
1843
|
|
1731
|
-
assert_equal("#!#{
|
1844
|
+
assert_equal("#!#{bin_env} #{RbConfig::CONFIG['ruby_install_name']}",
|
1732
1845
|
shebang)
|
1733
1846
|
end
|
1734
1847
|
|
@@ -1807,10 +1920,18 @@ gem 'other', version
|
|
1807
1920
|
assert_equal "#!test", shebang
|
1808
1921
|
end
|
1809
1922
|
|
1923
|
+
def get_bin_env
|
1924
|
+
if win_platform?
|
1925
|
+
""
|
1926
|
+
else
|
1927
|
+
%w[/usr/bin/env /bin/env].find {|f| File.executable?(f) }
|
1928
|
+
end
|
1929
|
+
end
|
1930
|
+
|
1810
1931
|
def test_shebang_custom_with_expands
|
1811
1932
|
installer = setup_base_installer
|
1812
1933
|
|
1813
|
-
bin_env =
|
1934
|
+
bin_env = get_bin_env
|
1814
1935
|
conf = Gem::ConfigFile.new []
|
1815
1936
|
conf[:custom_shebang] = '1 $env 2 $ruby 3 $exec 4 $name'
|
1816
1937
|
|
@@ -1826,7 +1947,7 @@ gem 'other', version
|
|
1826
1947
|
def test_shebang_custom_with_expands_and_arguments
|
1827
1948
|
installer = setup_base_installer
|
1828
1949
|
|
1829
|
-
bin_env =
|
1950
|
+
bin_env = get_bin_env
|
1830
1951
|
conf = Gem::ConfigFile.new []
|
1831
1952
|
conf[:custom_shebang] = '1 $env 2 $ruby 3 $exec'
|
1832
1953
|
|
@@ -1951,7 +2072,7 @@ gem 'other', version
|
|
1951
2072
|
def test_dir
|
1952
2073
|
installer = setup_base_installer
|
1953
2074
|
|
1954
|
-
assert_match %r
|
2075
|
+
assert_match %r{/gemhome/gems/a-2$}, installer.dir
|
1955
2076
|
end
|
1956
2077
|
|
1957
2078
|
def test_default_gem_loaded_from
|
@@ -1991,7 +2112,13 @@ gem 'other', version
|
|
1991
2112
|
assert_path_exists installed_exec
|
1992
2113
|
|
1993
2114
|
wrapper = File.read installed_exec
|
1994
|
-
|
2115
|
+
|
2116
|
+
if symlink_supported?
|
2117
|
+
refute_match %r{generated by RubyGems}, wrapper
|
2118
|
+
else # when symlink not supported, it warns and fallbacks back to installing wrapper
|
2119
|
+
assert_match %r{Unable to use symlinks, installing wrapper}, @ui.error
|
2120
|
+
assert_match %r{generated by RubyGems}, wrapper
|
2121
|
+
end
|
1995
2122
|
end
|
1996
2123
|
|
1997
2124
|
def test_default_gem_with_wrappers
|
@@ -2011,7 +2138,7 @@ gem 'other', version
|
|
2011
2138
|
assert_path_exists installed_exec
|
2012
2139
|
|
2013
2140
|
wrapper = File.read installed_exec
|
2014
|
-
assert_match %r
|
2141
|
+
assert_match %r{generated by RubyGems}, wrapper
|
2015
2142
|
end
|
2016
2143
|
|
2017
2144
|
def test_default_gem_with_exe_as_bindir
|
@@ -2044,6 +2171,23 @@ gem 'other', version
|
|
2044
2171
|
assert_equal ['exe/executable'], default_spec.files
|
2045
2172
|
end
|
2046
2173
|
|
2174
|
+
def test_default_gem_to_specific_install_dir
|
2175
|
+
@gem = setup_base_gem
|
2176
|
+
installer = util_installer @spec, "#{@gemhome}2"
|
2177
|
+
installer.options[:install_as_default] = true
|
2178
|
+
|
2179
|
+
use_ui @ui do
|
2180
|
+
installer.install
|
2181
|
+
end
|
2182
|
+
|
2183
|
+
assert_directory_exists File.join("#{@gemhome}2", 'specifications')
|
2184
|
+
assert_directory_exists File.join("#{@gemhome}2", 'specifications', 'default')
|
2185
|
+
|
2186
|
+
default_spec = eval File.read File.join("#{@gemhome}2", 'specifications', 'default', 'a-2.gemspec')
|
2187
|
+
assert_equal Gem::Version.new("2"), default_spec.version
|
2188
|
+
assert_equal ['bin/executable'], default_spec.files
|
2189
|
+
end
|
2190
|
+
|
2047
2191
|
def test_package_attribute
|
2048
2192
|
gem = quick_gem 'c' do |spec|
|
2049
2193
|
util_make_exec spec, '#!/usr/bin/ruby', 'exe'
|
@@ -2054,14 +2198,14 @@ gem 'other', version
|
|
2054
2198
|
assert_kind_of(Gem::Package, installer.package)
|
2055
2199
|
end
|
2056
2200
|
|
2057
|
-
def
|
2058
|
-
|
2059
|
-
|
2201
|
+
def test_gem_attribute
|
2202
|
+
gem = quick_gem 'c' do |spec|
|
2203
|
+
util_make_exec spec, '#!/usr/bin/ruby', 'exe'
|
2060
2204
|
end
|
2061
2205
|
|
2062
|
-
|
2063
|
-
|
2064
|
-
|
2206
|
+
installer = util_installer(gem, @gemhome)
|
2207
|
+
assert_respond_to(installer, :gem)
|
2208
|
+
assert_kind_of(String, installer.gem)
|
2065
2209
|
end
|
2066
2210
|
|
2067
2211
|
def util_execless
|
@@ -2084,7 +2228,6 @@ gem 'other', version
|
|
2084
2228
|
end
|
2085
2229
|
|
2086
2230
|
def mask
|
2087
|
-
0100755
|
2231
|
+
0100755
|
2088
2232
|
end
|
2089
|
-
|
2090
2233
|
end
|