rubygems-update 3.1.2 → 3.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/{History.txt → CHANGELOG.md} +756 -489
- data/CODE_OF_CONDUCT.md +55 -19
- data/CONTRIBUTING.md +25 -11
- data/Manifest.txt +75 -104
- data/POLICIES.md +6 -12
- data/README.md +5 -5
- data/Rakefile +64 -92
- data/bin/update_rubygems +1 -1
- data/bundler/CHANGELOG.md +1636 -1422
- data/bundler/README.md +6 -8
- data/bundler/UPGRADING.md +18 -32
- data/bundler/bundler.gemspec +4 -4
- data/bundler/exe/bundle +3 -0
- data/bundler/lib/bundler.rb +32 -8
- data/bundler/lib/bundler/build_metadata.rb +4 -12
- data/bundler/lib/bundler/cli.rb +55 -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 +86 -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 -13
- data/bundler/lib/bundler/definition.rb +66 -82
- data/bundler/lib/bundler/dep_proxy.rb +16 -9
- 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 +4 -4
- 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 → lib/bundler/man}/bundle-add.1 +1 -1
- data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-binstubs.1 +5 -3
- data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +2 -4
- data/bundler/{man → lib/bundler/man}/bundle-cache.1 +1 -1
- data/bundler/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-check.1 +1 -1
- data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-clean.1 +1 -1
- data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-config.1 +16 -25
- data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +19 -30
- data/bundler/{man → lib/bundler/man}/bundle-doctor.1 +1 -1
- data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-exec.1 +1 -1
- data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-gem.1 +25 -3
- data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
- data/bundler/{man → lib/bundler/man}/bundle-info.1 +1 -1
- data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-init.1 +1 -1
- data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-inject.1 +1 -1
- data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-install.1 +30 -3
- data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +25 -3
- data/bundler/{man → lib/bundler/man}/bundle-list.1 +7 -7
- data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
- data/bundler/{man → lib/bundler/man}/bundle-lock.1 +1 -1
- data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-open.1 +1 -1
- data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-outdated.1 +1 -1
- data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-platform.1 +1 -1
- data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-pristine.1 +1 -1
- data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-remove.1 +1 -1
- data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-show.1 +1 -1
- data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-update.1 +1 -1
- data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-viz.1 +1 -1
- data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle.1 +1 -1
- data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/gemfile.5 +4 -4
- data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +4 -4
- data/bundler/{man → lib/bundler/man}/index.txt +0 -0
- 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 +43 -19
- data/bundler/lib/bundler/resolver/spec_group.rb +39 -24
- data/bundler/lib/bundler/retry.rb +1 -1
- data/bundler/lib/bundler/ruby_version.rb +1 -1
- data/bundler/lib/bundler/rubygems_ext.rb +69 -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 +23 -21
- data/bundler/lib/bundler/source/git/git_proxy.rb +82 -80
- data/bundler/lib/bundler/source/path.rb +7 -3
- data/bundler/lib/bundler/source/path/installer.rb +10 -10
- data/bundler/lib/bundler/source/rubygems.rb +23 -17
- 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 +8 -10
- 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 +15 -7
- data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -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 +48 -46
- 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/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 +101 -74
- 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 +21 -39
- data/lib/rubygems/ext/cmake_builder.rb +6 -9
- data/lib/rubygems/ext/configure_builder.rb +5 -8
- data/lib/rubygems/ext/ext_conf_builder.rb +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 -16
- 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 +14 -29
- 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 +21 -22
- 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 +2 -4
- 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 +29 -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 +122 -131
- 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 +120 -134
- 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 +3 -3
- data/setup.rb +2 -7
- data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
- 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 +156 -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 +160 -135
- 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 +116 -239
- 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 +50 -47
- data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -25
- data/test/rubygems/test_gem_ext_configure_builder.rb +6 -22
- 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 +71 -6
- data/test/rubygems/test_gem_rdoc.rb +0 -2
- data/test/rubygems/test_gem_remote_fetcher.rb +169 -212
- 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 +43 -3
- 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 +27 -6
- 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 +188 -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 +79 -133
- 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,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "rubygems/test_case"
|
3
4
|
require "open3"
|
4
5
|
|
5
|
-
class TestProjectSanity <
|
6
|
-
|
6
|
+
class TestProjectSanity < Gem::TestCase
|
7
7
|
def test_manifest_is_up_to_date
|
8
8
|
skip unless File.exist?(File.expand_path("../../../Rakefile", __FILE__))
|
9
9
|
|
@@ -12,4 +12,9 @@ class TestProjectSanity < Minitest::Test
|
|
12
12
|
assert status.success?, "Expected Manifest.txt to be up to date, but it's not. Run `rake update_manifest` to sync it."
|
13
13
|
end
|
14
14
|
|
15
|
+
def test_require_rubygems_package
|
16
|
+
err, status = Open3.capture2e(*ruby_with_rubygems_in_load_path, "--disable-gems", "-e", "'require \"rubygems/package\"'")
|
17
|
+
|
18
|
+
assert status.success?, err
|
19
|
+
end
|
15
20
|
end
|
@@ -2,7 +2,6 @@
|
|
2
2
|
require 'rubygems/test_case'
|
3
3
|
|
4
4
|
class TestRemoteFetchError < Gem::TestCase
|
5
|
-
|
6
5
|
def test_password_redacted
|
7
6
|
error = Gem::RemoteFetcher::FetchError.new('There was an error fetching', 'https://user:secret@gemsource.org')
|
8
7
|
refute_match 'secret', error.to_s
|
@@ -17,5 +16,4 @@ class TestRemoteFetchError < Gem::TestCase
|
|
17
16
|
error = Gem::RemoteFetcher::FetchError.new('There was an error fetching', 'https://gemsource.org')
|
18
17
|
assert_equal error.to_s, 'There was an error fetching (https://gemsource.org)'
|
19
18
|
end
|
20
|
-
|
21
19
|
end
|
@@ -3,9 +3,7 @@ require 'rubygems/test_case'
|
|
3
3
|
require 'rubygems'
|
4
4
|
|
5
5
|
class TestGemRequire < Gem::TestCase
|
6
|
-
|
7
6
|
class Latch
|
8
|
-
|
9
7
|
def initialize(count = 1)
|
10
8
|
@count = count
|
11
9
|
@lock = Monitor.new
|
@@ -24,7 +22,6 @@ class TestGemRequire < Gem::TestCase
|
|
24
22
|
@cv.wait_while { @count > 0 }
|
25
23
|
end
|
26
24
|
end
|
27
|
-
|
28
25
|
end
|
29
26
|
|
30
27
|
def setup
|
@@ -45,6 +42,35 @@ class TestGemRequire < Gem::TestCase
|
|
45
42
|
refute require(path), "'#{path}' was not yet required"
|
46
43
|
end
|
47
44
|
|
45
|
+
def test_respect_loaded_features_caching_like_standard_require
|
46
|
+
dir = Dir.mktmpdir("test_require", @tempdir)
|
47
|
+
|
48
|
+
lp1 = File.join dir, 'foo1'
|
49
|
+
foo1 = File.join lp1, 'foo.rb'
|
50
|
+
|
51
|
+
FileUtils.mkdir_p lp1
|
52
|
+
File.open(foo1, 'w') {|f| f.write "class Object; HELLO = 'foo1' end" }
|
53
|
+
|
54
|
+
lp = $LOAD_PATH.dup
|
55
|
+
|
56
|
+
$LOAD_PATH.unshift lp1
|
57
|
+
assert_require 'foo'
|
58
|
+
assert_equal "foo1", ::Object::HELLO
|
59
|
+
|
60
|
+
lp2 = File.join dir, 'foo2'
|
61
|
+
foo2 = File.join lp2, 'foo.rb'
|
62
|
+
|
63
|
+
FileUtils.mkdir_p lp2
|
64
|
+
File.open(foo2, 'w') {|f| f.write "class Object; HELLO = 'foo2' end" }
|
65
|
+
|
66
|
+
$LOAD_PATH.unshift lp2
|
67
|
+
refute_require 'foo'
|
68
|
+
assert_equal "foo1", ::Object::HELLO
|
69
|
+
ensure
|
70
|
+
$LOAD_PATH.replace lp
|
71
|
+
Object.send :remove_const, :HELLO if Object.const_defined? :HELLO
|
72
|
+
end
|
73
|
+
|
48
74
|
# Providing -I on the commandline should always beat gems
|
49
75
|
def test_dash_i_beats_gems
|
50
76
|
a1 = util_spec "a", "1", {"b" => "= 1"}, "lib/test_gem_require_a.rb"
|
@@ -60,7 +86,7 @@ class TestGemRequire < Gem::TestCase
|
|
60
86
|
c_rb = File.join dash_i_arg, 'b', 'c.rb'
|
61
87
|
|
62
88
|
FileUtils.mkdir_p File.dirname c_rb
|
63
|
-
File.open(c_rb, 'w') {
|
89
|
+
File.open(c_rb, 'w') {|f| f.write "class Object; HELLO = 'world' end" }
|
64
90
|
|
65
91
|
lp = $LOAD_PATH.dup
|
66
92
|
|
@@ -70,7 +96,7 @@ class TestGemRequire < Gem::TestCase
|
|
70
96
|
assert_require 'test_gem_require_a'
|
71
97
|
assert_require 'b/c' # this should be required from -I
|
72
98
|
assert_equal "world", ::Object::HELLO
|
73
|
-
assert_equal %w
|
99
|
+
assert_equal %w[a-1 b-1], loaded_spec_names
|
74
100
|
ensure
|
75
101
|
$LOAD_PATH.replace lp
|
76
102
|
Object.send :remove_const, :HELLO if Object.const_defined? :HELLO
|
@@ -94,7 +120,7 @@ class TestGemRequire < Gem::TestCase
|
|
94
120
|
c1 = new_default_spec "c", "1", nil, "c/c.rb"
|
95
121
|
c2 = new_default_spec "c", "2", nil, "c/c.rb"
|
96
122
|
|
97
|
-
|
123
|
+
install_default_gems c1, c2, b1, a1
|
98
124
|
|
99
125
|
dir = Dir.mktmpdir("test_require", @tempdir)
|
100
126
|
dash_i_arg = File.join dir, 'lib'
|
@@ -102,7 +128,7 @@ class TestGemRequire < Gem::TestCase
|
|
102
128
|
c_rb = File.join dash_i_arg, 'c', 'c.rb'
|
103
129
|
|
104
130
|
FileUtils.mkdir_p File.dirname c_rb
|
105
|
-
File.open(c_rb, 'w') {
|
131
|
+
File.open(c_rb, 'w') {|f| f.write "class Object; HELLO = 'world' end" }
|
106
132
|
|
107
133
|
assert_require 'test_gem_require_a'
|
108
134
|
|
@@ -114,12 +140,31 @@ class TestGemRequire < Gem::TestCase
|
|
114
140
|
assert_require 'b/c'
|
115
141
|
assert_require 'c/c' # this should be required from -I
|
116
142
|
assert_equal "world", ::Object::HELLO
|
117
|
-
assert_equal %w
|
143
|
+
assert_equal %w[a-1 b-1], loaded_spec_names
|
118
144
|
ensure
|
119
145
|
$LOAD_PATH.replace lp
|
120
146
|
Object.send :remove_const, :HELLO if Object.const_defined? :HELLO
|
121
147
|
end
|
122
148
|
|
149
|
+
def test_dash_i_respects_default_library_extension_priority
|
150
|
+
skip "extensions don't quite work on jruby" if Gem.java_platform?
|
151
|
+
skip "not installed yet" unless RbConfig::TOPDIR
|
152
|
+
|
153
|
+
dash_i_ext_arg = util_install_extension_file('a')
|
154
|
+
dash_i_lib_arg = util_install_ruby_file('a')
|
155
|
+
|
156
|
+
lp = $LOAD_PATH.dup
|
157
|
+
|
158
|
+
begin
|
159
|
+
$LOAD_PATH.unshift dash_i_lib_arg
|
160
|
+
$LOAD_PATH.unshift dash_i_ext_arg
|
161
|
+
assert_require 'a'
|
162
|
+
assert_match(/a\.rb$/, $LOADED_FEATURES.last)
|
163
|
+
ensure
|
164
|
+
$LOAD_PATH.replace lp
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
123
168
|
def test_concurrent_require
|
124
169
|
Object.const_set :FILE_ENTERED_LATCH, Latch.new(2)
|
125
170
|
Object.const_set :FILE_EXIT_LATCH, Latch.new(1)
|
@@ -153,11 +198,11 @@ class TestGemRequire < Gem::TestCase
|
|
153
198
|
install_specs b1, b2, a1
|
154
199
|
|
155
200
|
assert_require 'test_gem_require_a'
|
156
|
-
assert_equal %w
|
201
|
+
assert_equal %w[a-1 b-1], loaded_spec_names
|
157
202
|
assert_equal unresolved_names, []
|
158
203
|
|
159
204
|
assert_require "b/c"
|
160
|
-
assert_equal %w
|
205
|
+
assert_equal %w[a-1 b-1], loaded_spec_names
|
161
206
|
end
|
162
207
|
|
163
208
|
def test_require_is_lazy_with_inexact_req
|
@@ -168,11 +213,11 @@ class TestGemRequire < Gem::TestCase
|
|
168
213
|
install_specs b1, b2, a1
|
169
214
|
|
170
215
|
assert_require 'test_gem_require_a'
|
171
|
-
assert_equal %w
|
216
|
+
assert_equal %w[a-1], loaded_spec_names
|
172
217
|
assert_equal unresolved_names, ["b (>= 1)"]
|
173
218
|
|
174
219
|
assert_require "b/c"
|
175
|
-
assert_equal %w
|
220
|
+
assert_equal %w[a-1 b-2], loaded_spec_names
|
176
221
|
end
|
177
222
|
|
178
223
|
def test_require_is_not_lazy_with_one_possible
|
@@ -182,11 +227,11 @@ class TestGemRequire < Gem::TestCase
|
|
182
227
|
install_specs b1, a1
|
183
228
|
|
184
229
|
assert_require 'test_gem_require_a'
|
185
|
-
assert_equal %w
|
230
|
+
assert_equal %w[a-1 b-1], loaded_spec_names
|
186
231
|
assert_equal unresolved_names, []
|
187
232
|
|
188
233
|
assert_require "b/c"
|
189
|
-
assert_equal %w
|
234
|
+
assert_equal %w[a-1 b-1], loaded_spec_names
|
190
235
|
end
|
191
236
|
|
192
237
|
def test_require_can_use_a_pathname_object
|
@@ -195,7 +240,7 @@ class TestGemRequire < Gem::TestCase
|
|
195
240
|
install_specs a1
|
196
241
|
|
197
242
|
assert_require Pathname.new 'test_gem_require_a'
|
198
|
-
assert_equal %w
|
243
|
+
assert_equal %w[a-1], loaded_spec_names
|
199
244
|
assert_equal unresolved_names, []
|
200
245
|
end
|
201
246
|
|
@@ -205,32 +250,77 @@ class TestGemRequire < Gem::TestCase
|
|
205
250
|
stdlib one is already in $LOADED_FEATURES?. Reproducible by running the
|
206
251
|
spaceship_specific_file test before this one" if java_platform?
|
207
252
|
|
208
|
-
|
209
|
-
|
210
|
-
|
253
|
+
skip "not installed yet" unless RbConfig::TOPDIR
|
254
|
+
|
255
|
+
lib_dir = File.expand_path("../../lib", File.dirname(__FILE__))
|
256
|
+
rubylibdir = File.realdirpath(RbConfig::CONFIG["rubylibdir"])
|
257
|
+
if rubylibdir == lib_dir
|
258
|
+
# testing in the ruby repository where RubyGems' lib/ == stdlib lib/
|
259
|
+
# In that case we want to move the stdlib lib/ to still be after b-2 in $LOAD_PATH
|
260
|
+
lp = $LOAD_PATH.dup
|
211
261
|
$LOAD_PATH.delete lib_dir
|
212
262
|
$LOAD_PATH.push lib_dir
|
263
|
+
load_path_changed = true
|
213
264
|
end
|
214
265
|
|
266
|
+
require 'benchmark' # the stdlib
|
267
|
+
|
215
268
|
a1 = util_spec "a", "1", {"b" => ">= 1"}, "lib/test_gem_require_a.rb"
|
216
269
|
b1 = util_spec "b", "1", nil, "lib/benchmark.rb"
|
217
270
|
b2 = util_spec "b", "2", nil, "lib/benchmark.rb"
|
218
271
|
|
219
272
|
install_specs b1, b2, a1
|
220
273
|
|
274
|
+
# Activates a-1, but not b-1 and b-2
|
221
275
|
assert_require 'test_gem_require_a'
|
276
|
+
assert_equal %w[a-1], loaded_spec_names
|
277
|
+
assert $LOAD_PATH.include? a1.load_paths[0]
|
278
|
+
refute $LOAD_PATH.include? b1.load_paths[0]
|
279
|
+
refute $LOAD_PATH.include? b2.load_paths[0]
|
280
|
+
|
222
281
|
assert_equal unresolved_names, ["b (>= 1)"]
|
223
282
|
|
224
|
-
|
283
|
+
# The require('benchmark') below will activate b-2. However, its
|
284
|
+
# lib/benchmark.rb won't ever be loaded. The reason is MRI sees that even
|
285
|
+
# though b-2 is earlier in $LOAD_PATH it already loaded a benchmark.rb file
|
286
|
+
# and that still exists in $LOAD_PATH (further down),
|
287
|
+
# and as a result #gem_original_require returns false.
|
288
|
+
refute require('benchmark'), "the benchmark stdlib should be recognized as already loaded"
|
289
|
+
|
290
|
+
assert_includes $LOAD_PATH, b2.load_paths[0]
|
291
|
+
assert_includes $LOAD_PATH, rubylibdir
|
292
|
+
message = proc {
|
293
|
+
"this test relies on the b-2 gem lib/ to be before stdlib to make sense\n" +
|
294
|
+
$LOAD_PATH.pretty_inspect
|
295
|
+
}
|
296
|
+
assert_operator $LOAD_PATH.index(b2.load_paths[0]), :<, $LOAD_PATH.index(rubylibdir), message
|
225
297
|
|
226
298
|
# We detected that we should activate b-2, so we did so, but
|
227
|
-
# then
|
228
|
-
# This case is fine because our lazy loading
|
299
|
+
# then #gem_original_require decided "I've already got some benchmark.rb" loaded.
|
300
|
+
# This case is fine because our lazy loading provided exactly
|
229
301
|
# the same behavior as eager loading would have.
|
230
302
|
|
231
|
-
assert_equal %w
|
303
|
+
assert_equal %w[a-1 b-2], loaded_spec_names
|
232
304
|
ensure
|
233
|
-
$LOAD_PATH.replace lp
|
305
|
+
$LOAD_PATH.replace lp if load_path_changed
|
306
|
+
end
|
307
|
+
|
308
|
+
def test_activate_via_require_respects_loaded_default_from_default_gems
|
309
|
+
a1 = new_default_spec "a", "1", nil, "a.rb"
|
310
|
+
|
311
|
+
# simulate requiring a default gem before rubygems is loaded
|
312
|
+
Kernel.send(:gem_original_require, "a")
|
313
|
+
|
314
|
+
# simulate registering default specs on loading rubygems
|
315
|
+
install_default_gems a1
|
316
|
+
|
317
|
+
a2 = util_spec "a", "2", nil, "lib/a.rb"
|
318
|
+
|
319
|
+
install_specs a2
|
320
|
+
|
321
|
+
refute_require 'a'
|
322
|
+
|
323
|
+
assert_equal %w[a-1], loaded_spec_names
|
234
324
|
end
|
235
325
|
|
236
326
|
def test_already_activated_direct_conflict
|
@@ -244,12 +334,12 @@ class TestGemRequire < Gem::TestCase
|
|
244
334
|
|
245
335
|
a1.activate
|
246
336
|
c1.activate
|
247
|
-
assert_equal %w
|
337
|
+
assert_equal %w[a-1 c-1], loaded_spec_names
|
248
338
|
assert_equal ["b (> 0)"], unresolved_names
|
249
339
|
|
250
340
|
assert require("ib")
|
251
341
|
|
252
|
-
assert_equal %w
|
342
|
+
assert_equal %w[a-1 b-1 c-1], loaded_spec_names
|
253
343
|
assert_equal [], unresolved_names
|
254
344
|
end
|
255
345
|
|
@@ -266,7 +356,7 @@ class TestGemRequire < Gem::TestCase
|
|
266
356
|
|
267
357
|
a1.activate
|
268
358
|
c1.activate
|
269
|
-
assert_equal %w
|
359
|
+
assert_equal %w[a-1 c-1], loaded_spec_names
|
270
360
|
assert_equal ["b (> 0)", "x (> 0)"], unresolved_names
|
271
361
|
|
272
362
|
e = assert_raises(Gem::LoadError) do
|
@@ -289,7 +379,7 @@ class TestGemRequire < Gem::TestCase
|
|
289
379
|
|
290
380
|
a1.activate
|
291
381
|
c1.activate
|
292
|
-
assert_equal %w
|
382
|
+
assert_equal %w[a-1 c-1], loaded_spec_names
|
293
383
|
assert_equal ["b (> 0)"], unresolved_names
|
294
384
|
|
295
385
|
e = assert_raises(Gem::LoadError) do
|
@@ -315,26 +405,26 @@ class TestGemRequire < Gem::TestCase
|
|
315
405
|
|
316
406
|
# Remove an old default gem version directly from disk as if someone ran
|
317
407
|
# gem cleanup.
|
318
|
-
FileUtils.rm_rf(File.join @
|
319
|
-
FileUtils.rm_rf(File.join @
|
408
|
+
FileUtils.rm_rf(File.join @gemhome, "#{b1.full_name}")
|
409
|
+
FileUtils.rm_rf(File.join @gemhome, "specifications", "default", "#{b1.full_name}.gemspec")
|
320
410
|
|
321
411
|
# Require gems that have not been removed.
|
322
412
|
assert_require 'a/b'
|
323
|
-
assert_equal %w
|
413
|
+
assert_equal %w[a-1.0], loaded_spec_names
|
324
414
|
assert_require 'b/d'
|
325
|
-
assert_equal %w
|
415
|
+
assert_equal %w[a-1.0 b-2.0], loaded_spec_names
|
326
416
|
end
|
327
417
|
|
328
418
|
def test_require_doesnt_traverse_development_dependencies
|
329
419
|
a = util_spec("a#{$$}", "1", nil, "lib/a#{$$}.rb")
|
330
420
|
z = util_spec("z", "1", "w" => "> 0")
|
331
|
-
w1 = util_spec("w", "1") {
|
332
|
-
w2 = util_spec("w", "2") {
|
421
|
+
w1 = util_spec("w", "1") {|s| s.add_development_dependency "non-existent" }
|
422
|
+
w2 = util_spec("w", "2") {|s| s.add_development_dependency "non-existent" }
|
333
423
|
|
334
424
|
install_specs a, w1, w2, z
|
335
425
|
|
336
426
|
assert gem("z")
|
337
|
-
assert_equal %w
|
427
|
+
assert_equal %w[z-1], loaded_spec_names
|
338
428
|
assert_equal ["w (> 0)"], unresolved_names
|
339
429
|
|
340
430
|
assert require("a#{$$}")
|
@@ -343,15 +433,15 @@ class TestGemRequire < Gem::TestCase
|
|
343
433
|
def test_default_gem_only
|
344
434
|
default_gem_spec = new_default_spec("default", "2.0.0.0",
|
345
435
|
nil, "default/gem.rb")
|
346
|
-
|
436
|
+
install_default_gems(default_gem_spec)
|
347
437
|
assert_require "default/gem"
|
348
|
-
assert_equal %w
|
438
|
+
assert_equal %w[default-2.0.0.0], loaded_spec_names
|
349
439
|
end
|
350
440
|
|
351
441
|
def test_default_gem_require_activates_just_once
|
352
442
|
default_gem_spec = new_default_spec("default", "2.0.0.0",
|
353
443
|
nil, "default/gem.rb")
|
354
|
-
|
444
|
+
install_default_gems(default_gem_spec)
|
355
445
|
|
356
446
|
assert_require "default/gem"
|
357
447
|
|
@@ -364,6 +454,17 @@ class TestGemRequire < Gem::TestCase
|
|
364
454
|
assert_equal 0, times_called
|
365
455
|
end
|
366
456
|
|
457
|
+
def test_second_gem_require_does_not_resolve_path_manually_before_going_through_standard_require
|
458
|
+
a1 = util_spec "a", "1", nil, "lib/test_gem_require_a.rb"
|
459
|
+
install_gem a1
|
460
|
+
|
461
|
+
assert_require "test_gem_require_a"
|
462
|
+
|
463
|
+
stub(:gem_original_require, ->(path) { assert_equal "test_gem_require_a", path }) do
|
464
|
+
require "test_gem_require_a"
|
465
|
+
end
|
466
|
+
end
|
467
|
+
|
367
468
|
def test_realworld_default_gem
|
368
469
|
testing_ruby_repo = !ENV["GEM_COMMAND"].nil?
|
369
470
|
skip "this test can't work under ruby-core setup" if testing_ruby_repo || java_platform?
|
@@ -373,32 +474,84 @@ class TestGemRequire < Gem::TestCase
|
|
373
474
|
require "json"
|
374
475
|
puts Gem.loaded_specs["json"]
|
375
476
|
RUBY
|
376
|
-
output = Gem::Util.popen(
|
477
|
+
output = Gem::Util.popen(*ruby_with_rubygems_in_load_path, "-e", cmd).strip
|
478
|
+
assert $?.success?
|
479
|
+
refute_empty output
|
480
|
+
end
|
481
|
+
|
482
|
+
def test_realworld_upgraded_default_gem
|
483
|
+
testing_ruby_repo = !ENV["GEM_COMMAND"].nil?
|
484
|
+
skip "this test can't work under ruby-core setup" if testing_ruby_repo
|
485
|
+
|
486
|
+
newer_json = util_spec("json", "999.99.9", nil, ["lib/json.rb"])
|
487
|
+
install_gem newer_json
|
488
|
+
|
489
|
+
path = "#{@tempdir}/test_realworld_upgraded_default_gem.rb"
|
490
|
+
code = <<-RUBY
|
491
|
+
$stderr = $stdout
|
492
|
+
require "json"
|
493
|
+
puts Gem.loaded_specs["json"].version
|
494
|
+
puts $LOADED_FEATURES
|
495
|
+
RUBY
|
496
|
+
File.write(path, code)
|
497
|
+
|
498
|
+
output = Gem::Util.popen({ 'GEM_HOME' => @gemhome }, *ruby_with_rubygems_in_load_path, path).strip
|
499
|
+
assert $?.success?
|
377
500
|
refute_empty output
|
501
|
+
assert_equal "999.99.9", output.lines[0].chomp
|
502
|
+
# Make sure only files from the newer json gem are loaded, and no files from the default json gem
|
503
|
+
assert_equal ["#{@gemhome}/gems/json-999.99.9/lib/json.rb"], output.lines.grep(%r{/gems/json-}).map(&:chomp)
|
378
504
|
end
|
379
505
|
|
380
506
|
def test_default_gem_and_normal_gem
|
381
507
|
default_gem_spec = new_default_spec("default", "2.0.0.0",
|
382
508
|
nil, "default/gem.rb")
|
383
|
-
|
509
|
+
install_default_gems(default_gem_spec)
|
384
510
|
normal_gem_spec = util_spec("default", "3.0", nil,
|
385
511
|
"lib/default/gem.rb")
|
386
512
|
install_specs(normal_gem_spec)
|
387
513
|
assert_require "default/gem"
|
388
|
-
assert_equal %w
|
514
|
+
assert_equal %w[default-3.0], loaded_spec_names
|
515
|
+
end
|
516
|
+
|
517
|
+
def test_normal_gems_with_overridden_load_error_message
|
518
|
+
normal_gem_spec = util_spec("normal", "3.0", nil, "lib/normal/gem.rb")
|
519
|
+
|
520
|
+
install_specs(normal_gem_spec)
|
521
|
+
|
522
|
+
File.write("require_with_overridden_load_error_message.rb", <<-RUBY)
|
523
|
+
LoadError.class_eval do
|
524
|
+
def message
|
525
|
+
"Overridden message"
|
526
|
+
end
|
527
|
+
end
|
528
|
+
|
529
|
+
require 'normal/gem'
|
530
|
+
RUBY
|
531
|
+
|
532
|
+
require "open3"
|
533
|
+
|
534
|
+
output, exit_status = Open3.capture2e(
|
535
|
+
{ "GEM_HOME" => Gem.paths.home },
|
536
|
+
*ruby_with_rubygems_in_load_path,
|
537
|
+
"-r",
|
538
|
+
"./require_with_overridden_load_error_message.rb"
|
539
|
+
)
|
540
|
+
|
541
|
+
assert exit_status.success?, "Require failed due to #{output}"
|
389
542
|
end
|
390
543
|
|
391
544
|
def test_default_gem_prerelease
|
392
545
|
default_gem_spec = new_default_spec("default", "2.0.0",
|
393
546
|
nil, "default/gem.rb")
|
394
|
-
|
547
|
+
install_default_gems(default_gem_spec)
|
395
548
|
|
396
549
|
normal_gem_higher_prerelease_spec = util_spec("default", "3.0.0.rc2", nil,
|
397
550
|
"lib/default/gem.rb")
|
398
|
-
|
551
|
+
install_default_gems(normal_gem_higher_prerelease_spec)
|
399
552
|
|
400
553
|
assert_require "default/gem"
|
401
|
-
assert_equal %w
|
554
|
+
assert_equal %w[default-3.0.0.rc2], loaded_spec_names
|
402
555
|
end
|
403
556
|
|
404
557
|
def loaded_spec_names
|
@@ -412,10 +565,8 @@ class TestGemRequire < Gem::TestCase
|
|
412
565
|
def test_try_activate_error_unlocks_require_monitor
|
413
566
|
silence_warnings do
|
414
567
|
class << ::Gem
|
415
|
-
|
416
568
|
alias old_try_activate try_activate
|
417
569
|
def try_activate(*); raise 'raised from try_activate'; end
|
418
|
-
|
419
570
|
end
|
420
571
|
end
|
421
572
|
|
@@ -426,9 +577,7 @@ class TestGemRequire < Gem::TestCase
|
|
426
577
|
ensure
|
427
578
|
silence_warnings do
|
428
579
|
class << ::Gem
|
429
|
-
|
430
580
|
alias try_activate old_try_activate
|
431
|
-
|
432
581
|
end
|
433
582
|
end
|
434
583
|
Kernel::RUBYGEMS_ACTIVATION_MONITOR.exit
|
@@ -437,14 +586,14 @@ class TestGemRequire < Gem::TestCase
|
|
437
586
|
def test_require_when_gem_defined
|
438
587
|
default_gem_spec = new_default_spec("default", "2.0.0.0",
|
439
588
|
nil, "default/gem.rb")
|
440
|
-
|
589
|
+
install_default_gems(default_gem_spec)
|
441
590
|
c = Class.new do
|
442
591
|
def self.gem(*args)
|
443
592
|
raise "received #gem with #{args.inspect}"
|
444
593
|
end
|
445
594
|
end
|
446
595
|
assert c.send(:require, "default/gem")
|
447
|
-
assert_equal %w
|
596
|
+
assert_equal %w[default-2.0.0.0], loaded_spec_names
|
448
597
|
end
|
449
598
|
|
450
599
|
def test_require_default_when_gem_defined
|
@@ -456,7 +605,7 @@ class TestGemRequire < Gem::TestCase
|
|
456
605
|
end
|
457
606
|
end
|
458
607
|
assert c.send(:require, "a#{$$}")
|
459
|
-
assert_equal %W
|
608
|
+
assert_equal %W[a#{$$}-1], loaded_spec_names
|
460
609
|
end
|
461
610
|
|
462
611
|
def test_require_bundler
|
@@ -500,38 +649,79 @@ class TestGemRequire < Gem::TestCase
|
|
500
649
|
if RUBY_VERSION >= "2.5"
|
501
650
|
["", "Kernel."].each do |prefix|
|
502
651
|
define_method "test_no_kernel_require_in_#{prefix.tr(".", "_")}warn_with_uplevel" do
|
503
|
-
lib = File.realpath("../../../lib", __FILE__)
|
504
652
|
Dir.mktmpdir("warn_test") do |dir|
|
505
653
|
File.write(dir + "/sub.rb", "#{prefix}warn 'uplevel', 'test', uplevel: 1\n")
|
506
654
|
File.write(dir + "/main.rb", "require 'sub'\n")
|
507
655
|
_, err = capture_subprocess_io do
|
508
|
-
system(
|
656
|
+
system(*ruby_with_rubygems_in_load_path, "-w", "--disable=gems", "-C", dir, "-I", dir, "main.rb")
|
509
657
|
end
|
510
658
|
assert_match(/main\.rb:1: warning: uplevel\ntest\n$/, err)
|
511
659
|
_, err = capture_subprocess_io do
|
512
|
-
system(
|
660
|
+
system(*ruby_with_rubygems_in_load_path, "-w", "--enable=gems", "-C", dir, "-I", dir, "main.rb")
|
513
661
|
end
|
514
662
|
assert_match(/main\.rb:1: warning: uplevel\ntest\n$/, err)
|
515
663
|
end
|
516
664
|
end
|
517
665
|
|
518
666
|
define_method "test_no_other_behavioral_changes_with_#{prefix.tr(".", "_")}warn" do
|
519
|
-
lib = File.realpath("../../../lib", __FILE__)
|
520
667
|
Dir.mktmpdir("warn_test") do |dir|
|
521
668
|
File.write(dir + "/main.rb", "#{prefix}warn({x:1}, {y:2}, [])\n")
|
522
669
|
_, err = capture_subprocess_io do
|
523
|
-
system(
|
670
|
+
system(*ruby_with_rubygems_in_load_path, "-w", "--disable=gems", "-C", dir, "main.rb")
|
524
671
|
end
|
525
672
|
assert_match(/{:x=>1}\n{:y=>2}\n$/, err)
|
526
673
|
_, err = capture_subprocess_io do
|
527
|
-
system(
|
674
|
+
system(*ruby_with_rubygems_in_load_path, "-w", "--enable=gems", "-C", dir, "main.rb")
|
528
675
|
end
|
529
676
|
assert_match(/{:x=>1}\n{:y=>2}\n$/, err)
|
530
677
|
end
|
531
678
|
end
|
532
679
|
end
|
680
|
+
|
681
|
+
def test_no_crash_when_overriding_warn_with_warning_module
|
682
|
+
skip "https://github.com/oracle/truffleruby/issues/2109" if RUBY_ENGINE == "truffleruby"
|
683
|
+
|
684
|
+
Dir.mktmpdir("warn_test") do |dir|
|
685
|
+
File.write(dir + "/main.rb", "module Warning; def warn(str); super; end; end; warn 'Foo Bar'")
|
686
|
+
_, err = capture_subprocess_io do
|
687
|
+
system(*ruby_with_rubygems_in_load_path, "-w", "--disable=gems", "-C", dir, "main.rb")
|
688
|
+
end
|
689
|
+
assert_match(/Foo Bar\n$/, err)
|
690
|
+
_, err = capture_subprocess_io do
|
691
|
+
system(*ruby_with_rubygems_in_load_path, "-w", "--enable=gems", "-C", dir, "main.rb")
|
692
|
+
end
|
693
|
+
assert_match(/Foo Bar\n$/, err)
|
694
|
+
end
|
695
|
+
end
|
696
|
+
|
697
|
+
def test_expected_backtrace_location_when_inheriting_from_basic_object_and_including_kernel
|
698
|
+
Dir.mktmpdir("warn_test") do |dir|
|
699
|
+
File.write(dir + "/main.rb", "\nrequire 'sub'\n")
|
700
|
+
File.write(dir + "/sub.rb", <<-'RUBY')
|
701
|
+
require 'rubygems'
|
702
|
+
class C < BasicObject
|
703
|
+
include ::Kernel
|
704
|
+
def deprecated
|
705
|
+
warn "This is a deprecated method", uplevel: 2
|
706
|
+
end
|
707
|
+
end
|
708
|
+
C.new.deprecated
|
709
|
+
RUBY
|
710
|
+
|
711
|
+
_, err = capture_subprocess_io do
|
712
|
+
system(*ruby_with_rubygems_in_load_path, "-w", "--disable=gems", "-C", dir, "-I", dir, "main.rb")
|
713
|
+
end
|
714
|
+
assert_match(/main\.rb:2: warning: This is a deprecated method$/, err)
|
715
|
+
_, err = capture_subprocess_io do
|
716
|
+
system(*ruby_with_rubygems_in_load_path, "-w", "--enable=gems", "-C", dir, "-I", dir, "main.rb")
|
717
|
+
end
|
718
|
+
assert_match(/main\.rb:2: warning: This is a deprecated method$/, err)
|
719
|
+
end
|
720
|
+
end
|
533
721
|
end
|
534
722
|
|
723
|
+
private
|
724
|
+
|
535
725
|
def silence_warnings
|
536
726
|
old_verbose, $VERBOSE = $VERBOSE, false
|
537
727
|
yield
|
@@ -539,4 +729,49 @@ class TestGemRequire < Gem::TestCase
|
|
539
729
|
$VERBOSE = old_verbose
|
540
730
|
end
|
541
731
|
|
732
|
+
def util_install_extension_file(name)
|
733
|
+
spec = quick_gem name
|
734
|
+
util_build_gem spec
|
735
|
+
|
736
|
+
spec.extensions << "extconf.rb"
|
737
|
+
write_file File.join(@tempdir, "extconf.rb") do |io|
|
738
|
+
io.write <<-RUBY
|
739
|
+
require "mkmf"
|
740
|
+
CONFIG['LDSHARED'] = '$(TOUCH) $@ ||'
|
741
|
+
create_makefile("#{name}")
|
742
|
+
RUBY
|
743
|
+
end
|
744
|
+
|
745
|
+
write_file File.join(@tempdir, "#{name}.c") do |io|
|
746
|
+
io.write <<-C
|
747
|
+
void Init_#{name}() { }
|
748
|
+
C
|
749
|
+
end
|
750
|
+
|
751
|
+
write_file File.join(@tempdir, "depend")
|
752
|
+
|
753
|
+
spec.files += ["extconf.rb", "depend", "#{name}.c"]
|
754
|
+
|
755
|
+
so = File.join(spec.gem_dir, "#{name}.#{RbConfig::CONFIG["DLEXT"]}")
|
756
|
+
refute_path_exists so
|
757
|
+
|
758
|
+
path = Gem::Package.build spec
|
759
|
+
installer = Gem::Installer.at path
|
760
|
+
installer.install
|
761
|
+
assert_path_exists so
|
762
|
+
|
763
|
+
spec.gem_dir
|
764
|
+
end
|
765
|
+
|
766
|
+
def util_install_ruby_file(name)
|
767
|
+
dir_lib = Dir.mktmpdir("test_require_lib", @tempdir)
|
768
|
+
dash_i_lib_arg = File.join dir_lib
|
769
|
+
|
770
|
+
a_rb = File.join dash_i_lib_arg, "#{name}.rb"
|
771
|
+
|
772
|
+
FileUtils.mkdir_p File.dirname a_rb
|
773
|
+
File.open(a_rb, 'w') {|f| f.write "# #{name}.rb" }
|
774
|
+
|
775
|
+
dash_i_lib_arg
|
776
|
+
end
|
542
777
|
end
|