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
@@ -4,6 +4,7 @@ require 'rubygems/user_interaction'
|
|
4
4
|
require 'timeout'
|
5
5
|
|
6
6
|
class TestGemStreamUI < Gem::TestCase
|
7
|
+
SHORT_TIMEOUT = (defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled?) ? 1.0 : 0.1 # increase timeout with MJIT for --jit-wait testing
|
7
8
|
|
8
9
|
module IsTty
|
9
10
|
attr_accessor :tty
|
@@ -36,10 +37,7 @@ class TestGemStreamUI < Gem::TestCase
|
|
36
37
|
end
|
37
38
|
|
38
39
|
def test_ask
|
39
|
-
|
40
|
-
Gem.win_platform? && RUBY_VERSION <= '1.9.2'
|
41
|
-
|
42
|
-
Timeout.timeout(1) do
|
40
|
+
Timeout.timeout(5) do
|
43
41
|
expected_answer = "Arthur, King of the Britons"
|
44
42
|
@in.string = "#{expected_answer}\n"
|
45
43
|
actual_answer = @sui.ask("What is your name?")
|
@@ -48,22 +46,16 @@ class TestGemStreamUI < Gem::TestCase
|
|
48
46
|
end
|
49
47
|
|
50
48
|
def test_ask_no_tty
|
51
|
-
skip 'TTY detection broken on windows' if
|
52
|
-
Gem.win_platform? && RUBY_VERSION <= '1.9.2'
|
53
|
-
|
54
49
|
@in.tty = false
|
55
50
|
|
56
|
-
Timeout.timeout(
|
51
|
+
Timeout.timeout(SHORT_TIMEOUT) do
|
57
52
|
answer = @sui.ask("what is your favorite color?")
|
58
53
|
assert_nil answer
|
59
54
|
end
|
60
55
|
end
|
61
56
|
|
62
57
|
def test_ask_for_password
|
63
|
-
|
64
|
-
Gem.win_platform? && RUBY_VERSION <= '1.9.2'
|
65
|
-
|
66
|
-
Timeout.timeout(1) do
|
58
|
+
Timeout.timeout(5) do
|
67
59
|
expected_answer = "Arthur, King of the Britons"
|
68
60
|
@in.string = "#{expected_answer}\n"
|
69
61
|
actual_answer = @sui.ask_for_password("What is your name?")
|
@@ -72,24 +64,18 @@ class TestGemStreamUI < Gem::TestCase
|
|
72
64
|
end
|
73
65
|
|
74
66
|
def test_ask_for_password_no_tty
|
75
|
-
skip 'TTY handling is broken on windows' if
|
76
|
-
Gem.win_platform? && RUBY_VERSION <= '1.9.2'
|
77
|
-
|
78
67
|
@in.tty = false
|
79
68
|
|
80
|
-
Timeout.timeout(
|
69
|
+
Timeout.timeout(SHORT_TIMEOUT) do
|
81
70
|
answer = @sui.ask_for_password("what is the airspeed velocity of an unladen swallow?")
|
82
71
|
assert_nil answer
|
83
72
|
end
|
84
73
|
end
|
85
74
|
|
86
75
|
def test_ask_yes_no_no_tty_with_default
|
87
|
-
skip 'TTY handling is broken on windows' if
|
88
|
-
Gem.win_platform? && RUBY_VERSION <= '1.9.2'
|
89
|
-
|
90
76
|
@in.tty = false
|
91
77
|
|
92
|
-
Timeout.timeout(
|
78
|
+
Timeout.timeout(SHORT_TIMEOUT) do
|
93
79
|
answer = @sui.ask_yes_no("do coconuts migrate?", false)
|
94
80
|
assert_equal false, answer
|
95
81
|
|
@@ -99,12 +85,9 @@ class TestGemStreamUI < Gem::TestCase
|
|
99
85
|
end
|
100
86
|
|
101
87
|
def test_ask_yes_no_no_tty_without_default
|
102
|
-
skip 'TTY handling is broken on windows' if
|
103
|
-
Gem.win_platform? && RUBY_VERSION <= '1.9.2'
|
104
|
-
|
105
88
|
@in.tty = false
|
106
89
|
|
107
|
-
Timeout.timeout(
|
90
|
+
Timeout.timeout(SHORT_TIMEOUT) do
|
108
91
|
assert_raises(Gem::OperationNotSupportedError) do
|
109
92
|
@sui.ask_yes_no("do coconuts migrate?")
|
110
93
|
end
|
@@ -174,14 +157,14 @@ class TestGemStreamUI < Gem::TestCase
|
|
174
157
|
def test_download_reporter_anything
|
175
158
|
@cfg.verbose = 0
|
176
159
|
reporter = @sui.download_reporter
|
177
|
-
assert_kind_of Gem::StreamUI::
|
160
|
+
assert_kind_of Gem::StreamUI::ThreadedDownloadReporter, reporter
|
178
161
|
end
|
179
162
|
|
180
|
-
def
|
163
|
+
def test_threaded_download_reporter
|
181
164
|
@cfg.verbose = true
|
182
165
|
reporter = @sui.download_reporter
|
183
166
|
reporter.fetch 'a.gem', 1024
|
184
|
-
assert_equal "Fetching
|
167
|
+
assert_equal "Fetching a.gem\n", @out.string
|
185
168
|
end
|
186
169
|
|
187
170
|
def test_verbose_download_reporter_progress
|
@@ -189,7 +172,7 @@ class TestGemStreamUI < Gem::TestCase
|
|
189
172
|
reporter = @sui.download_reporter
|
190
173
|
reporter.fetch 'a.gem', 1024
|
191
174
|
reporter.update 512
|
192
|
-
assert_equal "Fetching
|
175
|
+
assert_equal "Fetching a.gem\n", @out.string
|
193
176
|
end
|
194
177
|
|
195
178
|
def test_verbose_download_reporter_progress_once
|
@@ -198,7 +181,7 @@ class TestGemStreamUI < Gem::TestCase
|
|
198
181
|
reporter.fetch 'a.gem', 1024
|
199
182
|
reporter.update 510
|
200
183
|
reporter.update 512
|
201
|
-
assert_equal "Fetching
|
184
|
+
assert_equal "Fetching a.gem\n", @out.string
|
202
185
|
end
|
203
186
|
|
204
187
|
def test_verbose_download_reporter_progress_complete
|
@@ -207,7 +190,7 @@ class TestGemStreamUI < Gem::TestCase
|
|
207
190
|
reporter.fetch 'a.gem', 1024
|
208
191
|
reporter.update 510
|
209
192
|
reporter.done
|
210
|
-
assert_equal "Fetching
|
193
|
+
assert_equal "Fetching a.gem\n", @out.string
|
211
194
|
end
|
212
195
|
|
213
196
|
def test_verbose_download_reporter_progress_nil_length
|
@@ -216,7 +199,7 @@ class TestGemStreamUI < Gem::TestCase
|
|
216
199
|
reporter.fetch 'a.gem', nil
|
217
200
|
reporter.update 1024
|
218
201
|
reporter.done
|
219
|
-
assert_equal "Fetching
|
202
|
+
assert_equal "Fetching a.gem\n", @out.string
|
220
203
|
end
|
221
204
|
|
222
205
|
def test_verbose_download_reporter_progress_zero_length
|
@@ -225,7 +208,7 @@ class TestGemStreamUI < Gem::TestCase
|
|
225
208
|
reporter.fetch 'a.gem', 0
|
226
209
|
reporter.update 1024
|
227
210
|
reporter.done
|
228
|
-
assert_equal "Fetching
|
211
|
+
assert_equal "Fetching a.gem\n", @out.string
|
229
212
|
end
|
230
213
|
|
231
214
|
def test_verbose_download_reporter_no_tty
|
@@ -21,6 +21,10 @@ class TestGemText < Gem::TestCase
|
|
21
21
|
assert_equal " text to wrap", format_text("text to wrap", 40, 2)
|
22
22
|
end
|
23
23
|
|
24
|
+
def test_format_text_no_space
|
25
|
+
assert_equal "texttowr\nap", format_text("texttowrap", 8)
|
26
|
+
end
|
27
|
+
|
24
28
|
def test_format_text_trailing # for two spaces after .
|
25
29
|
text = <<-TEXT
|
26
30
|
This line is really, really long. So long, in fact, that it is more than eighty characters long! The purpose of this line is for testing wrapping behavior because sometimes people don't wrap their text to eighty characters. Without the wrapping, the text might not look good in the RSS feed.
|
@@ -22,9 +22,10 @@ class TestGemUninstaller < Gem::InstallerTestCase
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def test_initialize_expand_path
|
25
|
-
|
25
|
+
FileUtils.mkdir_p 'foo/bar'
|
26
|
+
uninstaller = Gem::Uninstaller.new nil, :install_dir => 'foo//bar'
|
26
27
|
|
27
|
-
assert_match %r
|
28
|
+
assert_match %r|foo/bar$|, uninstaller.instance_variable_get(:@gem_home)
|
28
29
|
end
|
29
30
|
|
30
31
|
def test_ask_if_ok
|
@@ -133,6 +134,7 @@ class TestGemUninstaller < Gem::InstallerTestCase
|
|
133
134
|
end
|
134
135
|
|
135
136
|
def test_remove_not_in_home
|
137
|
+
Dir.mkdir "#{@gemhome}2"
|
136
138
|
uninstaller = Gem::Uninstaller.new nil, :install_dir => "#{@gemhome}2"
|
137
139
|
|
138
140
|
e = assert_raises Gem::GemNotInHomeException do
|
@@ -149,6 +151,22 @@ class TestGemUninstaller < Gem::InstallerTestCase
|
|
149
151
|
assert_path_exists @spec.gem_dir
|
150
152
|
end
|
151
153
|
|
154
|
+
def test_remove_symlinked_gem_home
|
155
|
+
Dir.mktmpdir("gem_home") do |dir|
|
156
|
+
symlinked_gem_home = "#{dir}/#{File.basename(@gemhome)}"
|
157
|
+
|
158
|
+
FileUtils.ln_s(@gemhome, dir)
|
159
|
+
|
160
|
+
uninstaller = Gem::Uninstaller.new nil, :install_dir => symlinked_gem_home
|
161
|
+
|
162
|
+
use_ui ui do
|
163
|
+
uninstaller.remove @spec
|
164
|
+
end
|
165
|
+
|
166
|
+
refute_path_exists @spec.gem_dir
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
152
170
|
def test_path_ok_eh
|
153
171
|
uninstaller = Gem::Uninstaller.new nil
|
154
172
|
|
@@ -177,10 +195,12 @@ class TestGemUninstaller < Gem::InstallerTestCase
|
|
177
195
|
gem_dir = File.join @gemhome, 'gems', @spec.full_name
|
178
196
|
|
179
197
|
Gem.pre_uninstall do
|
198
|
+
sleep(0.1) if win_platform?
|
180
199
|
assert File.exist?(gem_dir), 'gem_dir should exist'
|
181
200
|
end
|
182
201
|
|
183
202
|
Gem.post_uninstall do
|
203
|
+
sleep(0.1) if win_platform?
|
184
204
|
refute File.exist?(gem_dir), 'gem_dir should not exist'
|
185
205
|
end
|
186
206
|
|
@@ -212,7 +232,7 @@ class TestGemUninstaller < Gem::InstallerTestCase
|
|
212
232
|
default_spec = new_default_spec 'default', '2'
|
213
233
|
install_default_gems default_spec
|
214
234
|
|
215
|
-
spec =
|
235
|
+
spec = util_spec 'default', '2'
|
216
236
|
install_gem spec
|
217
237
|
|
218
238
|
Gem::Specification.reset
|
@@ -311,6 +331,7 @@ create_makefile '#{@spec.name}'
|
|
311
331
|
end
|
312
332
|
|
313
333
|
def test_uninstall_wrong_repo
|
334
|
+
Dir.mkdir "#{@gemhome}2"
|
314
335
|
Gem.use_paths "#{@gemhome}2", [@gemhome]
|
315
336
|
|
316
337
|
uninstaller = Gem::Uninstaller.new @spec.name, :executables => true
|
@@ -482,4 +503,22 @@ create_makefile '#{@spec.name}'
|
|
482
503
|
assert_match %r!r-1 depends on q \(= 1, development\)!, lines.shift
|
483
504
|
assert_match %r!Successfully uninstalled q-1!, lines.last
|
484
505
|
end
|
506
|
+
|
507
|
+
def test_uninstall_no_permission
|
508
|
+
uninstaller = Gem::Uninstaller.new @spec.name, :executables => true
|
509
|
+
|
510
|
+
stub_rm_r = lambda do |*args|
|
511
|
+
_path = args.shift
|
512
|
+
options = args.shift || Hash.new
|
513
|
+
# Uninstaller calls a method in RDoc which also calls FileUtils.rm_rf which
|
514
|
+
# is an alias for FileUtils#rm_r, so skip if we're using the force option
|
515
|
+
raise Errno::EPERM unless options[:force]
|
516
|
+
end
|
517
|
+
|
518
|
+
FileUtils.stub :rm_r, stub_rm_r do
|
519
|
+
assert_raises Gem::UninstallError do
|
520
|
+
uninstaller.uninstall
|
521
|
+
end
|
522
|
+
end
|
523
|
+
end
|
485
524
|
end
|
@@ -5,8 +5,7 @@ require 'rubygems/util'
|
|
5
5
|
class TestGemUtil < Gem::TestCase
|
6
6
|
|
7
7
|
def test_class_popen
|
8
|
-
|
9
|
-
assert_equal "0\n", Gem::Util.popen(Gem.ruby, '-e', 'p 0')
|
8
|
+
assert_equal "0\n", Gem::Util.popen(Gem.ruby, '-I', File.expand_path('../../../lib', __FILE__), '-e', 'p 0')
|
10
9
|
|
11
10
|
assert_raises Errno::ECHILD do
|
12
11
|
Process.wait(-1)
|
@@ -15,7 +14,7 @@ class TestGemUtil < Gem::TestCase
|
|
15
14
|
|
16
15
|
def test_silent_system
|
17
16
|
assert_silent do
|
18
|
-
Gem::Util.silent_system Gem.ruby, '-e', 'puts "hello"; warn "hello"'
|
17
|
+
Gem::Util.silent_system Gem.ruby, '-I', File.expand_path('../../../lib', __FILE__), '-e', 'puts "hello"; warn "hello"'
|
19
18
|
end
|
20
19
|
end
|
21
20
|
|
@@ -38,17 +37,14 @@ class TestGemUtil < Gem::TestCase
|
|
38
37
|
# impossible to cd into it and its children
|
39
38
|
FileUtils.chmod(0666, 'd/e')
|
40
39
|
|
40
|
+
skip 'skipped in root privilege' if Process.uid.zero?
|
41
|
+
|
41
42
|
paths = Gem::Util.traverse_parents('d/e/f').to_a
|
42
43
|
|
43
44
|
assert_equal File.join(@tempdir, 'd'), paths[0]
|
44
45
|
assert_equal @tempdir, paths[1]
|
45
|
-
|
46
|
-
|
47
|
-
assert_equal File.realpath("..", Dir.tmpdir), paths[3]
|
48
|
-
elsif RUBY_PLATFORM !~ /darwin/
|
49
|
-
assert_equal Dir.tmpdir, paths[2]
|
50
|
-
assert_equal '/', paths[3]
|
51
|
-
end
|
46
|
+
assert_equal File.realpath(Dir.tmpdir), paths[2]
|
47
|
+
assert_equal File.realpath("..", Dir.tmpdir), paths[3]
|
52
48
|
ensure
|
53
49
|
# restore default permissions, allow the directory to be removed
|
54
50
|
FileUtils.chmod(0775, 'd/e') unless win_platform?
|
@@ -62,5 +58,29 @@ class TestGemUtil < Gem::TestCase
|
|
62
58
|
assert_equal 4, list.find { |x| x == 4 }
|
63
59
|
end
|
64
60
|
|
65
|
-
|
61
|
+
def test_glob_files_in_dir
|
62
|
+
FileUtils.mkdir_p 'g'
|
63
|
+
FileUtils.touch File.join('g', 'h.rb')
|
64
|
+
FileUtils.touch File.join('g', 'i.rb')
|
66
65
|
|
66
|
+
expected_paths = [
|
67
|
+
File.join(@tempdir, 'g/h.rb'),
|
68
|
+
File.join(@tempdir, 'g/i.rb'),
|
69
|
+
]
|
70
|
+
|
71
|
+
files_with_absolute_base = Gem::Util.glob_files_in_dir('*.rb', File.join(@tempdir, 'g'))
|
72
|
+
assert_equal expected_paths.to_set, files_with_absolute_base.to_set
|
73
|
+
|
74
|
+
files_with_relative_base = Gem::Util.glob_files_in_dir('*.rb', 'g')
|
75
|
+
assert_equal expected_paths.to_set, files_with_relative_base.to_set
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_correct_for_windows_path
|
79
|
+
path = "/C:/WINDOWS/Temp/gems"
|
80
|
+
assert_equal "C:/WINDOWS/Temp/gems", Gem::Util.correct_for_windows_path(path)
|
81
|
+
|
82
|
+
path = "/home/skillet"
|
83
|
+
assert_equal "/home/skillet", Gem::Util.correct_for_windows_path(path)
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
@@ -212,19 +212,19 @@ class TestGemVersion < Gem::TestCase
|
|
212
212
|
|
213
213
|
# Asserts that +version+ is a prerelease.
|
214
214
|
|
215
|
-
def assert_prerelease
|
215
|
+
def assert_prerelease(version)
|
216
216
|
assert v(version).prerelease?, "#{version} is a prerelease"
|
217
217
|
end
|
218
218
|
|
219
219
|
# Assert that +expected+ is the "approximate" recommendation for +version+.
|
220
220
|
|
221
|
-
def assert_approximate_equal
|
221
|
+
def assert_approximate_equal(expected, version)
|
222
222
|
assert_equal expected, v(version).approximate_recommendation
|
223
223
|
end
|
224
224
|
|
225
225
|
# Assert that the "approximate" recommendation for +version+ satifies +version+.
|
226
226
|
|
227
|
-
def assert_approximate_satisfies_itself
|
227
|
+
def assert_approximate_satisfies_itself(version)
|
228
228
|
gem_version = v(version)
|
229
229
|
|
230
230
|
assert Gem::Requirement.new(gem_version.approximate_recommendation).satisfied_by?(gem_version)
|
@@ -232,33 +232,33 @@ class TestGemVersion < Gem::TestCase
|
|
232
232
|
|
233
233
|
# Assert that bumping the +unbumped+ version yields the +expected+.
|
234
234
|
|
235
|
-
def assert_bumped_version_equal
|
235
|
+
def assert_bumped_version_equal(expected, unbumped)
|
236
236
|
assert_version_equal expected, v(unbumped).bump
|
237
237
|
end
|
238
238
|
|
239
239
|
# Assert that +release+ is the correct non-prerelease +version+.
|
240
240
|
|
241
|
-
def assert_release_equal
|
241
|
+
def assert_release_equal(release, version)
|
242
242
|
assert_version_equal release, v(version).release
|
243
243
|
end
|
244
244
|
|
245
245
|
# Assert that two versions are equal. Handles strings or
|
246
246
|
# Gem::Version instances.
|
247
247
|
|
248
|
-
def assert_version_equal
|
248
|
+
def assert_version_equal(expected, actual)
|
249
249
|
assert_equal v(expected), v(actual)
|
250
250
|
assert_equal v(expected).hash, v(actual).hash, "since #{actual} == #{expected}, they must have the same hash"
|
251
251
|
end
|
252
252
|
|
253
253
|
# Assert that two versions are eql?. Checks both directions.
|
254
254
|
|
255
|
-
def assert_version_eql
|
255
|
+
def assert_version_eql(first, second)
|
256
256
|
first, second = v(first), v(second)
|
257
257
|
assert first.eql?(second), "#{first} is eql? #{second}"
|
258
258
|
assert second.eql?(first), "#{second} is eql? #{first}"
|
259
259
|
end
|
260
260
|
|
261
|
-
def assert_less_than
|
261
|
+
def assert_less_than(left, right)
|
262
262
|
l = v(left)
|
263
263
|
r = v(right)
|
264
264
|
assert l < r, "#{left} not less than #{right}"
|
@@ -266,14 +266,14 @@ class TestGemVersion < Gem::TestCase
|
|
266
266
|
|
267
267
|
# Refute the assumption that +version+ is a prerelease.
|
268
268
|
|
269
|
-
def refute_prerelease
|
269
|
+
def refute_prerelease(version)
|
270
270
|
refute v(version).prerelease?, "#{version} is NOT a prerelease"
|
271
271
|
end
|
272
272
|
|
273
273
|
# Refute the assumption that two versions are eql?. Checks both
|
274
274
|
# directions.
|
275
275
|
|
276
|
-
def refute_version_eql
|
276
|
+
def refute_version_eql(first, second)
|
277
277
|
first, second = v(first), v(second)
|
278
278
|
refute first.eql?(second), "#{first} is NOT eql? #{second}"
|
279
279
|
refute second.eql?(first), "#{second} is NOT eql? #{first}"
|
@@ -281,7 +281,7 @@ class TestGemVersion < Gem::TestCase
|
|
281
281
|
|
282
282
|
# Refute the assumption that the two versions are equal?.
|
283
283
|
|
284
|
-
def refute_version_equal
|
284
|
+
def refute_version_equal(unexpected, actual)
|
285
285
|
refute_equal v(unexpected), v(actual)
|
286
286
|
end
|
287
287
|
end
|