rubygems-update 3.1.0 → 3.2.0
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 +435 -179
- data/Manifest.txt +44 -77
- data/POLICIES.md +2 -9
- data/README.md +5 -5
- data/Rakefile +50 -83
- data/bin/update_rubygems +2 -2
- data/bundler/CHANGELOG.md +1590 -1400
- 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 +25 -7
- data/bundler/lib/bundler/build_metadata.rb +4 -12
- data/bundler/lib/bundler/cli.rb +56 -20
- 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 +7 -16
- data/bundler/lib/bundler/cli/fund.rb +36 -0
- data/bundler/lib/bundler/cli/gem.rb +75 -11
- data/bundler/lib/bundler/cli/info.rb +8 -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 +12 -18
- data/bundler/lib/bundler/cli/issue.rb +2 -2
- data/bundler/lib/bundler/cli/list.rb +1 -1
- data/bundler/lib/bundler/cli/outdated.rb +2 -4
- data/bundler/lib/bundler/cli/plugin.rb +10 -0
- data/bundler/lib/bundler/cli/pristine.rb +1 -1
- data/bundler/lib/bundler/cli/show.rb +1 -1
- data/bundler/lib/bundler/cli/update.rb +2 -0
- data/bundler/lib/bundler/compact_index_client.rb +1 -1
- data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
- data/bundler/lib/bundler/compact_index_client/updater.rb +5 -5
- data/bundler/lib/bundler/definition.rb +47 -61
- data/bundler/lib/bundler/dep_proxy.rb +1 -1
- data/bundler/lib/bundler/dependency.rb +0 -9
- 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 +6 -1
- 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 +20 -9
- 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} +0 -0
- data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
- data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
- data/bundler/{man/bundle-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 +32 -10
- data/bundler/lib/bundler/resolver/spec_group.rb +27 -6
- 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 +35 -25
- data/bundler/lib/bundler/runtime.rb +4 -14
- data/bundler/lib/bundler/settings.rb +49 -46
- data/bundler/lib/bundler/setup.rb +5 -0
- 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 +1 -1
- 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 +2 -1
- data/bundler/lib/bundler/stub_specification.rb +17 -5
- data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +7 -2
- data/bundler/lib/bundler/templates/newgem/README.md.tt +1 -2
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +12 -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 +13 -5
- 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 +72 -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 +1 -1
- 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 -3
- data/lib/rubygems/commands/pristine_command.rb +11 -5
- data/lib/rubygems/commands/push_command.rb +10 -46
- 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 +158 -70
- 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 -6
- 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 +5 -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 +3 -5
- data/lib/rubygems/gem_runner.rb +3 -10
- data/lib/rubygems/gemcutter_utilities.rb +91 -15
- data/lib/rubygems/indexer.rb +1 -22
- data/lib/rubygems/install_update_options.rb +7 -7
- data/lib/rubygems/installer.rb +59 -57
- 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 +10 -27
- 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 +5 -7
- 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 +8 -11
- data/lib/rubygems/resolver/activation_request.rb +9 -3
- data/lib/rubygems/resolver/api_set.rb +4 -6
- data/lib/rubygems/resolver/api_specification.rb +21 -8
- data/lib/rubygems/resolver/best_set.rb +0 -2
- 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 +11 -2
- data/lib/rubygems/resolver/installed_specification.rb +0 -2
- data/lib/rubygems/resolver/installer_set.rb +4 -7
- 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 +0 -2
- data/lib/rubygems/resolver/specification.rb +1 -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 +10 -12
- data/lib/rubygems/source.rb +13 -7
- 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 +6 -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 +135 -118
- data/lib/rubygems/test_utilities.rb +6 -14
- 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 +153 -106
- 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 +32 -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 +38 -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 +211 -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 +14 -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 +265 -81
- 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 +11 -13
- data/test/rubygems/test_gem_resolver_api_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_best_set.rb +2 -4
- 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 +17 -16
- 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
- metadata +66 -100
- 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 -44
- 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,16 +36,14 @@ 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
|
|
@@ -56,14 +51,12 @@ class TestGemExtRakeBuilder < Gem::TestCase
|
|
56
51
|
output = []
|
57
52
|
|
58
53
|
build_rake_in do |rake|
|
59
|
-
|
60
|
-
Gem::Ext::RakeBuilder.build "ext/Rakefile", @dest_path, output, ["test1", "test2"]
|
61
|
-
end
|
54
|
+
Gem::Ext::RakeBuilder.build "ext/Rakefile", @dest_path, output, ["test1", "test2"], nil, @ext
|
62
55
|
|
63
56
|
output = output.join "\n"
|
64
57
|
|
65
|
-
refute_match %r
|
66
|
-
assert_match %r
|
58
|
+
refute_match %r{^rake failed:}, output
|
59
|
+
assert_match %r{^#{Regexp.escape rake} RUBYARCHDIR\\=#{Regexp.escape @dest_path} RUBYLIBDIR\\=#{Regexp.escape @dest_path} test1 test2}, output
|
67
60
|
end
|
68
61
|
end
|
69
62
|
|
@@ -73,12 +66,10 @@ class TestGemExtRakeBuilder < Gem::TestCase
|
|
73
66
|
|
74
67
|
build_rake_in(false) do |rake|
|
75
68
|
error = assert_raises Gem::InstallError do
|
76
|
-
|
77
|
-
Gem::Ext::RakeBuilder.build "mkrf_conf.rb", @dest_path, output
|
78
|
-
end
|
69
|
+
Gem::Ext::RakeBuilder.build "mkrf_conf.rb", @dest_path, output, [], nil, @ext
|
79
70
|
end
|
80
71
|
|
81
|
-
assert_match %r
|
72
|
+
assert_match %r{^rake failed}, error.message
|
82
73
|
end
|
83
74
|
end
|
84
75
|
|
@@ -91,5 +82,4 @@ class TestGemExtRakeBuilder < Gem::TestCase
|
|
91
82
|
EO_MKRF
|
92
83
|
end
|
93
84
|
end
|
94
|
-
|
95
85
|
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,38 +79,25 @@ 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
|
-
|
108
|
-
|
109
|
-
Object.send :remove_const, :RUBY_FRAMEWORK_VERSION
|
110
|
-
end
|
111
|
-
orig_bindir = RbConfig::CONFIG['bindir']
|
112
|
-
RbConfig::CONFIG['bindir'] = Gem.bindir
|
88
|
+
bindir(Gem.bindir) do
|
89
|
+
util_conflict_executable false
|
113
90
|
|
114
|
-
|
91
|
+
ui = Gem::MockGemUi.new "n\n"
|
92
|
+
use_ui ui do
|
93
|
+
e = assert_raises Gem::InstallError do
|
94
|
+
installer.generate_bin
|
95
|
+
end
|
115
96
|
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
installer.generate_bin
|
97
|
+
conflicted = File.join @gemhome, 'bin', 'executable'
|
98
|
+
assert_match %r{\A"executable" from a conflicts with (?:#{Regexp.quote(conflicted)}|installed executable from conflict)\z},
|
99
|
+
e.message
|
120
100
|
end
|
121
|
-
|
122
|
-
conflicted = File.join @gemhome, 'bin', 'executable'
|
123
|
-
assert_match %r%\A"executable" from a conflicts with (?:#{Regexp.quote(conflicted)}|installed executable from conflict)\z%,
|
124
|
-
e.message
|
125
|
-
end
|
126
|
-
ensure
|
127
|
-
Object.const_set :RUBY_FRAMEWORK_VERSION, orig_RUBY_FRAMEWORK_VERSION if
|
128
|
-
orig_RUBY_FRAMEWORK_VERSION
|
129
|
-
if orig_bindir
|
130
|
-
RbConfig::CONFIG['bindir'] = orig_bindir
|
131
|
-
else
|
132
|
-
RbConfig::CONFIG.delete 'bindir'
|
133
101
|
end
|
134
102
|
end
|
135
103
|
|
@@ -169,13 +137,13 @@ gem 'other', version
|
|
169
137
|
assert_path_exists installed_exec
|
170
138
|
|
171
139
|
wrapper = File.read installed_exec
|
172
|
-
assert_match %r
|
140
|
+
assert_match %r{generated by RubyGems}, wrapper
|
173
141
|
ensure
|
174
142
|
Gem::Installer.exec_format = nil
|
175
143
|
end
|
176
144
|
|
177
145
|
def test_check_executable_overwrite_other_gem
|
178
|
-
installer = setup_base_installer
|
146
|
+
installer = setup_base_installer(false)
|
179
147
|
|
180
148
|
util_conflict_executable true
|
181
149
|
|
@@ -204,7 +172,7 @@ gem 'other', version
|
|
204
172
|
assert_path_exists installed_exec
|
205
173
|
|
206
174
|
wrapper = File.read installed_exec
|
207
|
-
assert_match %r
|
175
|
+
assert_match %r{generated by RubyGems}, wrapper
|
208
176
|
end
|
209
177
|
|
210
178
|
def test_check_executable_overwrite_other_non_gem
|
@@ -219,7 +187,7 @@ gem 'other', version
|
|
219
187
|
assert_path_exists installed_exec
|
220
188
|
|
221
189
|
wrapper = File.read installed_exec
|
222
|
-
assert_match %r
|
190
|
+
assert_match %r{generated by RubyGems}, wrapper
|
223
191
|
end unless Gem.win_platform?
|
224
192
|
|
225
193
|
def test_check_that_user_bin_dir_is_in_path
|
@@ -228,7 +196,7 @@ gem 'other', version
|
|
228
196
|
bin_dir = installer.bin_dir
|
229
197
|
|
230
198
|
if Gem.win_platform?
|
231
|
-
bin_dir = bin_dir.downcase
|
199
|
+
bin_dir = bin_dir.downcase
|
232
200
|
end
|
233
201
|
|
234
202
|
orig_PATH, ENV['PATH'] =
|
@@ -239,6 +207,16 @@ gem 'other', version
|
|
239
207
|
end
|
240
208
|
|
241
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
|
242
220
|
ensure
|
243
221
|
ENV['PATH'] = orig_PATH
|
244
222
|
end
|
@@ -271,7 +249,7 @@ gem 'other', version
|
|
271
249
|
expected = installer.bin_dir
|
272
250
|
|
273
251
|
if Gem.win_platform?
|
274
|
-
expected = expected.downcase
|
252
|
+
expected = expected.downcase
|
275
253
|
end
|
276
254
|
|
277
255
|
assert_match expected, @ui.error
|
@@ -309,7 +287,7 @@ gem 'other', version
|
|
309
287
|
end
|
310
288
|
|
311
289
|
def test_ensure_loadable_spec_security_policy
|
312
|
-
skip 'openssl is missing' unless
|
290
|
+
skip 'openssl is missing' unless Gem::HAVE_OPENSSL
|
313
291
|
|
314
292
|
_, a_gem = util_gem 'a', 2 do |s|
|
315
293
|
s.add_dependency 'garbage ~> 5'
|
@@ -355,7 +333,7 @@ gem 'other', version
|
|
355
333
|
assert_equal mask, File.stat(installed_exec).mode unless win_platform?
|
356
334
|
|
357
335
|
wrapper = File.read installed_exec
|
358
|
-
assert_match %r
|
336
|
+
assert_match %r{generated by RubyGems}, wrapper
|
359
337
|
end
|
360
338
|
|
361
339
|
def test_generate_bin_bindir_with_user_install_warning
|
@@ -367,7 +345,7 @@ gem 'other', version
|
|
367
345
|
|
368
346
|
options = {
|
369
347
|
:bin_dir => bin_dir,
|
370
|
-
:install_dir => "/non/existent"
|
348
|
+
:install_dir => "/non/existent",
|
371
349
|
}
|
372
350
|
|
373
351
|
inst = Gem::Installer.at '', options
|
@@ -398,7 +376,7 @@ gem 'other', version
|
|
398
376
|
assert_equal mask, File.stat(installed_exec).mode unless win_platform?
|
399
377
|
|
400
378
|
wrapper = File.read installed_exec
|
401
|
-
assert_match %r
|
379
|
+
assert_match %r{generated by RubyGems}, wrapper
|
402
380
|
end
|
403
381
|
|
404
382
|
def test_generate_bin_script_format
|
@@ -457,7 +435,7 @@ gem 'other', version
|
|
457
435
|
assert_equal mask, File.stat(installed_exec).mode unless win_platform?
|
458
436
|
|
459
437
|
wrapper = File.read installed_exec
|
460
|
-
assert_match %r
|
438
|
+
assert_match %r{generated by RubyGems}, wrapper
|
461
439
|
end
|
462
440
|
|
463
441
|
def test_generate_bin_script_no_execs
|
@@ -514,7 +492,7 @@ gem 'other', version
|
|
514
492
|
assert_equal mask, File.stat(installed_exec).mode unless win_platform?
|
515
493
|
|
516
494
|
wrapper = File.read installed_exec
|
517
|
-
assert_match %r
|
495
|
+
assert_match %r{generated by RubyGems}, wrapper
|
518
496
|
# HACK some gems don't have #! in their executables, restore 2008/06
|
519
497
|
#assert_no_match %r|generated by RubyGems|, wrapper
|
520
498
|
end
|
@@ -540,9 +518,9 @@ gem 'other', version
|
|
540
518
|
assert_path_exists installed_exec
|
541
519
|
assert_equal mask, File.stat(installed_exec).mode unless win_platform?
|
542
520
|
|
543
|
-
assert_match %r
|
521
|
+
assert_match %r{generated by RubyGems}, File.read(installed_exec)
|
544
522
|
|
545
|
-
refute_match %r
|
523
|
+
refute_match %r{generated by RubyGems}, File.read(real_exec),
|
546
524
|
'real executable overwritten'
|
547
525
|
end
|
548
526
|
|
@@ -752,11 +730,152 @@ gem 'other', version
|
|
752
730
|
installer.generate_bin
|
753
731
|
|
754
732
|
default_shebang = Gem.ruby
|
755
|
-
shebang_line = open("#{@gemhome}/bin/executable") {
|
733
|
+
shebang_line = open("#{@gemhome}/bin/executable") {|f| f.readlines.first }
|
756
734
|
assert_match(/\A#!/, shebang_line)
|
757
735
|
assert_match(/#{default_shebang}/, shebang_line)
|
758
736
|
end
|
759
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
|
+
|
760
879
|
def test_initialize
|
761
880
|
spec = util_spec 'a' do |s|
|
762
881
|
s.platform = Gem::Platform.new 'mswin32'
|
@@ -953,7 +1072,13 @@ gem 'other', version
|
|
953
1072
|
end
|
954
1073
|
|
955
1074
|
def test_install_creates_binstub_that_prefers_user_installed_gem_to_default
|
956
|
-
|
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"
|
957
1082
|
|
958
1083
|
installer = util_setup_installer do |spec|
|
959
1084
|
spec.name = 'default'
|
@@ -971,8 +1096,6 @@ gem 'other', version
|
|
971
1096
|
end
|
972
1097
|
end
|
973
1098
|
|
974
|
-
exe = File.join @gemhome, 'bin', 'executable'
|
975
|
-
|
976
1099
|
e = assert_raises RuntimeError do
|
977
1100
|
instance_eval File.read(exe)
|
978
1101
|
end
|
@@ -1036,7 +1159,7 @@ gem 'other', version
|
|
1036
1159
|
Gem::Package.build @spec
|
1037
1160
|
end
|
1038
1161
|
end
|
1039
|
-
installer = Gem::Installer.at @gem
|
1162
|
+
installer = Gem::Installer.at @gem, :force => true
|
1040
1163
|
build_rake_in do
|
1041
1164
|
use_ui @ui do
|
1042
1165
|
assert_equal @spec, installer.install
|
@@ -1058,6 +1181,15 @@ gem 'other', version
|
|
1058
1181
|
assert_path_exists gem_dir
|
1059
1182
|
end
|
1060
1183
|
|
1184
|
+
def test_install_build_root
|
1185
|
+
build_root = File.join(@tempdir, 'build_root')
|
1186
|
+
|
1187
|
+
@gem = setup_base_gem
|
1188
|
+
installer = Gem::Installer.at @gem, :build_root => build_root
|
1189
|
+
|
1190
|
+
assert_equal @spec, installer.install
|
1191
|
+
end
|
1192
|
+
|
1061
1193
|
def test_install_missing_dirs
|
1062
1194
|
installer = setup_base_installer
|
1063
1195
|
|
@@ -1166,7 +1298,7 @@ gem 'other', version
|
|
1166
1298
|
installer.install
|
1167
1299
|
end
|
1168
1300
|
|
1169
|
-
assert_match %r
|
1301
|
+
assert_match %r{I am a shiny gem!}, @ui.output
|
1170
1302
|
end
|
1171
1303
|
|
1172
1304
|
def test_install_with_skipped_message
|
@@ -1180,7 +1312,7 @@ gem 'other', version
|
|
1180
1312
|
installer.install
|
1181
1313
|
end
|
1182
1314
|
|
1183
|
-
refute_match %r
|
1315
|
+
refute_match %r{I am a shiny gem!}, @ui.output
|
1184
1316
|
end
|
1185
1317
|
|
1186
1318
|
def test_install_extension_dir
|
@@ -1239,7 +1371,7 @@ gem 'other', version
|
|
1239
1371
|
|
1240
1372
|
# reinstall the gem, this is also the same as pristine
|
1241
1373
|
use_ui @ui do
|
1242
|
-
installer = Gem::Installer.at path
|
1374
|
+
installer = Gem::Installer.at path, :force => true
|
1243
1375
|
installer.install
|
1244
1376
|
end
|
1245
1377
|
|
@@ -1316,7 +1448,7 @@ gem 'other', version
|
|
1316
1448
|
installer.install
|
1317
1449
|
end
|
1318
1450
|
|
1319
|
-
expected = File.join @spec.full_require_paths.find {
|
1451
|
+
expected = File.join @spec.full_require_paths.find {|path|
|
1320
1452
|
File.exist? File.join path, 'b.rb'
|
1321
1453
|
}, 'b.rb'
|
1322
1454
|
assert_equal expected, @spec.matches_for_glob('b.rb').first
|
@@ -1384,7 +1516,7 @@ gem 'other', version
|
|
1384
1516
|
end
|
1385
1517
|
|
1386
1518
|
# empty depend file for no auto dependencies
|
1387
|
-
@spec.files += %W
|
1519
|
+
@spec.files += %W[depend #{@spec.name}.c].each do |file|
|
1388
1520
|
write_file File.join(@tempdir, file)
|
1389
1521
|
end
|
1390
1522
|
|
@@ -1439,6 +1571,7 @@ gem 'other', version
|
|
1439
1571
|
installer = setup_base_installer
|
1440
1572
|
@spec.add_dependency 'b', '> 5'
|
1441
1573
|
installer = util_setup_gem
|
1574
|
+
installer.force = false
|
1442
1575
|
|
1443
1576
|
use_ui @ui do
|
1444
1577
|
assert_raises Gem::InstallError do
|
@@ -1683,13 +1816,24 @@ gem 'other', version
|
|
1683
1816
|
|
1684
1817
|
def test_process_options_build_root
|
1685
1818
|
build_root = File.join @tempdir, 'build_root'
|
1819
|
+
bin_dir = File.join(build_root, @gemhome.gsub(/^[a-zA-Z]:/, ''), 'bin')
|
1820
|
+
gem_home = File.join(build_root, @gemhome.gsub(/^[a-zA-Z]:/, ''))
|
1821
|
+
plugins_dir = File.join(build_root, @gemhome.gsub(/^[a-zA-Z]:/, ''), 'plugins')
|
1686
1822
|
|
1687
1823
|
@gem = setup_base_gem
|
1688
|
-
installer = Gem::Installer.at @gem, :build_root => build_root
|
1824
|
+
installer = use_ui(@ui) { Gem::Installer.at @gem, :build_root => build_root }
|
1825
|
+
|
1826
|
+
assert_equal build_root, installer.build_root
|
1827
|
+
assert_equal bin_dir, installer.bin_dir
|
1828
|
+
assert_equal gem_home, installer.gem_home
|
1689
1829
|
|
1690
|
-
|
1691
|
-
|
1692
|
-
assert_equal
|
1830
|
+
errors = @ui.error.split("\n")
|
1831
|
+
|
1832
|
+
assert_equal "WARNING: You build with buildroot.", errors.shift
|
1833
|
+
assert_equal " Build root: #{build_root}", errors.shift
|
1834
|
+
assert_equal " Bin dir: #{bin_dir}", errors.shift
|
1835
|
+
assert_equal " Gem home: #{gem_home}", errors.shift
|
1836
|
+
assert_equal " Plugins dir: #{plugins_dir}", errors.shift
|
1693
1837
|
end
|
1694
1838
|
|
1695
1839
|
def test_shebang_arguments
|
@@ -1739,9 +1883,9 @@ gem 'other', version
|
|
1739
1883
|
|
1740
1884
|
shebang = installer.shebang 'executable'
|
1741
1885
|
|
1742
|
-
|
1886
|
+
bin_env = get_bin_env
|
1743
1887
|
|
1744
|
-
assert_equal("#!#{
|
1888
|
+
assert_equal("#!#{bin_env} #{RbConfig::CONFIG['ruby_install_name']}",
|
1745
1889
|
shebang)
|
1746
1890
|
end
|
1747
1891
|
|
@@ -1820,10 +1964,18 @@ gem 'other', version
|
|
1820
1964
|
assert_equal "#!test", shebang
|
1821
1965
|
end
|
1822
1966
|
|
1967
|
+
def get_bin_env
|
1968
|
+
if win_platform?
|
1969
|
+
""
|
1970
|
+
else
|
1971
|
+
%w[/usr/bin/env /bin/env].find {|f| File.executable?(f) }
|
1972
|
+
end
|
1973
|
+
end
|
1974
|
+
|
1823
1975
|
def test_shebang_custom_with_expands
|
1824
1976
|
installer = setup_base_installer
|
1825
1977
|
|
1826
|
-
bin_env =
|
1978
|
+
bin_env = get_bin_env
|
1827
1979
|
conf = Gem::ConfigFile.new []
|
1828
1980
|
conf[:custom_shebang] = '1 $env 2 $ruby 3 $exec 4 $name'
|
1829
1981
|
|
@@ -1839,7 +1991,7 @@ gem 'other', version
|
|
1839
1991
|
def test_shebang_custom_with_expands_and_arguments
|
1840
1992
|
installer = setup_base_installer
|
1841
1993
|
|
1842
|
-
bin_env =
|
1994
|
+
bin_env = get_bin_env
|
1843
1995
|
conf = Gem::ConfigFile.new []
|
1844
1996
|
conf[:custom_shebang] = '1 $env 2 $ruby 3 $exec'
|
1845
1997
|
|
@@ -1964,7 +2116,7 @@ gem 'other', version
|
|
1964
2116
|
def test_dir
|
1965
2117
|
installer = setup_base_installer
|
1966
2118
|
|
1967
|
-
assert_match %r
|
2119
|
+
assert_match %r{/gemhome/gems/a-2$}, installer.dir
|
1968
2120
|
end
|
1969
2121
|
|
1970
2122
|
def test_default_gem_loaded_from
|
@@ -2004,7 +2156,13 @@ gem 'other', version
|
|
2004
2156
|
assert_path_exists installed_exec
|
2005
2157
|
|
2006
2158
|
wrapper = File.read installed_exec
|
2007
|
-
|
2159
|
+
|
2160
|
+
if symlink_supported?
|
2161
|
+
refute_match %r{generated by RubyGems}, wrapper
|
2162
|
+
else # when symlink not supported, it warns and fallbacks back to installing wrapper
|
2163
|
+
assert_match %r{Unable to use symlinks, installing wrapper}, @ui.error
|
2164
|
+
assert_match %r{generated by RubyGems}, wrapper
|
2165
|
+
end
|
2008
2166
|
end
|
2009
2167
|
|
2010
2168
|
def test_default_gem_with_wrappers
|
@@ -2024,7 +2182,7 @@ gem 'other', version
|
|
2024
2182
|
assert_path_exists installed_exec
|
2025
2183
|
|
2026
2184
|
wrapper = File.read installed_exec
|
2027
|
-
assert_match %r
|
2185
|
+
assert_match %r{generated by RubyGems}, wrapper
|
2028
2186
|
end
|
2029
2187
|
|
2030
2188
|
def test_default_gem_with_exe_as_bindir
|
@@ -2057,6 +2215,23 @@ gem 'other', version
|
|
2057
2215
|
assert_equal ['exe/executable'], default_spec.files
|
2058
2216
|
end
|
2059
2217
|
|
2218
|
+
def test_default_gem_to_specific_install_dir
|
2219
|
+
@gem = setup_base_gem
|
2220
|
+
installer = util_installer @spec, "#{@gemhome}2"
|
2221
|
+
installer.options[:install_as_default] = true
|
2222
|
+
|
2223
|
+
use_ui @ui do
|
2224
|
+
installer.install
|
2225
|
+
end
|
2226
|
+
|
2227
|
+
assert_directory_exists File.join("#{@gemhome}2", 'specifications')
|
2228
|
+
assert_directory_exists File.join("#{@gemhome}2", 'specifications', 'default')
|
2229
|
+
|
2230
|
+
default_spec = eval File.read File.join("#{@gemhome}2", 'specifications', 'default', 'a-2.gemspec')
|
2231
|
+
assert_equal Gem::Version.new("2"), default_spec.version
|
2232
|
+
assert_equal ['bin/executable'], default_spec.files
|
2233
|
+
end
|
2234
|
+
|
2060
2235
|
def test_package_attribute
|
2061
2236
|
gem = quick_gem 'c' do |spec|
|
2062
2237
|
util_make_exec spec, '#!/usr/bin/ruby', 'exe'
|
@@ -2067,6 +2242,16 @@ gem 'other', version
|
|
2067
2242
|
assert_kind_of(Gem::Package, installer.package)
|
2068
2243
|
end
|
2069
2244
|
|
2245
|
+
def test_gem_attribute
|
2246
|
+
gem = quick_gem 'c' do |spec|
|
2247
|
+
util_make_exec spec, '#!/usr/bin/ruby', 'exe'
|
2248
|
+
end
|
2249
|
+
|
2250
|
+
installer = util_installer(gem, @gemhome)
|
2251
|
+
assert_respond_to(installer, :gem)
|
2252
|
+
assert_kind_of(String, installer.gem)
|
2253
|
+
end
|
2254
|
+
|
2070
2255
|
def old_ruby_required(requirement)
|
2071
2256
|
spec = util_spec 'old_ruby_required', '1' do |s|
|
2072
2257
|
s.required_ruby_version = requirement
|
@@ -2097,7 +2282,6 @@ gem 'other', version
|
|
2097
2282
|
end
|
2098
2283
|
|
2099
2284
|
def mask
|
2100
|
-
0100755
|
2285
|
+
0100755
|
2101
2286
|
end
|
2102
|
-
|
2103
2287
|
end
|