rubygems-update 3.1.6 → 3.2.0.rc.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CODE_OF_CONDUCT.md +55 -19
- data/CONTRIBUTING.md +1 -2
- data/History.txt +122 -14
- data/Manifest.txt +13 -25
- data/POLICIES.md +2 -9
- data/README.md +1 -1
- data/Rakefile +31 -33
- data/bin/update_rubygems +1 -1
- data/bundler/CHANGELOG.md +806 -741
- data/bundler/README.md +6 -8
- data/bundler/UPGRADING.md +16 -30
- data/bundler/bundler.gemspec +3 -3
- data/bundler/exe/bundle +3 -0
- data/bundler/lib/bundler.rb +15 -4
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/cli.rb +32 -11
- data/bundler/lib/bundler/cli/console.rb +1 -1
- data/bundler/lib/bundler/cli/gem.rb +83 -10
- data/bundler/lib/bundler/cli/info.rb +13 -3
- data/bundler/lib/bundler/cli/init.rb +1 -1
- data/bundler/lib/bundler/cli/install.rb +5 -14
- data/bundler/lib/bundler/cli/issue.rb +2 -2
- data/bundler/lib/bundler/cli/list.rb +11 -9
- data/bundler/lib/bundler/cli/outdated.rb +88 -65
- data/bundler/lib/bundler/cli/plugin.rb +10 -0
- data/bundler/lib/bundler/cli/pristine.rb +5 -0
- data/bundler/lib/bundler/definition.rb +32 -32
- data/bundler/lib/bundler/dependency.rb +0 -9
- data/bundler/lib/bundler/dsl.rb +1 -5
- 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 -2
- data/bundler/lib/bundler/fetcher.rb +1 -0
- data/bundler/lib/bundler/friendly_errors.rb +4 -10
- data/bundler/lib/bundler/gem_helper.rb +17 -10
- data/bundler/lib/bundler/gem_version_promoter.rb +1 -1
- data/bundler/lib/bundler/injector.rb +14 -3
- data/bundler/lib/bundler/inline.rb +1 -1
- data/bundler/lib/bundler/installer.rb +29 -28
- data/bundler/lib/bundler/installer/gem_installer.rb +2 -2
- data/bundler/lib/bundler/installer/parallel_installer.rb +9 -9
- data/bundler/lib/bundler/lazy_specification.rb +16 -3
- data/bundler/lib/bundler/plugin.rb +26 -0
- data/bundler/lib/bundler/plugin/index.rb +9 -0
- data/bundler/lib/bundler/psyched_yaml.rb +0 -15
- data/bundler/lib/bundler/remote_specification.rb +4 -1
- data/bundler/lib/bundler/resolver.rb +31 -8
- data/bundler/lib/bundler/resolver/spec_group.rb +26 -5
- data/bundler/lib/bundler/rubygems_ext.rb +7 -8
- data/bundler/lib/bundler/rubygems_gem_installer.rb +1 -7
- data/bundler/lib/bundler/rubygems_integration.rb +3 -48
- data/bundler/lib/bundler/runtime.rb +2 -12
- data/bundler/lib/bundler/settings.rb +0 -3
- data/bundler/lib/bundler/shared_helpers.rb +1 -1
- data/bundler/lib/bundler/source/git.rb +4 -4
- data/bundler/lib/bundler/source/git/git_proxy.rb +53 -58
- data/bundler/lib/bundler/source/path.rb +5 -1
- data/bundler/lib/bundler/source/path/installer.rb +7 -9
- data/bundler/lib/bundler/source/rubygems.rb +11 -14
- data/bundler/lib/bundler/stub_specification.rb +16 -4
- 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/Rakefile.tt +19 -5
- data/bundler/lib/bundler/templates/newgem/bin/console.tt +2 -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 +2 -0
- data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +6 -4
- 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 -0
- 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/vendor/net-http-persistent/lib/net/http/persistent.rb +75 -189
- 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/version.rb +1 -1
- data/bundler/man/bundle-add.1 +1 -1
- data/bundler/man/bundle-add.1.txt +15 -15
- data/bundler/man/bundle-binstubs.1 +1 -1
- data/bundler/man/bundle-binstubs.1.txt +10 -10
- data/bundler/man/bundle-cache.1 +1 -1
- data/bundler/man/bundle-cache.1.txt +15 -15
- data/bundler/man/bundle-check.1 +1 -1
- data/bundler/man/bundle-check.1.txt +8 -8
- data/bundler/man/bundle-clean.1 +1 -1
- data/bundler/man/bundle-clean.1.txt +6 -6
- data/bundler/man/bundle-config.1 +3 -9
- data/bundler/man/bundle-config.1.txt +271 -272
- data/bundler/man/bundle-config.ronn +5 -9
- data/bundler/man/bundle-doctor.1 +1 -1
- data/bundler/man/bundle-doctor.1.txt +9 -9
- data/bundler/man/bundle-exec.1 +1 -1
- data/bundler/man/bundle-exec.1.txt +84 -81
- data/bundler/man/bundle-gem.1 +25 -3
- data/bundler/man/bundle-gem.1.txt +65 -39
- data/bundler/man/bundle-gem.ronn +30 -7
- data/bundler/man/bundle-info.1 +1 -1
- data/bundler/man/bundle-info.1.txt +2 -2
- data/bundler/man/bundle-init.1 +1 -1
- data/bundler/man/bundle-init.1.txt +9 -9
- data/bundler/man/bundle-inject.1 +1 -1
- data/bundler/man/bundle-inject.1.txt +4 -4
- data/bundler/man/bundle-install.1 +1 -1
- data/bundler/man/bundle-install.1.txt +169 -169
- data/bundler/man/bundle-list.1 +7 -7
- data/bundler/man/bundle-list.1.txt +12 -11
- data/bundler/man/bundle-list.ronn +6 -6
- data/bundler/man/bundle-lock.1 +1 -1
- data/bundler/man/bundle-lock.1.txt +28 -28
- data/bundler/man/bundle-open.1 +1 -1
- data/bundler/man/bundle-open.1.txt +3 -3
- data/bundler/man/bundle-outdated.1 +1 -1
- data/bundler/man/bundle-outdated.1.txt +34 -34
- data/bundler/man/bundle-platform.1 +1 -1
- data/bundler/man/bundle-platform.1.txt +16 -16
- data/bundler/man/bundle-pristine.1 +1 -1
- data/bundler/man/bundle-pristine.1.txt +8 -8
- data/bundler/man/bundle-remove.1 +1 -1
- data/bundler/man/bundle-remove.1.txt +9 -9
- data/bundler/man/bundle-show.1 +1 -1
- data/bundler/man/bundle-show.1.txt +8 -8
- data/bundler/man/bundle-update.1 +1 -1
- data/bundler/man/bundle-update.1.txt +149 -148
- data/bundler/man/bundle-viz.1 +1 -1
- data/bundler/man/bundle-viz.1.txt +11 -11
- data/bundler/man/bundle.1 +1 -1
- data/bundler/man/bundle.1.txt +31 -31
- data/bundler/man/gemfile.5 +1 -1
- data/bundler/man/gemfile.5.txt +218 -216
- data/lib/rubygems.rb +68 -148
- data/lib/rubygems/available_set.rb +4 -4
- data/lib/rubygems/basic_specification.rb +11 -5
- data/lib/rubygems/bundler_version_finder.rb +14 -9
- data/lib/rubygems/command.rb +16 -14
- data/lib/rubygems/command_manager.rb +4 -3
- data/lib/rubygems/commands/cert_command.rb +1 -1
- data/lib/rubygems/commands/cleanup_command.rb +3 -3
- data/lib/rubygems/commands/contents_command.rb +4 -4
- data/lib/rubygems/commands/dependency_command.rb +6 -6
- data/lib/rubygems/commands/fetch_command.rb +2 -2
- data/lib/rubygems/commands/help_command.rb +1 -1
- data/lib/rubygems/commands/info_command.rb +9 -4
- data/lib/rubygems/commands/install_command.rb +3 -3
- data/lib/rubygems/commands/list_command.rb +9 -6
- data/lib/rubygems/commands/lock_command.rb +1 -1
- data/lib/rubygems/commands/open_command.rb +0 -2
- data/lib/rubygems/commands/pristine_command.rb +10 -2
- data/lib/rubygems/commands/push_command.rb +4 -42
- data/lib/rubygems/commands/query_command.rb +7 -352
- data/lib/rubygems/commands/search_command.rb +8 -6
- data/lib/rubygems/commands/setup_command.rb +128 -32
- data/lib/rubygems/commands/specification_command.rb +2 -2
- data/lib/rubygems/commands/stale_command.rb +1 -1
- data/lib/rubygems/commands/uninstall_command.rb +1 -1
- data/lib/rubygems/commands/unpack_command.rb +1 -1
- data/lib/rubygems/commands/update_command.rb +40 -10
- data/lib/rubygems/config_file.rb +11 -2
- data/lib/rubygems/core_ext/kernel_require.rb +2 -2
- data/lib/rubygems/defaults.rb +99 -5
- data/lib/rubygems/dependency.rb +2 -5
- data/lib/rubygems/dependency_installer.rb +1 -73
- data/lib/rubygems/dependency_list.rb +7 -7
- data/lib/rubygems/deprecate.rb +46 -1
- data/lib/rubygems/doctor.rb +4 -2
- data/lib/rubygems/errors.rb +3 -2
- data/lib/rubygems/exceptions.rb +2 -13
- data/lib/rubygems/ext.rb +6 -6
- data/lib/rubygems/ext/build_error.rb +2 -0
- data/lib/rubygems/ext/builder.rb +1 -1
- data/lib/rubygems/ext/cmake_builder.rb +1 -1
- data/lib/rubygems/ext/ext_conf_builder.rb +6 -7
- data/lib/rubygems/gem_runner.rb +3 -8
- data/lib/rubygems/gemcutter_utilities.rb +1 -1
- data/lib/rubygems/indexer.rb +1 -19
- data/lib/rubygems/install_update_options.rb +5 -5
- data/lib/rubygems/installer.rb +45 -42
- data/lib/rubygems/installer_test_case.rb +19 -2
- data/lib/rubygems/installer_uninstaller_utils.rb +24 -0
- data/lib/rubygems/local_remote_options.rb +1 -1
- data/lib/rubygems/name_tuple.rb +2 -4
- data/lib/rubygems/package.rb +8 -13
- data/lib/rubygems/package/old.rb +1 -1
- data/lib/rubygems/package/tar_header.rb +3 -3
- data/lib/rubygems/package/tar_reader.rb +0 -1
- data/lib/rubygems/package/tar_reader/entry.rb +0 -1
- data/lib/rubygems/package/tar_test_case.rb +1 -1
- data/lib/rubygems/package/tar_writer.rb +2 -6
- data/lib/rubygems/package_task.rb +1 -5
- data/lib/rubygems/path_support.rb +1 -1
- data/lib/rubygems/platform.rb +3 -3
- data/lib/rubygems/query_utils.rb +362 -0
- data/lib/rubygems/rdoc.rb +0 -12
- data/lib/rubygems/remote_fetcher.rb +5 -19
- data/lib/rubygems/request/connection_pools.rb +1 -1
- data/lib/rubygems/request_set.rb +5 -5
- data/lib/rubygems/request_set/gem_dependency_api.rb +1 -1
- data/lib/rubygems/request_set/lockfile.rb +8 -8
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -1
- data/lib/rubygems/requirement.rb +14 -15
- data/lib/rubygems/resolver.rb +7 -8
- data/lib/rubygems/resolver/api_set.rb +3 -3
- data/lib/rubygems/resolver/composed_set.rb +3 -3
- data/lib/rubygems/resolver/conflict.rb +1 -1
- data/lib/rubygems/resolver/index_set.rb +1 -1
- data/lib/rubygems/resolver/installer_set.rb +3 -3
- data/lib/rubygems/resolver/lock_set.rb +1 -1
- data/lib/rubygems/safe_yaml.rb +4 -4
- data/lib/rubygems/security.rb +25 -25
- data/lib/rubygems/security/policy.rb +3 -3
- data/lib/rubygems/security/signer.rb +4 -4
- data/lib/rubygems/security/trust_dir.rb +1 -1
- data/lib/rubygems/server.rb +8 -8
- data/lib/rubygems/source/git.rb +7 -6
- data/lib/rubygems/source/local.rb +2 -2
- data/lib/rubygems/source_list.rb +4 -5
- data/lib/rubygems/spec_fetcher.rb +18 -15
- data/lib/rubygems/specification.rb +79 -104
- data/lib/rubygems/specification_policy.rb +79 -27
- data/lib/rubygems/ssl_certs/{rubygems.org → index.rubygems.org}/GlobalSignRootCA.pem +0 -0
- data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +23 -0
- data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +25 -0
- data/lib/rubygems/test_case.rb +63 -83
- data/lib/rubygems/test_utilities.rb +6 -6
- data/lib/rubygems/uninstaller.rb +35 -14
- data/lib/rubygems/user_interaction.rb +1 -10
- data/lib/rubygems/util.rb +10 -2
- data/lib/rubygems/util/licenses.rb +4 -4
- data/lib/rubygems/validator.rb +1 -1
- data/lib/rubygems/version.rb +4 -4
- data/rubygems-update.gemspec +2 -2
- data/setup.rb +2 -7
- data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +0 -2
- data/test/rubygems/test_bundled_ca.rb +4 -12
- data/test/rubygems/test_deprecate.rb +43 -4
- data/test/rubygems/test_gem.rb +79 -74
- data/test/rubygems/test_gem_available_set.rb +3 -3
- data/test/rubygems/test_gem_bundler_version_finder.rb +19 -1
- data/test/rubygems/test_gem_command.rb +24 -3
- data/test/rubygems/test_gem_command_manager.rb +37 -4
- data/test/rubygems/test_gem_commands_build_command.rb +7 -2
- data/test/rubygems/test_gem_commands_cert_command.rb +2 -2
- data/test/rubygems/test_gem_commands_cleanup_command.rb +1 -1
- data/test/rubygems/test_gem_commands_contents_command.rb +48 -15
- data/test/rubygems/test_gem_commands_environment_command.rb +21 -21
- data/test/rubygems/test_gem_commands_generate_index_command.rb +1 -5
- data/test/rubygems/test_gem_commands_info_command.rb +6 -6
- data/test/rubygems/test_gem_commands_install_command.rb +31 -31
- data/test/rubygems/test_gem_commands_mirror.rb +1 -1
- data/test/rubygems/test_gem_commands_open_command.rb +4 -4
- data/test/rubygems/test_gem_commands_owner_command.rb +11 -3
- data/test/rubygems/test_gem_commands_pristine_command.rb +41 -8
- data/test/rubygems/test_gem_commands_push_command.rb +7 -2
- data/test/rubygems/test_gem_commands_query_command.rb +9 -5
- data/test/rubygems/test_gem_commands_setup_command.rb +160 -108
- data/test/rubygems/test_gem_commands_signin_command.rb +6 -4
- data/test/rubygems/test_gem_commands_signout_command.rb +0 -5
- data/test/rubygems/test_gem_commands_specification_command.rb +18 -18
- data/test/rubygems/test_gem_commands_uninstall_command.rb +1 -1
- data/test/rubygems/test_gem_commands_update_command.rb +68 -5
- data/test/rubygems/test_gem_commands_which_command.rb +3 -3
- data/test/rubygems/test_gem_commands_yank_command.rb +14 -6
- data/test/rubygems/test_gem_config_file.rb +7 -10
- data/test/rubygems/test_gem_dependency_installer.rb +52 -189
- data/test/rubygems/test_gem_dependency_list.rb +8 -8
- data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -1
- data/test/rubygems/test_gem_doctor.rb +28 -0
- data/test/rubygems/test_gem_ext_builder.rb +14 -25
- data/test/rubygems/test_gem_ext_cmake_builder.rb +13 -12
- data/test/rubygems/test_gem_ext_configure_builder.rb +1 -9
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -1
- data/test/rubygems/test_gem_ext_rake_builder.rb +9 -9
- data/test/rubygems/test_gem_gem_runner.rb +42 -0
- data/test/rubygems/test_gem_gemcutter_utilities.rb +5 -0
- data/test/rubygems/test_gem_indexer.rb +9 -13
- data/test/rubygems/test_gem_installer.rb +149 -45
- data/test/rubygems/test_gem_package.rb +13 -12
- data/test/rubygems/test_gem_package_tar_header.rb +19 -0
- data/test/rubygems/test_gem_package_tar_writer.rb +3 -3
- data/test/rubygems/test_gem_package_task.rb +46 -11
- data/test/rubygems/test_gem_remote_fetcher.rb +152 -190
- data/test/rubygems/test_gem_request.rb +11 -11
- data/test/rubygems/test_gem_request_set.rb +20 -20
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +3 -3
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -9
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -118
- data/test/rubygems/test_gem_requirement.rb +2 -2
- data/test/rubygems/test_gem_resolver.rb +6 -6
- data/test/rubygems/test_gem_resolver_api_set.rb +3 -3
- data/test/rubygems/test_gem_resolver_best_set.rb +2 -2
- data/test/rubygems/test_gem_resolver_index_set.rb +2 -2
- data/test/rubygems/test_gem_resolver_installer_set.rb +7 -7
- data/test/rubygems/test_gem_resolver_lock_set.rb +3 -3
- data/test/rubygems/test_gem_security.rb +20 -20
- data/test/rubygems/test_gem_security_policy.rb +5 -8
- data/test/rubygems/test_gem_security_signer.rb +8 -8
- data/test/rubygems/test_gem_security_trust_dir.rb +2 -2
- data/test/rubygems/test_gem_server.rb +10 -10
- data/test/rubygems/test_gem_source.rb +12 -14
- data/test/rubygems/test_gem_source_git.rb +12 -11
- data/test/rubygems/test_gem_source_installed.rb +7 -7
- data/test/rubygems/test_gem_source_local.rb +8 -8
- data/test/rubygems/test_gem_source_lock.rb +10 -10
- data/test/rubygems/test_gem_source_specific_file.rb +7 -7
- data/test/rubygems/test_gem_source_vendor.rb +7 -7
- data/test/rubygems/test_gem_spec_fetcher.rb +11 -2
- data/test/rubygems/test_gem_specification.rb +143 -113
- data/test/rubygems/test_gem_stream_ui.rb +3 -1
- data/test/rubygems/test_gem_text.rb +1 -1
- data/test/rubygems/test_gem_uninstaller.rb +134 -10
- data/test/rubygems/test_gem_util.rb +7 -5
- data/test/rubygems/test_gem_version.rb +1 -1
- data/test/rubygems/test_kernel.rb +10 -12
- data/test/rubygems/test_project_sanity.rb +8 -1
- data/test/rubygems/test_require.rb +141 -43
- metadata +32 -45
- 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/lib/rubygems/source_local.rb +0 -7
- data/lib/rubygems/source_specific_file.rb +0 -6
- data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +0 -21
- 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 -137
- data/util/update_changelog.rb +0 -64
@@ -3,24 +3,6 @@ require 'rubygems/installer_test_case'
|
|
3
3
|
|
4
4
|
class TestGemInstaller < Gem::InstallerTestCase
|
5
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
6
|
def setup
|
25
7
|
super
|
26
8
|
common_installer_setup
|
@@ -98,7 +80,7 @@ end
|
|
98
80
|
assert_path_exists installed_exec
|
99
81
|
|
100
82
|
wrapper = File.read installed_exec
|
101
|
-
assert_match %r
|
83
|
+
assert_match %r{generated by RubyGems}, wrapper
|
102
84
|
end
|
103
85
|
|
104
86
|
def test_check_executable_overwrite_default_bin_dir
|
@@ -114,7 +96,7 @@ end
|
|
114
96
|
end
|
115
97
|
|
116
98
|
conflicted = File.join @gemhome, 'bin', 'executable'
|
117
|
-
assert_match %r
|
99
|
+
assert_match %r{\A"executable" from a conflicts with (?:#{Regexp.quote(conflicted)}|installed executable from conflict)\z},
|
118
100
|
e.message
|
119
101
|
end
|
120
102
|
end
|
@@ -156,7 +138,7 @@ gem 'other', version
|
|
156
138
|
assert_path_exists installed_exec
|
157
139
|
|
158
140
|
wrapper = File.read installed_exec
|
159
|
-
assert_match %r
|
141
|
+
assert_match %r{generated by RubyGems}, wrapper
|
160
142
|
ensure
|
161
143
|
Gem::Installer.exec_format = nil
|
162
144
|
end
|
@@ -191,7 +173,7 @@ gem 'other', version
|
|
191
173
|
assert_path_exists installed_exec
|
192
174
|
|
193
175
|
wrapper = File.read installed_exec
|
194
|
-
assert_match %r
|
176
|
+
assert_match %r{generated by RubyGems}, wrapper
|
195
177
|
end
|
196
178
|
|
197
179
|
def test_check_executable_overwrite_other_non_gem
|
@@ -206,7 +188,7 @@ gem 'other', version
|
|
206
188
|
assert_path_exists installed_exec
|
207
189
|
|
208
190
|
wrapper = File.read installed_exec
|
209
|
-
assert_match %r
|
191
|
+
assert_match %r{generated by RubyGems}, wrapper
|
210
192
|
end unless Gem.win_platform?
|
211
193
|
|
212
194
|
def test_check_that_user_bin_dir_is_in_path
|
@@ -342,7 +324,7 @@ gem 'other', version
|
|
342
324
|
assert_equal mask, File.stat(installed_exec).mode unless win_platform?
|
343
325
|
|
344
326
|
wrapper = File.read installed_exec
|
345
|
-
assert_match %r
|
327
|
+
assert_match %r{generated by RubyGems}, wrapper
|
346
328
|
end
|
347
329
|
|
348
330
|
def test_generate_bin_bindir_with_user_install_warning
|
@@ -385,7 +367,7 @@ gem 'other', version
|
|
385
367
|
assert_equal mask, File.stat(installed_exec).mode unless win_platform?
|
386
368
|
|
387
369
|
wrapper = File.read installed_exec
|
388
|
-
assert_match %r
|
370
|
+
assert_match %r{generated by RubyGems}, wrapper
|
389
371
|
end
|
390
372
|
|
391
373
|
def test_generate_bin_script_format
|
@@ -444,7 +426,7 @@ gem 'other', version
|
|
444
426
|
assert_equal mask, File.stat(installed_exec).mode unless win_platform?
|
445
427
|
|
446
428
|
wrapper = File.read installed_exec
|
447
|
-
assert_match %r
|
429
|
+
assert_match %r{generated by RubyGems}, wrapper
|
448
430
|
end
|
449
431
|
|
450
432
|
def test_generate_bin_script_no_execs
|
@@ -501,7 +483,7 @@ gem 'other', version
|
|
501
483
|
assert_equal mask, File.stat(installed_exec).mode unless win_platform?
|
502
484
|
|
503
485
|
wrapper = File.read installed_exec
|
504
|
-
assert_match %r
|
486
|
+
assert_match %r{generated by RubyGems}, wrapper
|
505
487
|
# HACK some gems don't have #! in their executables, restore 2008/06
|
506
488
|
#assert_no_match %r|generated by RubyGems|, wrapper
|
507
489
|
end
|
@@ -527,9 +509,9 @@ gem 'other', version
|
|
527
509
|
assert_path_exists installed_exec
|
528
510
|
assert_equal mask, File.stat(installed_exec).mode unless win_platform?
|
529
511
|
|
530
|
-
assert_match %r
|
512
|
+
assert_match %r{generated by RubyGems}, File.read(installed_exec)
|
531
513
|
|
532
|
-
refute_match %r
|
514
|
+
refute_match %r{generated by RubyGems}, File.read(real_exec),
|
533
515
|
'real executable overwritten'
|
534
516
|
end
|
535
517
|
|
@@ -739,11 +721,105 @@ gem 'other', version
|
|
739
721
|
installer.generate_bin
|
740
722
|
|
741
723
|
default_shebang = Gem.ruby
|
742
|
-
shebang_line = open("#{@gemhome}/bin/executable") {
|
724
|
+
shebang_line = open("#{@gemhome}/bin/executable") {|f| f.readlines.first }
|
743
725
|
assert_match(/\A#!/, shebang_line)
|
744
726
|
assert_match(/#{default_shebang}/, shebang_line)
|
745
727
|
end
|
746
728
|
|
729
|
+
def test_generate_plugins
|
730
|
+
installer = util_setup_installer do |spec|
|
731
|
+
write_file File.join(@tempdir, 'lib', 'rubygems_plugin.rb') do |io|
|
732
|
+
io.write "puts __FILE__"
|
733
|
+
end
|
734
|
+
|
735
|
+
spec.files += %w[lib/rubygems_plugin.rb]
|
736
|
+
end
|
737
|
+
|
738
|
+
build_rake_in do
|
739
|
+
installer.install
|
740
|
+
end
|
741
|
+
|
742
|
+
plugin_path = File.join Gem.plugindir, 'a_plugin.rb'
|
743
|
+
|
744
|
+
FileUtils.rm plugin_path
|
745
|
+
|
746
|
+
installer.generate_plugins
|
747
|
+
|
748
|
+
assert File.exist?(plugin_path), 'plugin not written'
|
749
|
+
end
|
750
|
+
|
751
|
+
def test_generate_plugins_with_install_dir
|
752
|
+
spec = quick_gem 'a' do |s|
|
753
|
+
write_file File.join(@tempdir, 'lib', 'rubygems_plugin.rb') do |io|
|
754
|
+
io.write "puts __FILE__"
|
755
|
+
end
|
756
|
+
|
757
|
+
s.files += %w[lib/rubygems_plugin.rb]
|
758
|
+
end
|
759
|
+
|
760
|
+
util_build_gem spec
|
761
|
+
|
762
|
+
plugin_path = File.join "#{@gemhome}2", 'plugins', 'a_plugin.rb'
|
763
|
+
installer = util_installer spec, "#{@gemhome}2"
|
764
|
+
|
765
|
+
assert_equal spec, installer.install
|
766
|
+
|
767
|
+
assert File.exist?(plugin_path), 'plugin not written to install_dir'
|
768
|
+
end
|
769
|
+
|
770
|
+
def test_keeps_plugins_up_to_date
|
771
|
+
# NOTE: version a-2 is already installed by setup hooks
|
772
|
+
|
773
|
+
write_file File.join(@tempdir, 'lib', 'rubygems_plugin.rb') do |io|
|
774
|
+
io.write "puts __FILE__"
|
775
|
+
end
|
776
|
+
|
777
|
+
build_rake_in do
|
778
|
+
util_setup_installer do |spec|
|
779
|
+
spec.version = '1'
|
780
|
+
spec.files += %w[lib/rubygems_plugin.rb]
|
781
|
+
end.install
|
782
|
+
|
783
|
+
plugin_path = File.join Gem.plugindir, 'a_plugin.rb'
|
784
|
+
refute File.exist?(plugin_path), 'old version installed while newer version without plugin also installed, but plugin written'
|
785
|
+
|
786
|
+
util_setup_installer do |spec|
|
787
|
+
spec.version = '2'
|
788
|
+
spec.files += %w[lib/rubygems_plugin.rb]
|
789
|
+
end.install
|
790
|
+
|
791
|
+
plugin_path = File.join Gem.plugindir, 'a_plugin.rb'
|
792
|
+
assert File.exist?(plugin_path), 'latest version reinstalled, but plugin not written'
|
793
|
+
assert_match %r{\Arequire.*a-2/lib/rubygems_plugin\.rb}, File.read(plugin_path), 'written plugin has incorrect content'
|
794
|
+
|
795
|
+
util_setup_installer do |spec|
|
796
|
+
spec.version = '3'
|
797
|
+
spec.files += %w[lib/rubygems_plugin.rb]
|
798
|
+
end.install
|
799
|
+
|
800
|
+
plugin_path = File.join Gem.plugindir, 'a_plugin.rb'
|
801
|
+
assert File.exist?(plugin_path), 'latest version installed, but plugin removed'
|
802
|
+
assert_match %r{\Arequire.*a-3/lib/rubygems_plugin\.rb}, File.read(plugin_path), 'written plugin has incorrect content'
|
803
|
+
|
804
|
+
util_setup_installer do |spec|
|
805
|
+
spec.version = '4'
|
806
|
+
end.install
|
807
|
+
|
808
|
+
refute File.exist?(plugin_path), 'new version installed without a plugin while older version with a plugin installed, but plugin not removed'
|
809
|
+
end
|
810
|
+
end
|
811
|
+
|
812
|
+
def test_generates_plugins_dir_under_install_dir_if_not_there
|
813
|
+
Gem.use_paths "#{@gemhome}2" # Set GEM_HOME to an uninitialized repo
|
814
|
+
|
815
|
+
@spec = util_spec 'a'
|
816
|
+
|
817
|
+
path = Gem::Package.build @spec
|
818
|
+
|
819
|
+
installer = Gem::Installer.at path, :install_dir => "#{@gemhome}3"
|
820
|
+
assert_equal @spec, installer.install
|
821
|
+
end
|
822
|
+
|
747
823
|
def test_initialize
|
748
824
|
spec = util_spec 'a' do |s|
|
749
825
|
s.platform = Gem::Platform.new 'mswin32'
|
@@ -940,7 +1016,13 @@ gem 'other', version
|
|
940
1016
|
end
|
941
1017
|
|
942
1018
|
def test_install_creates_binstub_that_prefers_user_installed_gem_to_default
|
943
|
-
|
1019
|
+
default_spec = new_default_spec('default', '2', nil, 'exe/executable')
|
1020
|
+
default_spec.executables = 'executable'
|
1021
|
+
install_default_gems default_spec
|
1022
|
+
|
1023
|
+
exe = File.join @gemhome, 'bin', 'executable'
|
1024
|
+
|
1025
|
+
assert_path_exists exe, "default gem's executable not installed"
|
944
1026
|
|
945
1027
|
installer = util_setup_installer do |spec|
|
946
1028
|
spec.name = 'default'
|
@@ -958,8 +1040,6 @@ gem 'other', version
|
|
958
1040
|
end
|
959
1041
|
end
|
960
1042
|
|
961
|
-
exe = File.join @gemhome, 'bin', 'executable'
|
962
|
-
|
963
1043
|
e = assert_raises RuntimeError do
|
964
1044
|
instance_eval File.read(exe)
|
965
1045
|
end
|
@@ -1153,7 +1233,7 @@ gem 'other', version
|
|
1153
1233
|
installer.install
|
1154
1234
|
end
|
1155
1235
|
|
1156
|
-
assert_match %r
|
1236
|
+
assert_match %r{I am a shiny gem!}, @ui.output
|
1157
1237
|
end
|
1158
1238
|
|
1159
1239
|
def test_install_with_skipped_message
|
@@ -1167,7 +1247,7 @@ gem 'other', version
|
|
1167
1247
|
installer.install
|
1168
1248
|
end
|
1169
1249
|
|
1170
|
-
refute_match %r
|
1250
|
+
refute_match %r{I am a shiny gem!}, @ui.output
|
1171
1251
|
end
|
1172
1252
|
|
1173
1253
|
def test_install_extension_dir
|
@@ -1303,7 +1383,7 @@ gem 'other', version
|
|
1303
1383
|
installer.install
|
1304
1384
|
end
|
1305
1385
|
|
1306
|
-
expected = File.join @spec.full_require_paths.find {
|
1386
|
+
expected = File.join @spec.full_require_paths.find {|path|
|
1307
1387
|
File.exist? File.join path, 'b.rb'
|
1308
1388
|
}, 'b.rb'
|
1309
1389
|
assert_equal expected, @spec.matches_for_glob('b.rb').first
|
@@ -1371,7 +1451,7 @@ gem 'other', version
|
|
1371
1451
|
end
|
1372
1452
|
|
1373
1453
|
# empty depend file for no auto dependencies
|
1374
|
-
@spec.files += %W
|
1454
|
+
@spec.files += %W[depend #{@spec.name}.c].each do |file|
|
1375
1455
|
write_file File.join(@tempdir, file)
|
1376
1456
|
end
|
1377
1457
|
|
@@ -1726,9 +1806,9 @@ gem 'other', version
|
|
1726
1806
|
|
1727
1807
|
shebang = installer.shebang 'executable'
|
1728
1808
|
|
1729
|
-
|
1809
|
+
bin_env = get_bin_env
|
1730
1810
|
|
1731
|
-
assert_equal("#!#{
|
1811
|
+
assert_equal("#!#{bin_env} #{RbConfig::CONFIG['ruby_install_name']}",
|
1732
1812
|
shebang)
|
1733
1813
|
end
|
1734
1814
|
|
@@ -1807,10 +1887,18 @@ gem 'other', version
|
|
1807
1887
|
assert_equal "#!test", shebang
|
1808
1888
|
end
|
1809
1889
|
|
1890
|
+
def get_bin_env
|
1891
|
+
if win_platform?
|
1892
|
+
""
|
1893
|
+
else
|
1894
|
+
%w[/usr/bin/env /bin/env].find {|f| File.executable?(f) }
|
1895
|
+
end
|
1896
|
+
end
|
1897
|
+
|
1810
1898
|
def test_shebang_custom_with_expands
|
1811
1899
|
installer = setup_base_installer
|
1812
1900
|
|
1813
|
-
bin_env =
|
1901
|
+
bin_env = get_bin_env
|
1814
1902
|
conf = Gem::ConfigFile.new []
|
1815
1903
|
conf[:custom_shebang] = '1 $env 2 $ruby 3 $exec 4 $name'
|
1816
1904
|
|
@@ -1826,7 +1914,7 @@ gem 'other', version
|
|
1826
1914
|
def test_shebang_custom_with_expands_and_arguments
|
1827
1915
|
installer = setup_base_installer
|
1828
1916
|
|
1829
|
-
bin_env =
|
1917
|
+
bin_env = get_bin_env
|
1830
1918
|
conf = Gem::ConfigFile.new []
|
1831
1919
|
conf[:custom_shebang] = '1 $env 2 $ruby 3 $exec'
|
1832
1920
|
|
@@ -1951,7 +2039,7 @@ gem 'other', version
|
|
1951
2039
|
def test_dir
|
1952
2040
|
installer = setup_base_installer
|
1953
2041
|
|
1954
|
-
assert_match %r
|
2042
|
+
assert_match %r{/gemhome/gems/a-2$}, installer.dir
|
1955
2043
|
end
|
1956
2044
|
|
1957
2045
|
def test_default_gem_loaded_from
|
@@ -1991,7 +2079,13 @@ gem 'other', version
|
|
1991
2079
|
assert_path_exists installed_exec
|
1992
2080
|
|
1993
2081
|
wrapper = File.read installed_exec
|
1994
|
-
|
2082
|
+
|
2083
|
+
if symlink_supported?
|
2084
|
+
refute_match %r{generated by RubyGems}, wrapper
|
2085
|
+
else # when symlink not supported, it warns and fallbacks back to installing wrapper
|
2086
|
+
assert_match %r{Unable to use symlinks, installing wrapper}, @ui.error
|
2087
|
+
assert_match %r{generated by RubyGems}, wrapper
|
2088
|
+
end
|
1995
2089
|
end
|
1996
2090
|
|
1997
2091
|
def test_default_gem_with_wrappers
|
@@ -2011,7 +2105,7 @@ gem 'other', version
|
|
2011
2105
|
assert_path_exists installed_exec
|
2012
2106
|
|
2013
2107
|
wrapper = File.read installed_exec
|
2014
|
-
assert_match %r
|
2108
|
+
assert_match %r{generated by RubyGems}, wrapper
|
2015
2109
|
end
|
2016
2110
|
|
2017
2111
|
def test_default_gem_with_exe_as_bindir
|
@@ -2054,6 +2148,16 @@ gem 'other', version
|
|
2054
2148
|
assert_kind_of(Gem::Package, installer.package)
|
2055
2149
|
end
|
2056
2150
|
|
2151
|
+
def test_gem_attribute
|
2152
|
+
gem = quick_gem 'c' do |spec|
|
2153
|
+
util_make_exec spec, '#!/usr/bin/ruby', 'exe'
|
2154
|
+
end
|
2155
|
+
|
2156
|
+
installer = util_installer(gem, @gemhome)
|
2157
|
+
assert_respond_to(installer, :gem)
|
2158
|
+
assert_kind_of(String, installer.gem)
|
2159
|
+
end
|
2160
|
+
|
2057
2161
|
def old_ruby_required(requirement)
|
2058
2162
|
spec = util_spec 'old_ruby_required', '1' do |s|
|
2059
2163
|
s.required_ruby_version = requirement
|
@@ -2084,7 +2188,7 @@ gem 'other', version
|
|
2084
2188
|
end
|
2085
2189
|
|
2086
2190
|
def mask
|
2087
|
-
0100755
|
2191
|
+
0100755
|
2088
2192
|
end
|
2089
2193
|
|
2090
2194
|
end
|
@@ -1,4 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
3
|
require 'rubygems/package/tar_test_case'
|
@@ -151,7 +150,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
151
150
|
|
152
151
|
FileUtils.mkdir_p 'lib/empty'
|
153
152
|
|
154
|
-
File.open 'lib/code.rb',
|
153
|
+
File.open 'lib/code.rb', 'w' do |io|
|
155
154
|
io.write '# lib/code.rb'
|
156
155
|
end
|
157
156
|
|
@@ -185,7 +184,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
185
184
|
|
186
185
|
FileUtils.mkdir_p 'lib'
|
187
186
|
|
188
|
-
File.open 'lib/code.rb',
|
187
|
+
File.open 'lib/code.rb', 'w' do |io|
|
189
188
|
io.write '# lib/code.rb'
|
190
189
|
end
|
191
190
|
|
@@ -443,7 +442,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
443
442
|
end
|
444
443
|
|
445
444
|
def test_raw_spec
|
446
|
-
data_tgz = util_tar_gz {
|
445
|
+
data_tgz = util_tar_gz {}
|
447
446
|
|
448
447
|
gem = util_tar do |tar|
|
449
448
|
tar.add_file 'data.tar.gz', 0644 do |io|
|
@@ -490,7 +489,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
490
489
|
end
|
491
490
|
|
492
491
|
def test_extract_files_empty
|
493
|
-
data_tgz = util_tar_gz {
|
492
|
+
data_tgz = util_tar_gz {}
|
494
493
|
|
495
494
|
gem = util_tar do |tar|
|
496
495
|
tar.add_file 'data.tar.gz', 0644 do |io|
|
@@ -536,11 +535,11 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
536
535
|
package = Gem::Package.new @gem
|
537
536
|
|
538
537
|
tgz_io = util_tar_gz do |tar|
|
539
|
-
tar.add_file
|
538
|
+
tar.add_file 'relative.rb', 0644 do |io|
|
540
539
|
io.write 'hi'
|
541
540
|
end
|
542
541
|
|
543
|
-
tar.mkdir 'lib',
|
542
|
+
tar.mkdir 'lib', 0755
|
544
543
|
tar.add_symlink 'lib/foo.rb', '../relative.rb', 0644
|
545
544
|
end
|
546
545
|
|
@@ -606,6 +605,8 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
606
605
|
destination_user_subdir = File.join destination_user_dir, 'dir'
|
607
606
|
FileUtils.mkdir_p destination_user_subdir
|
608
607
|
|
608
|
+
skip "TMPDIR seems too long to add it as symlink into tar" if destination_user_dir.size > 90
|
609
|
+
|
609
610
|
tgz_io = util_tar_gz do |tar|
|
610
611
|
tar.add_symlink 'link', destination_user_dir, 16877
|
611
612
|
tar.add_symlink 'link/dir', '.', 16877
|
@@ -635,7 +636,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
635
636
|
tar.add_file 'lib/foo.rb', 0644 do |io|
|
636
637
|
io.write 'hi'
|
637
638
|
end
|
638
|
-
tar.mkdir 'lib/foo',
|
639
|
+
tar.mkdir 'lib/foo', 0755
|
639
640
|
end
|
640
641
|
|
641
642
|
package.extract_tar_gz tgz_io, @destination
|
@@ -929,8 +930,8 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
929
930
|
package.verify
|
930
931
|
end
|
931
932
|
|
932
|
-
assert_match %r
|
933
|
-
assert_match %r
|
933
|
+
assert_match %r{^No such file or directory}, e.message
|
934
|
+
assert_match %r{nonexistent.gem$}, e.message
|
934
935
|
end
|
935
936
|
|
936
937
|
def test_verify_duplicate_file
|
@@ -1018,7 +1019,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
1018
1019
|
bogus_data = Gem::Util.gzip 'hello'
|
1019
1020
|
fake_signer = Class.new do
|
1020
1021
|
def digest_name; 'SHA512'; end
|
1021
|
-
def digest_algorithm; Digest(:SHA512); end
|
1022
|
+
def digest_algorithm; Digest(:SHA512).new; end
|
1022
1023
|
def key; 'key'; end
|
1023
1024
|
def sign(*); 'fake_sig'; end
|
1024
1025
|
end
|
@@ -1097,7 +1098,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
1097
1098
|
$bad_name = vm
|
1098
1099
|
|
1099
1100
|
entry = Object.new
|
1100
|
-
def entry.full_name() $bad_name
|
1101
|
+
def entry.full_name() $bad_name end
|
1101
1102
|
|
1102
1103
|
package = Gem::Package.new(@gem)
|
1103
1104
|
package.instance_variable_set(:@files, [])
|