rubygems-update 2.7.11 → 3.0.9
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/.rubocop.yml +67 -0
- data/.travis.yml +24 -18
- data/CODE_OF_CONDUCT.md +10 -8
- data/CONTRIBUTING.md +148 -0
- data/History.txt +458 -8
- data/MAINTAINERS.txt +1 -0
- data/Manifest.txt +16 -9
- data/POLICIES.md +92 -0
- data/README.md +53 -26
- data/Rakefile +77 -211
- data/{UPGRADING.rdoc → UPGRADING.md} +31 -32
- data/appveyor.yml +20 -45
- data/bin/gem +1 -2
- data/bin/update_rubygems +2 -3
- data/bundler/CHANGELOG.md +65 -0
- data/bundler/bundler.gemspec +7 -1
- data/bundler/lib/bundler/build_metadata.rb +1 -1
- data/bundler/lib/bundler/cli/add.rb +15 -5
- data/bundler/lib/bundler/cli/binstubs.rb +8 -2
- data/bundler/lib/bundler/cli/doctor.rb +47 -1
- data/bundler/lib/bundler/cli/install.rb +8 -5
- data/bundler/lib/bundler/cli/list.rb +41 -5
- data/bundler/lib/bundler/cli/outdated.rb +7 -1
- data/bundler/lib/bundler/cli/pristine.rb +4 -0
- data/bundler/lib/bundler/cli/remove.rb +18 -0
- data/bundler/lib/bundler/cli.rb +63 -21
- data/bundler/lib/bundler/definition.rb +15 -16
- data/bundler/lib/bundler/dependency.rb +2 -2
- data/bundler/lib/bundler/dsl.rb +19 -3
- data/bundler/lib/bundler/feature_flag.rb +7 -0
- data/bundler/lib/bundler/gem_version_promoter.rb +4 -2
- data/bundler/lib/bundler/injector.rb +168 -9
- data/bundler/lib/bundler/installer/parallel_installer.rb +5 -0
- data/bundler/lib/bundler/installer.rb +29 -6
- data/bundler/lib/bundler/plugin/events.rb +61 -0
- data/bundler/lib/bundler/plugin.rb +10 -3
- data/bundler/lib/bundler/resolver.rb +2 -2
- data/bundler/lib/bundler/rubygems_gem_installer.rb +7 -0
- data/bundler/lib/bundler/runtime.rb +8 -2
- data/bundler/lib/bundler/settings/validator.rb +23 -0
- data/bundler/lib/bundler/settings.rb +24 -3
- data/bundler/lib/bundler/shared_helpers.rb +19 -3
- data/bundler/lib/bundler/source/metadata.rb +2 -3
- data/bundler/lib/bundler/source.rb +9 -9
- data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +1 -0
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler.rb +26 -8
- data/bundler/man/bundle-add.ronn +13 -2
- data/bundler/man/bundle-config.ronn +21 -0
- data/bundler/man/bundle-install.ronn +1 -1
- data/bundler/man/bundle-list.ronn +19 -1
- data/bundler/man/bundle-outdated.ronn +4 -0
- data/bundler/man/bundle-remove.ronn +23 -0
- data/bundler/man/bundle-update.ronn +1 -1
- data/bundler/man/bundle.ronn +3 -0
- data/lib/rubygems/available_set.rb +1 -1
- data/lib/rubygems/basic_specification.rb +12 -12
- data/lib/rubygems/bundler_version_finder.rb +3 -3
- data/lib/rubygems/command.rb +22 -15
- data/lib/rubygems/command_manager.rb +22 -5
- data/lib/rubygems/commands/build_command.rb +41 -7
- data/lib/rubygems/commands/cert_command.rb +45 -24
- data/lib/rubygems/commands/check_command.rb +1 -1
- data/lib/rubygems/commands/cleanup_command.rb +14 -7
- data/lib/rubygems/commands/contents_command.rb +14 -15
- data/lib/rubygems/commands/dependency_command.rb +17 -17
- data/lib/rubygems/commands/environment_command.rb +20 -1
- data/lib/rubygems/commands/fetch_command.rb +2 -3
- data/lib/rubygems/commands/generate_index_command.rb +2 -3
- data/lib/rubygems/commands/help_command.rb +12 -13
- data/lib/rubygems/commands/info_command.rb +33 -0
- data/lib/rubygems/commands/install_command.rb +21 -17
- data/lib/rubygems/commands/list_command.rb +0 -1
- data/lib/rubygems/commands/lock_command.rb +3 -4
- data/lib/rubygems/commands/open_command.rb +16 -10
- data/lib/rubygems/commands/owner_command.rb +21 -7
- data/lib/rubygems/commands/pristine_command.rb +23 -16
- data/lib/rubygems/commands/push_command.rb +19 -8
- data/lib/rubygems/commands/query_command.rb +24 -24
- data/lib/rubygems/commands/rdoc_command.rb +3 -4
- data/lib/rubygems/commands/search_command.rb +0 -1
- data/lib/rubygems/commands/server_command.rb +1 -2
- data/lib/rubygems/commands/setup_command.rb +86 -48
- data/lib/rubygems/commands/signin_command.rb +2 -1
- data/lib/rubygems/commands/signout_command.rb +2 -2
- data/lib/rubygems/commands/sources_command.rb +11 -12
- data/lib/rubygems/commands/specification_command.rb +7 -7
- data/lib/rubygems/commands/uninstall_command.rb +50 -18
- data/lib/rubygems/commands/unpack_command.rb +16 -7
- data/lib/rubygems/commands/update_command.rb +28 -23
- data/lib/rubygems/commands/which_command.rb +5 -8
- data/lib/rubygems/commands/yank_command.rb +1 -2
- data/lib/rubygems/compatibility.rb +1 -21
- data/lib/rubygems/config_file.rb +36 -36
- data/lib/rubygems/core_ext/kernel_require.rb +6 -6
- data/lib/rubygems/core_ext/kernel_warn.rb +45 -0
- data/lib/rubygems/defaults.rb +31 -19
- data/lib/rubygems/dependency.rb +15 -15
- data/lib/rubygems/dependency_installer.rb +30 -33
- data/lib/rubygems/dependency_list.rb +9 -10
- data/lib/rubygems/deprecate.rb +2 -3
- data/lib/rubygems/doctor.rb +5 -6
- data/lib/rubygems/errors.rb +3 -3
- data/lib/rubygems/exceptions.rb +11 -8
- data/lib/rubygems/ext/build_error.rb +0 -1
- data/lib/rubygems/ext/builder.rb +50 -23
- data/lib/rubygems/ext/cmake_builder.rb +2 -2
- data/lib/rubygems/ext/configure_builder.rb +2 -3
- data/lib/rubygems/ext/ext_conf_builder.rb +8 -7
- data/lib/rubygems/ext/rake_builder.rb +16 -18
- data/lib/rubygems/ext.rb +0 -1
- data/lib/rubygems/gem_runner.rb +2 -2
- data/lib/rubygems/gemcutter_utilities.rb +46 -12
- data/lib/rubygems/indexer.rb +19 -12
- data/lib/rubygems/install_default_message.rb +0 -1
- data/lib/rubygems/install_message.rb +0 -1
- data/lib/rubygems/install_update_options.rb +3 -29
- data/lib/rubygems/installer.rb +97 -55
- data/lib/rubygems/installer_test_case.rb +2 -16
- data/lib/rubygems/local_remote_options.rb +5 -4
- data/lib/rubygems/mock_gem_ui.rb +3 -4
- data/lib/rubygems/name_tuple.rb +4 -4
- data/lib/rubygems/package/digest_io.rb +3 -4
- data/lib/rubygems/package/file_source.rb +3 -4
- data/lib/rubygems/package/io_source.rb +1 -2
- data/lib/rubygems/package/old.rb +8 -16
- data/lib/rubygems/package/source.rb +0 -1
- data/lib/rubygems/package/tar_header.rb +13 -4
- data/lib/rubygems/package/tar_reader/entry.rb +20 -4
- data/lib/rubygems/package/tar_reader.rb +2 -4
- data/lib/rubygems/package/tar_test_case.rb +2 -8
- data/lib/rubygems/package/tar_writer.rb +13 -15
- data/lib/rubygems/package.rb +90 -63
- data/lib/rubygems/package_task.rb +0 -1
- data/lib/rubygems/path_support.rb +16 -6
- data/lib/rubygems/platform.rb +4 -5
- data/lib/rubygems/psych_tree.rb +1 -1
- data/lib/rubygems/rdoc.rb +2 -313
- data/lib/rubygems/remote_fetcher.rb +29 -82
- data/lib/rubygems/request/connection_pools.rb +24 -13
- data/lib/rubygems/request/http_pool.rb +3 -4
- data/lib/rubygems/request/https_pool.rb +1 -3
- data/lib/rubygems/request.rb +17 -16
- data/lib/rubygems/request_set/gem_dependency_api.rb +46 -49
- data/lib/rubygems/request_set/lockfile/parser.rb +18 -29
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +9 -9
- data/lib/rubygems/request_set/lockfile.rb +12 -12
- data/lib/rubygems/request_set.rb +52 -25
- data/lib/rubygems/requirement.rb +32 -21
- data/lib/rubygems/resolver/activation_request.rb +6 -6
- data/lib/rubygems/resolver/api_set.rb +5 -6
- data/lib/rubygems/resolver/api_specification.rb +2 -3
- data/lib/rubygems/resolver/best_set.rb +5 -6
- data/lib/rubygems/resolver/composed_set.rb +5 -6
- data/lib/rubygems/resolver/conflict.rb +5 -5
- data/lib/rubygems/resolver/current_set.rb +1 -2
- data/lib/rubygems/resolver/dependency_request.rb +4 -4
- data/lib/rubygems/resolver/git_set.rb +5 -6
- data/lib/rubygems/resolver/git_specification.rb +4 -5
- data/lib/rubygems/resolver/index_set.rb +5 -6
- data/lib/rubygems/resolver/index_specification.rb +3 -4
- data/lib/rubygems/resolver/installed_specification.rb +3 -4
- data/lib/rubygems/resolver/installer_set.rb +12 -12
- data/lib/rubygems/resolver/local_specification.rb +1 -2
- data/lib/rubygems/resolver/lock_set.rb +5 -6
- data/lib/rubygems/resolver/lock_specification.rb +7 -8
- data/lib/rubygems/resolver/requirement_list.rb +1 -1
- data/lib/rubygems/resolver/set.rb +2 -2
- data/lib/rubygems/resolver/source_set.rb +4 -5
- data/lib/rubygems/resolver/spec_specification.rb +1 -2
- data/lib/rubygems/resolver/specification.rb +10 -7
- data/lib/rubygems/resolver/stats.rb +1 -1
- data/lib/rubygems/resolver/vendor_set.rb +4 -5
- data/lib/rubygems/resolver/vendor_specification.rb +2 -3
- data/lib/rubygems/resolver.rb +14 -16
- data/lib/rubygems/s3_uri_signer.rb +183 -0
- data/lib/rubygems/safe_yaml.rb +18 -10
- data/lib/rubygems/security/policies.rb +1 -2
- data/lib/rubygems/security/policy.rb +25 -25
- data/lib/rubygems/security/signer.rb +72 -24
- data/lib/rubygems/security/trust_dir.rb +10 -10
- data/lib/rubygems/security.rb +21 -22
- data/lib/rubygems/security_option.rb +0 -1
- data/lib/rubygems/server.rb +21 -21
- data/lib/rubygems/source/git.rb +9 -10
- data/lib/rubygems/source/installed.rb +3 -4
- data/lib/rubygems/source/local.rb +7 -7
- data/lib/rubygems/source/lock.rb +4 -4
- data/lib/rubygems/source/specific_file.rb +5 -5
- data/lib/rubygems/source/vendor.rb +2 -3
- data/lib/rubygems/source.rb +16 -25
- data/lib/rubygems/source_list.rb +2 -2
- data/lib/rubygems/source_local.rb +0 -1
- data/lib/rubygems/spec_fetcher.rb +5 -6
- data/lib/rubygems/specification.rb +219 -558
- data/lib/rubygems/specification_policy.rb +407 -0
- data/lib/rubygems/stub_specification.rb +12 -17
- data/lib/rubygems/test_case.rb +161 -75
- data/lib/rubygems/test_utilities.rb +20 -35
- data/lib/rubygems/text.rb +6 -6
- data/lib/rubygems/uninstaller.rb +38 -27
- data/lib/rubygems/uri_formatter.rb +1 -2
- data/lib/rubygems/user_interaction.rb +37 -89
- data/lib/rubygems/util/licenses.rb +27 -1
- data/lib/rubygems/util/list.rb +1 -1
- data/lib/rubygems/util.rb +32 -14
- data/lib/rubygems/validator.rb +4 -5
- data/lib/rubygems/version.rb +15 -15
- data/lib/rubygems/version_option.rb +2 -3
- data/lib/rubygems.rb +71 -102
- data/rubygems-update.gemspec +43 -0
- data/setup.rb +2 -8
- data/test/rubygems/ca_cert.pem +74 -65
- data/test/rubygems/client.pem +103 -45
- data/test/rubygems/rubygems_plugin.rb +0 -1
- data/test/rubygems/simple_gem.rb +1 -1
- data/test/rubygems/ssl_cert.pem +78 -17
- data/test/rubygems/ssl_key.pem +25 -13
- data/test/rubygems/test_bundled_ca.rb +1 -1
- data/test/rubygems/test_config.rb +7 -2
- data/test/rubygems/test_gem.rb +205 -132
- data/test/rubygems/test_gem_bundler_version_finder.rb +4 -0
- data/test/rubygems/test_gem_command.rb +0 -1
- data/test/rubygems/test_gem_command_manager.rb +18 -3
- data/test/rubygems/test_gem_commands_build_command.rb +220 -15
- data/test/rubygems/test_gem_commands_cert_command.rb +69 -8
- data/test/rubygems/test_gem_commands_check_command.rb +1 -1
- data/test/rubygems/test_gem_commands_cleanup_command.rb +27 -1
- data/test/rubygems/test_gem_commands_contents_command.rb +1 -2
- data/test/rubygems/test_gem_commands_dependency_command.rb +33 -34
- data/test/rubygems/test_gem_commands_environment_command.rb +1 -0
- data/test/rubygems/test_gem_commands_fetch_command.rb +0 -1
- data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -1
- data/test/rubygems/test_gem_commands_help_command.rb +7 -4
- data/test/rubygems/test_gem_commands_info_command.rb +44 -0
- data/test/rubygems/test_gem_commands_install_command.rb +79 -12
- data/test/rubygems/test_gem_commands_lock_command.rb +0 -1
- data/test/rubygems/test_gem_commands_open_command.rb +29 -0
- data/test/rubygems/test_gem_commands_outdated_command.rb +0 -1
- data/test/rubygems/test_gem_commands_owner_command.rb +93 -57
- data/test/rubygems/test_gem_commands_pristine_command.rb +65 -30
- data/test/rubygems/test_gem_commands_push_command.rb +54 -0
- data/test/rubygems/test_gem_commands_query_command.rb +102 -100
- data/test/rubygems/test_gem_commands_search_command.rb +0 -1
- data/test/rubygems/test_gem_commands_server_command.rb +0 -1
- data/test/rubygems/test_gem_commands_setup_command.rb +50 -15
- data/test/rubygems/test_gem_commands_signin_command.rb +1 -1
- data/test/rubygems/test_gem_commands_sources_command.rb +0 -1
- data/test/rubygems/test_gem_commands_specification_command.rb +2 -3
- data/test/rubygems/test_gem_commands_stale_command.rb +3 -2
- data/test/rubygems/test_gem_commands_uninstall_command.rb +161 -8
- data/test/rubygems/test_gem_commands_unpack_command.rb +17 -1
- data/test/rubygems/test_gem_commands_update_command.rb +19 -2
- data/test/rubygems/test_gem_commands_which_command.rb +0 -1
- data/test/rubygems/test_gem_commands_yank_command.rb +0 -1
- data/test/rubygems/test_gem_config_file.rb +4 -2
- data/test/rubygems/test_gem_dependency.rb +0 -1
- data/test/rubygems/test_gem_dependency_installer.rb +8 -5
- data/test/rubygems/test_gem_dependency_list.rb +6 -7
- data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -1
- data/test/rubygems/test_gem_doctor.rb +1 -2
- data/test/rubygems/test_gem_ext_builder.rb +10 -23
- data/test/rubygems/test_gem_ext_cmake_builder.rb +5 -4
- data/test/rubygems/test_gem_ext_configure_builder.rb +3 -3
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +8 -9
- data/test/rubygems/test_gem_ext_rake_builder.rb +20 -5
- data/test/rubygems/test_gem_gem_runner.rb +0 -1
- data/test/rubygems/test_gem_gemcutter_utilities.rb +32 -6
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -1
- data/test/rubygems/test_gem_indexer.rb +16 -10
- data/test/rubygems/test_gem_install_update_options.rb +1 -20
- data/test/rubygems/test_gem_installer.rb +154 -119
- data/test/rubygems/test_gem_local_remote_options.rb +3 -3
- data/test/rubygems/test_gem_name_tuple.rb +0 -1
- data/test/rubygems/test_gem_package.rb +77 -31
- data/test/rubygems/test_gem_package_old.rb +0 -1
- data/test/rubygems/test_gem_package_tar_header.rb +42 -2
- data/test/rubygems/test_gem_package_tar_reader.rb +0 -1
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +11 -0
- data/test/rubygems/test_gem_package_tar_writer.rb +43 -7
- data/test/rubygems/test_gem_package_task.rb +2 -2
- data/test/rubygems/test_gem_path_support.rb +28 -11
- data/test/rubygems/test_gem_platform.rb +4 -5
- data/test/rubygems/test_gem_rdoc.rb +1 -136
- data/test/rubygems/test_gem_remote_fetcher.rb +241 -141
- data/test/rubygems/test_gem_request.rb +9 -9
- data/test/rubygems/test_gem_request_connection_pools.rb +24 -3
- data/test/rubygems/test_gem_request_set.rb +5 -5
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +82 -64
- data/test/rubygems/test_gem_request_set_lockfile.rb +1 -2
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +4 -9
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +1 -1
- data/test/rubygems/test_gem_requirement.rb +24 -4
- data/test/rubygems/test_gem_resolver.rb +13 -17
- data/test/rubygems/test_gem_resolver_activation_request.rb +0 -1
- data/test/rubygems/test_gem_resolver_api_set.rb +0 -1
- data/test/rubygems/test_gem_resolver_api_specification.rb +0 -1
- data/test/rubygems/test_gem_resolver_best_set.rb +0 -1
- data/test/rubygems/test_gem_resolver_composed_set.rb +0 -1
- data/test/rubygems/test_gem_resolver_conflict.rb +0 -1
- data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -1
- data/test/rubygems/test_gem_resolver_git_set.rb +0 -1
- data/test/rubygems/test_gem_resolver_git_specification.rb +0 -1
- data/test/rubygems/test_gem_resolver_index_set.rb +0 -1
- data/test/rubygems/test_gem_resolver_index_specification.rb +0 -1
- data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -1
- data/test/rubygems/test_gem_resolver_installer_set.rb +2 -3
- data/test/rubygems/test_gem_resolver_local_specification.rb +0 -1
- data/test/rubygems/test_gem_resolver_lock_set.rb +0 -1
- data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -1
- data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -1
- data/test/rubygems/test_gem_resolver_specification.rb +1 -2
- data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -1
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -1
- data/test/rubygems/test_gem_security.rb +1 -3
- data/test/rubygems/test_gem_security_policy.rb +5 -6
- data/test/rubygems/test_gem_security_signer.rb +4 -3
- data/test/rubygems/test_gem_security_trust_dir.rb +1 -2
- data/test/rubygems/test_gem_server.rb +4 -4
- data/test/rubygems/test_gem_source.rb +0 -13
- data/test/rubygems/test_gem_source_fetch_problem.rb +0 -1
- data/test/rubygems/test_gem_source_git.rb +0 -1
- data/test/rubygems/test_gem_source_installed.rb +0 -1
- data/test/rubygems/test_gem_source_lock.rb +0 -1
- data/test/rubygems/test_gem_source_vendor.rb +0 -1
- data/test/rubygems/test_gem_spec_fetcher.rb +0 -1
- data/test/rubygems/test_gem_specification.rb +366 -198
- data/test/rubygems/test_gem_stream_ui.rb +15 -32
- data/test/rubygems/test_gem_stub_specification.rb +0 -2
- data/test/rubygems/test_gem_text.rb +4 -0
- data/test/rubygems/test_gem_uninstaller.rb +42 -3
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -1
- data/test/rubygems/test_gem_uri_formatter.rb +0 -1
- data/test/rubygems/test_gem_util.rb +31 -11
- data/test/rubygems/test_gem_validator.rb +0 -1
- data/test/rubygems/test_gem_version.rb +11 -11
- data/test/rubygems/test_gem_version_option.rb +0 -1
- data/test/rubygems/test_remote_fetch_error.rb +0 -1
- data/test/rubygems/test_require.rb +67 -52
- data/util/CL2notes +1 -2
- data/util/ci +20 -12
- data/util/cops/deprecations.rb +52 -0
- data/util/create_certs.rb +6 -7
- data/util/create_certs.sh +27 -0
- data/util/create_encrypted_key.rb +4 -5
- data/util/patch_with_prs.rb +1 -1
- data/util/rubocop +8 -0
- data/util/update_bundled_ca_certificates.rb +12 -13
- data/util/update_changelog.rb +1 -1
- metadata +61 -51
- data/.autotest +0 -71
- data/.document +0 -5
- data/CONTRIBUTING.rdoc +0 -130
- data/CVE-2013-4287.txt +0 -35
- data/CVE-2013-4363.txt +0 -45
- data/CVE-2015-3900.txt +0 -40
- data/POLICIES.rdoc +0 -74
- data/test/rubygems/fix_openssl_warnings.rb +0 -13
data/test/rubygems/test_gem.rb
CHANGED
@@ -5,6 +5,7 @@ require 'rubygems/command'
|
|
5
5
|
require 'rubygems/installer'
|
6
6
|
require 'pathname'
|
7
7
|
require 'tmpdir'
|
8
|
+
require 'rbconfig'
|
8
9
|
|
9
10
|
# TODO: push this up to test_case.rb once battle tested
|
10
11
|
|
@@ -13,8 +14,9 @@ $LOAD_PATH.map! do |path|
|
|
13
14
|
end
|
14
15
|
|
15
16
|
class TestGem < Gem::TestCase
|
17
|
+
RUBY_INSTALL_NAME = RbConfig::CONFIG['RUBY_INSTALL_NAME']
|
16
18
|
|
17
|
-
PLUGINS_LOADED = []
|
19
|
+
PLUGINS_LOADED = [] # rubocop:disable Style/MutableConstant
|
18
20
|
|
19
21
|
def setup
|
20
22
|
super
|
@@ -31,11 +33,11 @@ class TestGem < Gem::TestCase
|
|
31
33
|
|
32
34
|
def test_self_finish_resolve
|
33
35
|
save_loaded_features do
|
34
|
-
a1 =
|
35
|
-
b1 =
|
36
|
-
b2 =
|
37
|
-
c1 =
|
38
|
-
c2 =
|
36
|
+
a1 = util_spec "a", "1", "b" => "> 0"
|
37
|
+
b1 = util_spec "b", "1", "c" => ">= 1"
|
38
|
+
b2 = util_spec "b", "2", "c" => ">= 2"
|
39
|
+
c1 = util_spec "c", "1"
|
40
|
+
c2 = util_spec "c", "2"
|
39
41
|
|
40
42
|
install_specs c1, c2, b1, b2, a1
|
41
43
|
|
@@ -53,13 +55,13 @@ class TestGem < Gem::TestCase
|
|
53
55
|
|
54
56
|
def test_self_finish_resolve_wtf
|
55
57
|
save_loaded_features do
|
56
|
-
a1 =
|
57
|
-
b1 =
|
58
|
-
b2 =
|
59
|
-
c1 =
|
60
|
-
c2 =
|
61
|
-
d1 =
|
62
|
-
d2 =
|
58
|
+
a1 = util_spec "a", "1", "b" => "> 0", "d" => "> 0" # this
|
59
|
+
b1 = util_spec "b", "1", { "c" => ">= 1" }, "lib/b.rb" # this
|
60
|
+
b2 = util_spec "b", "2", { "c" => ">= 2" }, "lib/b.rb"
|
61
|
+
c1 = util_spec "c", "1" # this
|
62
|
+
c2 = util_spec "c", "2"
|
63
|
+
d1 = util_spec "d", "1", { "c" => "< 2" }, "lib/d.rb"
|
64
|
+
d2 = util_spec "d", "2", { "c" => "< 2" }, "lib/d.rb" # this
|
63
65
|
|
64
66
|
install_specs c1, c2, b1, b2, d1, d2, a1
|
65
67
|
|
@@ -77,11 +79,11 @@ class TestGem < Gem::TestCase
|
|
77
79
|
|
78
80
|
def test_self_finish_resolve_respects_loaded_specs
|
79
81
|
save_loaded_features do
|
80
|
-
a1 =
|
81
|
-
b1 =
|
82
|
-
b2 =
|
83
|
-
c1 =
|
84
|
-
c2 =
|
82
|
+
a1 = util_spec "a", "1", "b" => "> 0"
|
83
|
+
b1 = util_spec "b", "1", "c" => ">= 1"
|
84
|
+
b2 = util_spec "b", "2", "c" => ">= 2"
|
85
|
+
c1 = util_spec "c", "1"
|
86
|
+
c2 = util_spec "c", "2"
|
85
87
|
|
86
88
|
install_specs c1, c2, b1, b2, a1
|
87
89
|
|
@@ -130,6 +132,83 @@ class TestGem < Gem::TestCase
|
|
130
132
|
assert_equal %w[a-1], installed.map { |spec| spec.full_name }
|
131
133
|
end
|
132
134
|
|
135
|
+
def test_self_install_permissions
|
136
|
+
assert_self_install_permissions
|
137
|
+
end
|
138
|
+
|
139
|
+
def test_self_install_permissions_umask_0
|
140
|
+
umask = File.umask(0)
|
141
|
+
assert_self_install_permissions
|
142
|
+
ensure
|
143
|
+
File.umask(umask)
|
144
|
+
end
|
145
|
+
|
146
|
+
def test_self_install_permissions_umask_077
|
147
|
+
umask = File.umask(077)
|
148
|
+
assert_self_install_permissions
|
149
|
+
ensure
|
150
|
+
File.umask(umask)
|
151
|
+
end
|
152
|
+
|
153
|
+
def test_self_install_permissions_with_format_executable
|
154
|
+
@format_executable = true
|
155
|
+
assert_self_install_permissions
|
156
|
+
end
|
157
|
+
|
158
|
+
def assert_self_install_permissions
|
159
|
+
mask = win_platform? ? 0700 : 0777
|
160
|
+
options = {
|
161
|
+
:dir_mode => 0500,
|
162
|
+
:prog_mode => 0510,
|
163
|
+
:data_mode => 0640,
|
164
|
+
:wrappers => true,
|
165
|
+
:format_executable => !!(@format_executable if defined?(@format_executable))
|
166
|
+
}
|
167
|
+
Dir.chdir @tempdir do
|
168
|
+
Dir.mkdir 'bin'
|
169
|
+
Dir.mkdir 'data'
|
170
|
+
|
171
|
+
File.write 'bin/foo.cmd', "p\n"
|
172
|
+
File.chmod 0755, 'bin/foo.cmd'
|
173
|
+
|
174
|
+
File.write 'data/foo.txt', "blah\n"
|
175
|
+
|
176
|
+
spec_fetcher do |f|
|
177
|
+
f.gem 'foo', 1 do |s|
|
178
|
+
s.executables = ['foo.cmd']
|
179
|
+
s.files = %w[bin/foo.cmd data/foo.txt]
|
180
|
+
end
|
181
|
+
end
|
182
|
+
Gem.install 'foo', Gem::Requirement.default, options
|
183
|
+
end
|
184
|
+
|
185
|
+
prog_mode = (options[:prog_mode] & mask).to_s(8)
|
186
|
+
dir_mode = (options[:dir_mode] & mask).to_s(8)
|
187
|
+
data_mode = (options[:data_mode] & mask).to_s(8)
|
188
|
+
prog_name = 'foo.cmd'
|
189
|
+
prog_name = RUBY_INSTALL_NAME.sub('ruby', 'foo.cmd') if options[:format_executable]
|
190
|
+
expected = {
|
191
|
+
"bin/#{prog_name}" => prog_mode,
|
192
|
+
'gems/foo-1' => dir_mode,
|
193
|
+
'gems/foo-1/bin' => dir_mode,
|
194
|
+
'gems/foo-1/data' => dir_mode,
|
195
|
+
'gems/foo-1/bin/foo.cmd' => prog_mode,
|
196
|
+
'gems/foo-1/data/foo.txt' => data_mode,
|
197
|
+
}
|
198
|
+
# below is for intermittent errors on Appveyor & Travis 2019-01,
|
199
|
+
# see https://github.com/rubygems/rubygems/pull/2568
|
200
|
+
sleep 0.2
|
201
|
+
result = {}
|
202
|
+
Dir.chdir @gemhome do
|
203
|
+
expected.each_key do |n|
|
204
|
+
result[n] = (File.stat(n).mode & mask).to_s(8)
|
205
|
+
end
|
206
|
+
end
|
207
|
+
assert_equal(expected, result)
|
208
|
+
ensure
|
209
|
+
File.chmod(0755, *Dir.glob(@gemhome+'/gems/**/').map {|path| path.untaint})
|
210
|
+
end
|
211
|
+
|
133
212
|
def test_require_missing
|
134
213
|
save_loaded_features do
|
135
214
|
assert_raises ::LoadError do
|
@@ -140,7 +219,7 @@ class TestGem < Gem::TestCase
|
|
140
219
|
|
141
220
|
def test_require_does_not_glob
|
142
221
|
save_loaded_features do
|
143
|
-
a1 =
|
222
|
+
a1 = util_spec "a", "1", nil, "lib/a1.rb"
|
144
223
|
|
145
224
|
install_specs a1
|
146
225
|
|
@@ -244,6 +323,40 @@ class TestGem < Gem::TestCase
|
|
244
323
|
refute_includes e.message, "can't find gem bundler (>= 0.a) with executable bundle"
|
245
324
|
end
|
246
325
|
|
326
|
+
def test_activate_bin_path_respects_underscore_selection_if_given
|
327
|
+
bundler_latest = util_spec 'bundler', '2.0.1' do |s|
|
328
|
+
s.executables = ['bundle']
|
329
|
+
end
|
330
|
+
|
331
|
+
bundler_previous = util_spec 'bundler', '1.17.3' do |s|
|
332
|
+
s.executables = ['bundle']
|
333
|
+
end
|
334
|
+
|
335
|
+
install_specs bundler_latest, bundler_previous
|
336
|
+
|
337
|
+
File.open("Gemfile.lock", "w") do |f|
|
338
|
+
f.write <<-L.gsub(/ {8}/, "")
|
339
|
+
GEM
|
340
|
+
remote: https://rubygems.org/
|
341
|
+
specs:
|
342
|
+
|
343
|
+
PLATFORMS
|
344
|
+
ruby
|
345
|
+
|
346
|
+
DEPENDENCIES
|
347
|
+
|
348
|
+
BUNDLED WITH
|
349
|
+
2.0.1
|
350
|
+
L
|
351
|
+
end
|
352
|
+
|
353
|
+
File.open("Gemfile", "w") { |f| f.puts('source "https://rubygems.org"') }
|
354
|
+
|
355
|
+
load Gem.activate_bin_path("bundler", "bundle", "= 1.17.3")
|
356
|
+
|
357
|
+
assert_equal %w(bundler-1.17.3), loaded_spec_names
|
358
|
+
end
|
359
|
+
|
247
360
|
def test_self_bin_path_no_exec_name
|
248
361
|
e = assert_raises ArgumentError do
|
249
362
|
Gem.bin_path 'a'
|
@@ -423,7 +536,6 @@ class TestGem < Gem::TestCase
|
|
423
536
|
end
|
424
537
|
|
425
538
|
def test_self_use_gemdeps
|
426
|
-
skip 'Insecure operation - chdir' if RUBY_VERSION <= "1.8.7"
|
427
539
|
rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], '-'
|
428
540
|
|
429
541
|
FileUtils.mkdir_p 'detect/a/b'
|
@@ -466,7 +578,7 @@ class TestGem < Gem::TestCase
|
|
466
578
|
|
467
579
|
Gem.ensure_gem_subdirectories @gemhome, 0750
|
468
580
|
|
469
|
-
|
581
|
+
assert_directory_exists File.join(@gemhome, "cache")
|
470
582
|
|
471
583
|
assert_equal 0750, File::Stat.new(@gemhome).mode & 0777
|
472
584
|
assert_equal 0750, File::Stat.new(File.join(@gemhome, "cache")).mode & 0777
|
@@ -495,10 +607,10 @@ class TestGem < Gem::TestCase
|
|
495
607
|
|
496
608
|
Gem.ensure_gem_subdirectories gemdir
|
497
609
|
|
498
|
-
|
610
|
+
assert_directory_exists util_cache_dir
|
499
611
|
end
|
500
612
|
|
501
|
-
unless win_platform? || Process.uid.zero?
|
613
|
+
unless win_platform? || Process.uid.zero? # only for FS that support write protection
|
502
614
|
def test_self_ensure_gem_directories_write_protected
|
503
615
|
gemdir = File.join @tempdir, "egd"
|
504
616
|
FileUtils.rm_r gemdir rescue nil
|
@@ -577,9 +689,6 @@ class TestGem < Gem::TestCase
|
|
577
689
|
end
|
578
690
|
|
579
691
|
def test_self_find_files_with_gemfile
|
580
|
-
# write_file(File.join Dir.pwd, 'Gemfile') fails on travis 1.8.7 with $SAFE=1
|
581
|
-
skip if RUBY_VERSION <= "1.8.7"
|
582
|
-
|
583
692
|
cwd = File.expand_path("test/rubygems", @@project_dir)
|
584
693
|
actual_load_path = $LOAD_PATH.unshift(cwd).dup
|
585
694
|
|
@@ -612,7 +721,7 @@ class TestGem < Gem::TestCase
|
|
612
721
|
assert_equal expected, Gem.find_files('sff/discover').sort
|
613
722
|
assert_equal expected, Gem.find_files('sff/**.rb').sort, '[ruby-core:31730]'
|
614
723
|
ensure
|
615
|
-
assert_equal cwd, actual_load_path.shift
|
724
|
+
assert_equal cwd, actual_load_path.shift
|
616
725
|
end
|
617
726
|
|
618
727
|
def test_self_find_latest_files
|
@@ -828,7 +937,6 @@ class TestGem < Gem::TestCase
|
|
828
937
|
end
|
829
938
|
|
830
939
|
def test_self_refresh
|
831
|
-
skip 'Insecure operation - mkdir' if RUBY_VERSION <= "1.8.7"
|
832
940
|
util_make_gems
|
833
941
|
|
834
942
|
a1_spec = @a1.spec_file
|
@@ -848,7 +956,6 @@ class TestGem < Gem::TestCase
|
|
848
956
|
end
|
849
957
|
|
850
958
|
def test_self_refresh_keeps_loaded_specs_activated
|
851
|
-
skip 'Insecure operation - mkdir' if RUBY_VERSION <= "1.8.7"
|
852
959
|
util_make_gems
|
853
960
|
|
854
961
|
a1_spec = @a1.spec_file
|
@@ -930,7 +1037,7 @@ class TestGem < Gem::TestCase
|
|
930
1037
|
assert_equal Gem::Requirement.default, Gem.env_requirement('qux')
|
931
1038
|
end
|
932
1039
|
|
933
|
-
def
|
1040
|
+
def test_self_ruby_version_with_patchlevel_less_ancient_rubies
|
934
1041
|
util_set_RUBY_VERSION '1.8.5'
|
935
1042
|
|
936
1043
|
assert_equal Gem::Version.new('1.8.5'), Gem.ruby_version
|
@@ -938,7 +1045,7 @@ class TestGem < Gem::TestCase
|
|
938
1045
|
util_restore_RUBY_VERSION
|
939
1046
|
end
|
940
1047
|
|
941
|
-
def
|
1048
|
+
def test_self_ruby_version_with_release
|
942
1049
|
util_set_RUBY_VERSION '1.8.6', 287
|
943
1050
|
|
944
1051
|
assert_equal Gem::Version.new('1.8.6.287'), Gem.ruby_version
|
@@ -946,10 +1053,34 @@ class TestGem < Gem::TestCase
|
|
946
1053
|
util_restore_RUBY_VERSION
|
947
1054
|
end
|
948
1055
|
|
949
|
-
def
|
950
|
-
util_set_RUBY_VERSION '
|
1056
|
+
def test_self_ruby_version_with_non_mri_implementations
|
1057
|
+
util_set_RUBY_VERSION '2.5.0', 0, 60928, 'jruby 9.2.0.0 (2.5.0) 2018-05-24 81156a8 OpenJDK 64-Bit Server VM 25.171-b11 on 1.8.0_171-8u171-b11-0ubuntu0.16.04.1-b11 [linux-x86_64]'
|
951
1058
|
|
952
|
-
assert_equal Gem::Version.new('
|
1059
|
+
assert_equal Gem::Version.new('2.5.0'), Gem.ruby_version
|
1060
|
+
ensure
|
1061
|
+
util_restore_RUBY_VERSION
|
1062
|
+
end
|
1063
|
+
|
1064
|
+
def test_self_ruby_version_with_prerelease
|
1065
|
+
util_set_RUBY_VERSION '2.6.0', -1, 63539, 'ruby 2.6.0preview2 (2018-05-31 trunk 63539) [x86_64-linux]'
|
1066
|
+
|
1067
|
+
assert_equal Gem::Version.new('2.6.0.preview2'), Gem.ruby_version
|
1068
|
+
ensure
|
1069
|
+
util_restore_RUBY_VERSION
|
1070
|
+
end
|
1071
|
+
|
1072
|
+
def test_self_ruby_version_with_non_mri_implementations_with_mri_prerelase_compatibility
|
1073
|
+
util_set_RUBY_VERSION '2.6.0', -1, 63539, 'weirdjruby 9.2.0.0 (2.6.0preview2) 2018-05-24 81156a8 OpenJDK 64-Bit Server VM 25.171-b11 on 1.8.0_171-8u171-b11-0ubuntu0.16.04.1-b11 [linux-x86_64]', 'weirdjruby', '9.2.0.0'
|
1074
|
+
|
1075
|
+
assert_equal Gem::Version.new('2.6.0.preview2'), Gem.ruby_version
|
1076
|
+
ensure
|
1077
|
+
util_restore_RUBY_VERSION
|
1078
|
+
end
|
1079
|
+
|
1080
|
+
def test_self_ruby_version_with_trunk
|
1081
|
+
util_set_RUBY_VERSION '1.9.2', -1, 23493, 'ruby 1.9.2dev (2009-05-20 trunk 23493) [x86_64-linux]'
|
1082
|
+
|
1083
|
+
assert_equal Gem::Version.new('1.9.2.dev'), Gem.ruby_version
|
953
1084
|
ensure
|
954
1085
|
util_restore_RUBY_VERSION
|
955
1086
|
end
|
@@ -1197,7 +1328,7 @@ class TestGem < Gem::TestCase
|
|
1197
1328
|
end
|
1198
1329
|
|
1199
1330
|
def test_self_user_home
|
1200
|
-
if ENV['HOME']
|
1331
|
+
if ENV['HOME']
|
1201
1332
|
assert_equal ENV['HOME'], Gem.user_home
|
1202
1333
|
else
|
1203
1334
|
assert true, 'count this test'
|
@@ -1223,13 +1354,12 @@ class TestGem < Gem::TestCase
|
|
1223
1354
|
end
|
1224
1355
|
|
1225
1356
|
def test_self_needs_picks_up_unresolved_deps
|
1226
|
-
skip 'loading from unsafe file' if RUBY_VERSION <= "1.8.7"
|
1227
1357
|
save_loaded_features do
|
1228
1358
|
util_clear_gems
|
1229
1359
|
a = util_spec "a", "1"
|
1230
1360
|
b = util_spec "b", "1", "c" => nil
|
1231
1361
|
c = util_spec "c", "2"
|
1232
|
-
d =
|
1362
|
+
d = util_spec "d", "1", {'e' => '= 1'}, "lib/d.rb"
|
1233
1363
|
e = util_spec "e", "1"
|
1234
1364
|
|
1235
1365
|
install_specs a, c, b, e, d
|
@@ -1252,9 +1382,6 @@ class TestGem < Gem::TestCase
|
|
1252
1382
|
output = Gem::Util.gunzip input
|
1253
1383
|
|
1254
1384
|
assert_equal 'hello', output
|
1255
|
-
|
1256
|
-
return unless Object.const_defined? :Encoding
|
1257
|
-
|
1258
1385
|
assert_equal Encoding::BINARY, output.encoding
|
1259
1386
|
end
|
1260
1387
|
|
@@ -1266,55 +1393,9 @@ class TestGem < Gem::TestCase
|
|
1266
1393
|
zipped = StringIO.new output
|
1267
1394
|
|
1268
1395
|
assert_equal 'hello', Zlib::GzipReader.new(zipped).read
|
1269
|
-
|
1270
|
-
return unless Object.const_defined? :Encoding
|
1271
|
-
|
1272
1396
|
assert_equal Encoding::BINARY, output.encoding
|
1273
1397
|
end
|
1274
1398
|
|
1275
|
-
if Gem.win_platform? && '1.9' > RUBY_VERSION
|
1276
|
-
# Ruby 1.9 properly handles ~ path expansion, so no need to run such tests.
|
1277
|
-
def test_self_user_home_userprofile
|
1278
|
-
|
1279
|
-
Gem.clear_paths
|
1280
|
-
|
1281
|
-
# safe-keep env variables
|
1282
|
-
orig_home, orig_user_profile = ENV['HOME'], ENV['USERPROFILE']
|
1283
|
-
|
1284
|
-
# prepare for the test
|
1285
|
-
ENV.delete('HOME')
|
1286
|
-
ENV['USERPROFILE'] = "W:\\Users\\RubyUser"
|
1287
|
-
|
1288
|
-
assert_equal 'W:/Users/RubyUser', Gem.user_home
|
1289
|
-
|
1290
|
-
ensure
|
1291
|
-
ENV['HOME'] = orig_home
|
1292
|
-
ENV['USERPROFILE'] = orig_user_profile
|
1293
|
-
end
|
1294
|
-
|
1295
|
-
def test_self_user_home_user_drive_and_path
|
1296
|
-
Gem.clear_paths
|
1297
|
-
|
1298
|
-
# safe-keep env variables
|
1299
|
-
orig_home, orig_user_profile = ENV['HOME'], ENV['USERPROFILE']
|
1300
|
-
orig_home_drive, orig_home_path = ENV['HOMEDRIVE'], ENV['HOMEPATH']
|
1301
|
-
|
1302
|
-
# prepare the environment
|
1303
|
-
ENV.delete('HOME')
|
1304
|
-
ENV.delete('USERPROFILE')
|
1305
|
-
ENV['HOMEDRIVE'] = 'Z:'
|
1306
|
-
ENV['HOMEPATH'] = "\\Users\\RubyUser"
|
1307
|
-
|
1308
|
-
assert_equal 'Z:/Users/RubyUser', Gem.user_home
|
1309
|
-
|
1310
|
-
ensure
|
1311
|
-
ENV['HOME'] = orig_home
|
1312
|
-
ENV['USERPROFILE'] = orig_user_profile
|
1313
|
-
ENV['HOMEDRIVE'] = orig_home_drive
|
1314
|
-
ENV['HOMEPATH'] = orig_home_path
|
1315
|
-
end
|
1316
|
-
end
|
1317
|
-
|
1318
1399
|
def test_self_vendor_dir
|
1319
1400
|
expected =
|
1320
1401
|
File.join RbConfig::CONFIG['vendordir'], 'gems',
|
@@ -1340,7 +1421,6 @@ class TestGem < Gem::TestCase
|
|
1340
1421
|
end
|
1341
1422
|
|
1342
1423
|
def test_load_plugins
|
1343
|
-
skip 'Insecure operation - chdir' if RUBY_VERSION <= "1.8.7"
|
1344
1424
|
plugin_path = File.join "lib", "rubygems_plugin.rb"
|
1345
1425
|
|
1346
1426
|
Dir.chdir @tempdir do
|
@@ -1395,8 +1475,8 @@ class TestGem < Gem::TestCase
|
|
1395
1475
|
write_file File.join(@tempdir, 'lib', "g.rb") { |fp| fp.puts "" }
|
1396
1476
|
write_file File.join(@tempdir, 'lib', 'm.rb') { |fp| fp.puts "" }
|
1397
1477
|
|
1398
|
-
g =
|
1399
|
-
m =
|
1478
|
+
g = util_spec 'g', '1', nil, "lib/g.rb"
|
1479
|
+
m = util_spec 'm', '1', nil, "lib/m.rb"
|
1400
1480
|
|
1401
1481
|
install_gem g, :install_dir => Gem.dir
|
1402
1482
|
m0 = install_gem m, :install_dir => Gem.dir
|
@@ -1451,8 +1531,8 @@ class TestGem < Gem::TestCase
|
|
1451
1531
|
write_file File.join(@tempdir, 'lib', "g.rb") { |fp| fp.puts "" }
|
1452
1532
|
write_file File.join(@tempdir, 'lib', 'm.rb') { |fp| fp.puts "" }
|
1453
1533
|
|
1454
|
-
g =
|
1455
|
-
m =
|
1534
|
+
g = util_spec 'g', '1', nil, "lib/g.rb"
|
1535
|
+
m = util_spec 'm', '1', nil, "lib/m.rb"
|
1456
1536
|
|
1457
1537
|
install_gem g, :install_dir => Gem.dir
|
1458
1538
|
install_gem m, :install_dir => Gem.dir
|
@@ -1469,9 +1549,9 @@ class TestGem < Gem::TestCase
|
|
1469
1549
|
def test_auto_activation_of_specific_gemdeps_file
|
1470
1550
|
util_clear_gems
|
1471
1551
|
|
1472
|
-
a =
|
1473
|
-
b =
|
1474
|
-
c =
|
1552
|
+
a = util_spec "a", "1", nil, "lib/a.rb"
|
1553
|
+
b = util_spec "b", "1", nil, "lib/b.rb"
|
1554
|
+
c = util_spec "c", "1", nil, "lib/c.rb"
|
1475
1555
|
|
1476
1556
|
install_specs a, b, c
|
1477
1557
|
|
@@ -1491,12 +1571,11 @@ class TestGem < Gem::TestCase
|
|
1491
1571
|
end
|
1492
1572
|
|
1493
1573
|
def test_auto_activation_of_used_gemdeps_file
|
1494
|
-
skip 'Insecure operation - chdir' if RUBY_VERSION <= "1.8.7"
|
1495
1574
|
util_clear_gems
|
1496
1575
|
|
1497
|
-
a =
|
1498
|
-
b =
|
1499
|
-
c =
|
1576
|
+
a = util_spec "a", "1", nil, "lib/a.rb"
|
1577
|
+
b = util_spec "b", "1", nil, "lib/b.rb"
|
1578
|
+
c = util_spec "c", "1", nil, "lib/c.rb"
|
1500
1579
|
|
1501
1580
|
install_specs a, b, c
|
1502
1581
|
|
@@ -1518,7 +1597,7 @@ class TestGem < Gem::TestCase
|
|
1518
1597
|
|
1519
1598
|
if Gem::USE_BUNDLER_FOR_GEMDEPS
|
1520
1599
|
BUNDLER_LIB_PATH = File.expand_path $LOAD_PATH.find {|lp| File.file?(File.join(lp, "bundler.rb")) }.dup.untaint
|
1521
|
-
BUNDLER_FULL_NAME = "bundler-#{Bundler::VERSION}"
|
1600
|
+
BUNDLER_FULL_NAME = "bundler-#{Bundler::VERSION}".freeze
|
1522
1601
|
end
|
1523
1602
|
|
1524
1603
|
def add_bundler_full_name(names)
|
@@ -1531,9 +1610,9 @@ class TestGem < Gem::TestCase
|
|
1531
1610
|
def test_looks_for_gemdeps_files_automatically_on_start
|
1532
1611
|
util_clear_gems
|
1533
1612
|
|
1534
|
-
a =
|
1535
|
-
b =
|
1536
|
-
c =
|
1613
|
+
a = util_spec "a", "1", nil, "lib/a.rb"
|
1614
|
+
b = util_spec "b", "1", nil, "lib/b.rb"
|
1615
|
+
c = util_spec "c", "1", nil, "lib/c.rb"
|
1537
1616
|
|
1538
1617
|
install_specs a, b, c
|
1539
1618
|
|
@@ -1548,12 +1627,7 @@ class TestGem < Gem::TestCase
|
|
1548
1627
|
path = File.join @tempdir, "gem.deps.rb"
|
1549
1628
|
cmd = [Gem.ruby.dup.untaint, "-I#{LIB_PATH.untaint}",
|
1550
1629
|
"-I#{BUNDLER_LIB_PATH.untaint}", "-rrubygems"]
|
1551
|
-
|
1552
|
-
cmd << "-e 'puts Gem.loaded_specs.values.map(&:full_name).sort'"
|
1553
|
-
cmd = cmd.join(' ')
|
1554
|
-
else
|
1555
|
-
cmd << "-eputs Gem.loaded_specs.values.map(&:full_name).sort"
|
1556
|
-
end
|
1630
|
+
cmd << "-eputs Gem.loaded_specs.values.map(&:full_name).sort"
|
1557
1631
|
|
1558
1632
|
File.open path, "w" do |f|
|
1559
1633
|
f.puts "gem 'a'"
|
@@ -1572,9 +1646,9 @@ class TestGem < Gem::TestCase
|
|
1572
1646
|
def test_looks_for_gemdeps_files_automatically_on_start_in_parent_dir
|
1573
1647
|
util_clear_gems
|
1574
1648
|
|
1575
|
-
a =
|
1576
|
-
b =
|
1577
|
-
c =
|
1649
|
+
a = util_spec "a", "1", nil, "lib/a.rb"
|
1650
|
+
b = util_spec "b", "1", nil, "lib/b.rb"
|
1651
|
+
c = util_spec "c", "1", nil, "lib/c.rb"
|
1578
1652
|
|
1579
1653
|
install_specs a, b, c
|
1580
1654
|
|
@@ -1591,12 +1665,7 @@ class TestGem < Gem::TestCase
|
|
1591
1665
|
path = File.join @tempdir, "gem.deps.rb"
|
1592
1666
|
cmd = [Gem.ruby.dup.untaint, "-Csub1", "-I#{LIB_PATH.untaint}",
|
1593
1667
|
"-I#{BUNDLER_LIB_PATH.untaint}", "-rrubygems"]
|
1594
|
-
|
1595
|
-
cmd << "-e 'puts Gem.loaded_specs.values.map(&:full_name).sort'"
|
1596
|
-
cmd = cmd.join(' ')
|
1597
|
-
else
|
1598
|
-
cmd << "-eputs Gem.loaded_specs.values.map(&:full_name).sort"
|
1599
|
-
end
|
1668
|
+
cmd << "-eputs Gem.loaded_specs.values.map(&:full_name).sort"
|
1600
1669
|
|
1601
1670
|
File.open path, "w" do |f|
|
1602
1671
|
f.puts "gem 'a'"
|
@@ -1644,7 +1713,7 @@ class TestGem < Gem::TestCase
|
|
1644
1713
|
|
1645
1714
|
def test_default_gems_use_full_paths
|
1646
1715
|
begin
|
1647
|
-
if defined?(RUBY_ENGINE)
|
1716
|
+
if defined?(RUBY_ENGINE)
|
1648
1717
|
engine = RUBY_ENGINE
|
1649
1718
|
Object.send :remove_const, :RUBY_ENGINE
|
1650
1719
|
end
|
@@ -1657,7 +1726,7 @@ class TestGem < Gem::TestCase
|
|
1657
1726
|
end
|
1658
1727
|
|
1659
1728
|
begin
|
1660
|
-
if defined?(RUBY_ENGINE)
|
1729
|
+
if defined?(RUBY_ENGINE)
|
1661
1730
|
engine = RUBY_ENGINE
|
1662
1731
|
Object.send :remove_const, :RUBY_ENGINE
|
1663
1732
|
end
|
@@ -1731,7 +1800,6 @@ class TestGem < Gem::TestCase
|
|
1731
1800
|
end
|
1732
1801
|
|
1733
1802
|
def test_use_gemdeps_automatic
|
1734
|
-
skip 'Insecure operation - chdir' if RUBY_VERSION <= "1.8.7"
|
1735
1803
|
rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], '-'
|
1736
1804
|
|
1737
1805
|
spec = util_spec 'a', 1
|
@@ -1752,7 +1820,6 @@ class TestGem < Gem::TestCase
|
|
1752
1820
|
end
|
1753
1821
|
|
1754
1822
|
def test_use_gemdeps_automatic_missing
|
1755
|
-
skip 'Insecure operation - chdir' if RUBY_VERSION <= "1.8.7"
|
1756
1823
|
rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], '-'
|
1757
1824
|
|
1758
1825
|
Gem.use_gemdeps
|
@@ -1781,7 +1848,6 @@ class TestGem < Gem::TestCase
|
|
1781
1848
|
end
|
1782
1849
|
|
1783
1850
|
def test_use_gemdeps_missing_gem
|
1784
|
-
skip 'Insecure operation - read' if RUBY_VERSION <= "1.8.7"
|
1785
1851
|
rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], 'x'
|
1786
1852
|
|
1787
1853
|
File.open 'x', 'w' do |io|
|
@@ -1794,19 +1860,20 @@ class TestGem < Gem::TestCase
|
|
1794
1860
|
else
|
1795
1861
|
platform = " #{platform}"
|
1796
1862
|
end
|
1797
|
-
expected =
|
1798
|
-
|
1863
|
+
expected =
|
1864
|
+
if Gem::USE_BUNDLER_FOR_GEMDEPS
|
1865
|
+
<<-EXPECTED
|
1799
1866
|
Could not find gem 'a#{platform}' in any of the gem sources listed in your Gemfile.
|
1800
1867
|
You may need to `gem install -g` to install missing gems
|
1801
1868
|
|
1802
|
-
|
1803
|
-
|
1804
|
-
|
1869
|
+
EXPECTED
|
1870
|
+
else
|
1871
|
+
<<-EXPECTED
|
1805
1872
|
Unable to resolve dependency: user requested 'a (>= 0)'
|
1806
1873
|
You may need to `gem install -g` to install missing gems
|
1807
1874
|
|
1808
|
-
|
1809
|
-
|
1875
|
+
EXPECTED
|
1876
|
+
end
|
1810
1877
|
|
1811
1878
|
assert_output nil, expected do
|
1812
1879
|
Gem.use_gemdeps
|
@@ -1816,7 +1883,6 @@ You may need to `gem install -g` to install missing gems
|
|
1816
1883
|
end if Gem::USE_BUNDLER_FOR_GEMDEPS
|
1817
1884
|
|
1818
1885
|
def test_use_gemdeps_specific
|
1819
|
-
skip 'Insecure operation - read' if RUBY_VERSION <= "1.8.7"
|
1820
1886
|
rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], 'x'
|
1821
1887
|
|
1822
1888
|
spec = util_spec 'a', 1
|
@@ -1836,6 +1902,13 @@ You may need to `gem install -g` to install missing gems
|
|
1836
1902
|
ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
|
1837
1903
|
end
|
1838
1904
|
|
1905
|
+
def test_operating_system_defaults
|
1906
|
+
operating_system_defaults = Gem.operating_system_defaults
|
1907
|
+
|
1908
|
+
assert operating_system_defaults != nil
|
1909
|
+
assert operating_system_defaults.is_a? Hash
|
1910
|
+
end
|
1911
|
+
|
1839
1912
|
def test_platform_defaults
|
1840
1913
|
platform_defaults = Gem.platform_defaults
|
1841
1914
|
|
@@ -1843,13 +1916,13 @@ You may need to `gem install -g` to install missing gems
|
|
1843
1916
|
assert platform_defaults.is_a? Hash
|
1844
1917
|
end
|
1845
1918
|
|
1846
|
-
def ruby_install_name
|
1919
|
+
def ruby_install_name(name)
|
1847
1920
|
orig_RUBY_INSTALL_NAME = RbConfig::CONFIG['ruby_install_name']
|
1848
1921
|
RbConfig::CONFIG['ruby_install_name'] = name
|
1849
1922
|
|
1850
1923
|
yield
|
1851
1924
|
ensure
|
1852
|
-
if orig_RUBY_INSTALL_NAME
|
1925
|
+
if orig_RUBY_INSTALL_NAME
|
1853
1926
|
RbConfig::CONFIG['ruby_install_name'] = orig_RUBY_INSTALL_NAME
|
1854
1927
|
else
|
1855
1928
|
RbConfig::CONFIG.delete 'ruby_install_name'
|
@@ -3,6 +3,8 @@ require 'rubygems/test_case'
|
|
3
3
|
|
4
4
|
class TestGemBundlerVersionFinder < Gem::TestCase
|
5
5
|
def setup
|
6
|
+
super
|
7
|
+
|
6
8
|
@argv = ARGV.dup
|
7
9
|
@env = ENV.to_hash.clone
|
8
10
|
ENV.delete("BUNDLER_VERSION")
|
@@ -13,6 +15,8 @@ class TestGemBundlerVersionFinder < Gem::TestCase
|
|
13
15
|
ARGV.replace @argv
|
14
16
|
ENV.replace @env
|
15
17
|
$0 = @dollar_0
|
18
|
+
|
19
|
+
super
|
16
20
|
end
|
17
21
|
|
18
22
|
def bvf
|