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
@@ -53,11 +53,11 @@ require 'rubygems'
|
|
53
53
|
|
54
54
|
version = \">= 0.a\"
|
55
55
|
|
56
|
-
|
57
|
-
|
58
|
-
str = str.
|
59
|
-
if str
|
60
|
-
version =
|
56
|
+
str = ARGV.first
|
57
|
+
if str
|
58
|
+
str = str.b[/\\A_(.*)_\\z/, 1]
|
59
|
+
if str and Gem::Version.correct?(str)
|
60
|
+
version = str
|
61
61
|
ARGV.shift
|
62
62
|
end
|
63
63
|
end
|
@@ -121,7 +121,7 @@ end
|
|
121
121
|
ensure
|
122
122
|
Object.const_set :RUBY_FRAMEWORK_VERSION, orig_RUBY_FRAMEWORK_VERSION if
|
123
123
|
orig_RUBY_FRAMEWORK_VERSION
|
124
|
-
if orig_bindir
|
124
|
+
if orig_bindir
|
125
125
|
RbConfig::CONFIG['bindir'] = orig_bindir
|
126
126
|
else
|
127
127
|
RbConfig::CONFIG.delete 'bindir'
|
@@ -141,7 +141,7 @@ end
|
|
141
141
|
end
|
142
142
|
|
143
143
|
File.open File.join(util_inst_bindir, 'executable'), 'w' do |io|
|
144
|
-
|
144
|
+
io.write <<-EXEC
|
145
145
|
#!/usr/local/bin/ruby
|
146
146
|
#
|
147
147
|
# This file was generated by RubyGems
|
@@ -163,6 +163,8 @@ gem 'other', version
|
|
163
163
|
|
164
164
|
wrapper = File.read installed_exec
|
165
165
|
assert_match %r|generated by RubyGems|, wrapper
|
166
|
+
ensure
|
167
|
+
Gem::Installer.exec_format = nil
|
166
168
|
end
|
167
169
|
|
168
170
|
def test_check_executable_overwrite_other_gem
|
@@ -250,7 +252,7 @@ gem 'other', version
|
|
250
252
|
|
251
253
|
expected = @installer.bin_dir
|
252
254
|
|
253
|
-
if Gem.win_platform?
|
255
|
+
if Gem.win_platform?
|
254
256
|
expected = expected.downcase.gsub(File::SEPARATOR, File::ALT_SEPARATOR)
|
255
257
|
end
|
256
258
|
|
@@ -311,7 +313,7 @@ gem 'other', version
|
|
311
313
|
@installer.wrappers = true
|
312
314
|
|
313
315
|
@spec.executables = %w[executable]
|
314
|
-
@spec.bindir = '
|
316
|
+
@spec.bindir = 'bin'
|
315
317
|
|
316
318
|
exec_file = @installer.formatted_program_filename 'executable'
|
317
319
|
exec_path = File.join @spec.gem_dir, exec_file
|
@@ -323,7 +325,7 @@ gem 'other', version
|
|
323
325
|
|
324
326
|
@installer.generate_bin
|
325
327
|
|
326
|
-
|
328
|
+
assert_directory_exists (util_inst_bindir)
|
327
329
|
installed_exec = File.join(util_inst_bindir, 'executable')
|
328
330
|
assert_path_exists installed_exec
|
329
331
|
assert_equal mask, File.stat(installed_exec).mode unless win_platform?
|
@@ -336,6 +338,9 @@ gem 'other', version
|
|
336
338
|
bin_dir = Gem.win_platform? ? File.expand_path(ENV["WINDIR"]).upcase :
|
337
339
|
"/usr/bin"
|
338
340
|
|
341
|
+
old_path = ENV["PATH"]
|
342
|
+
ENV["PATH"] = [ENV["PATH"], bin_dir].compact.join(File::PATH_SEPARATOR)
|
343
|
+
|
339
344
|
options = {
|
340
345
|
:bin_dir => bin_dir,
|
341
346
|
:install_dir => "/non/existent"
|
@@ -350,6 +355,9 @@ gem 'other', version
|
|
350
355
|
end
|
351
356
|
|
352
357
|
assert_equal "", @ui.error
|
358
|
+
|
359
|
+
ensure
|
360
|
+
ENV["PATH"] = old_path
|
353
361
|
end
|
354
362
|
|
355
363
|
def test_generate_bin_script
|
@@ -358,7 +366,7 @@ gem 'other', version
|
|
358
366
|
@installer.gem_dir = @spec.gem_dir
|
359
367
|
|
360
368
|
@installer.generate_bin
|
361
|
-
|
369
|
+
assert_directory_exists util_inst_bindir
|
362
370
|
installed_exec = File.join util_inst_bindir, 'executable'
|
363
371
|
assert_path_exists installed_exec
|
364
372
|
assert_equal mask, File.stat(installed_exec).mode unless win_platform?
|
@@ -375,7 +383,7 @@ gem 'other', version
|
|
375
383
|
|
376
384
|
Gem::Installer.exec_format = 'foo-%s-bar'
|
377
385
|
@installer.generate_bin
|
378
|
-
|
386
|
+
assert_directory_exists util_inst_bindir
|
379
387
|
installed_exec = File.join util_inst_bindir, 'foo-executable-bar'
|
380
388
|
assert_path_exists installed_exec
|
381
389
|
ensure
|
@@ -389,7 +397,7 @@ gem 'other', version
|
|
389
397
|
|
390
398
|
Gem::Installer.exec_format = 'foo-%s-bar'
|
391
399
|
@installer.generate_bin
|
392
|
-
|
400
|
+
assert_directory_exists util_inst_bindir
|
393
401
|
installed_exec = File.join util_inst_bindir, 'executable'
|
394
402
|
assert_path_exists installed_exec
|
395
403
|
ensure
|
@@ -482,13 +490,13 @@ gem 'other', version
|
|
482
490
|
real_exec = File.join @spec.gem_dir, 'bin', 'executable'
|
483
491
|
|
484
492
|
# fake --no-wrappers for previous install
|
485
|
-
unless Gem.win_platform?
|
493
|
+
unless Gem.win_platform?
|
486
494
|
FileUtils.mkdir_p File.dirname(installed_exec)
|
487
495
|
FileUtils.ln_s real_exec, installed_exec
|
488
496
|
end
|
489
497
|
|
490
498
|
@installer.generate_bin
|
491
|
-
|
499
|
+
assert_directory_exists util_inst_bindir
|
492
500
|
assert_path_exists installed_exec
|
493
501
|
assert_equal mask, File.stat(installed_exec).mode unless win_platform?
|
494
502
|
|
@@ -506,7 +514,7 @@ gem 'other', version
|
|
506
514
|
@installer.gem_dir = @spec.gem_dir
|
507
515
|
|
508
516
|
@installer.generate_bin
|
509
|
-
|
517
|
+
assert_directory_exists util_inst_bindir
|
510
518
|
installed_exec = File.join util_inst_bindir, 'executable'
|
511
519
|
assert_equal true, File.symlink?(installed_exec)
|
512
520
|
assert_equal(File.join(@spec.gem_dir, 'bin', 'executable'),
|
@@ -658,7 +666,7 @@ gem 'other', version
|
|
658
666
|
@installer.generate_bin
|
659
667
|
end
|
660
668
|
|
661
|
-
|
669
|
+
assert_directory_exists util_inst_bindir
|
662
670
|
installed_exec = File.join(util_inst_bindir, 'executable')
|
663
671
|
assert_path_exists installed_exec
|
664
672
|
|
@@ -734,13 +742,13 @@ gem 'other', version
|
|
734
742
|
rakefile = File.join gemdir, 'ext', 'a', 'Rakefile'
|
735
743
|
spec_file = File.join @gemhome, 'specifications', @spec.spec_name
|
736
744
|
|
737
|
-
Gem.pre_install do
|
745
|
+
Gem.pre_install do
|
738
746
|
refute_path_exists cache_file, 'cache file must not exist yet'
|
739
747
|
refute_path_exists spec_file, 'spec file must not exist yet'
|
740
748
|
true
|
741
749
|
end
|
742
750
|
|
743
|
-
Gem.post_build do
|
751
|
+
Gem.post_build do
|
744
752
|
assert_path_exists gemdir, 'gem install dir must exist'
|
745
753
|
assert_path_exists rakefile, 'gem executable must exist'
|
746
754
|
refute_path_exists stub_exe, 'gem executable must not exist'
|
@@ -748,7 +756,7 @@ gem 'other', version
|
|
748
756
|
true
|
749
757
|
end
|
750
758
|
|
751
|
-
Gem.post_install do
|
759
|
+
Gem.post_install do
|
752
760
|
assert_path_exists cache_file, 'cache file must exist'
|
753
761
|
assert_path_exists spec_file, 'spec file must exist'
|
754
762
|
end
|
@@ -890,8 +898,6 @@ gem 'other', version
|
|
890
898
|
end
|
891
899
|
|
892
900
|
def test_install_creates_binstub_that_dont_trust_encoding
|
893
|
-
skip unless "".respond_to?(:force_encoding)
|
894
|
-
|
895
901
|
Dir.mkdir util_inst_bindir
|
896
902
|
util_setup_gem
|
897
903
|
util_clear_gems
|
@@ -961,7 +967,7 @@ gem 'other', version
|
|
961
967
|
|
962
968
|
def test_install_force
|
963
969
|
use_ui @ui do
|
964
|
-
installer = Gem::Installer.at old_ruby_required, :force => true
|
970
|
+
installer = Gem::Installer.at old_ruby_required('= 1.4.6'), :force => true
|
965
971
|
installer.install
|
966
972
|
end
|
967
973
|
|
@@ -971,16 +977,16 @@ gem 'other', version
|
|
971
977
|
|
972
978
|
def test_install_missing_dirs
|
973
979
|
FileUtils.rm_f File.join(Gem.dir, 'cache')
|
974
|
-
FileUtils.rm_f File.join(Gem.dir, '
|
980
|
+
FileUtils.rm_f File.join(Gem.dir, 'doc')
|
975
981
|
FileUtils.rm_f File.join(Gem.dir, 'specifications')
|
976
982
|
|
977
983
|
use_ui @ui do
|
978
984
|
@installer.install
|
979
985
|
end
|
980
986
|
|
981
|
-
|
982
|
-
|
983
|
-
|
987
|
+
assert_directory_exists File.join(Gem.dir, 'cache')
|
988
|
+
assert_directory_exists File.join(Gem.dir, 'doc')
|
989
|
+
assert_directory_exists File.join(Gem.dir, 'specifications')
|
984
990
|
|
985
991
|
assert_path_exists File.join @gemhome, 'cache', @spec.file_name
|
986
992
|
assert_path_exists File.join @gemhome, 'specifications', @spec.spec_name
|
@@ -1179,88 +1185,47 @@ gem 'other', version
|
|
1179
1185
|
refute_path_exists File.join expected_extension_dir, 'gem_make.out'
|
1180
1186
|
end
|
1181
1187
|
|
1182
|
-
|
1183
|
-
|
1184
|
-
|
1185
|
-
|
1186
|
-
|
1187
|
-
@spec.extensions << "extconf.rb"
|
1188
|
-
write_file File.join(@tempdir, "extconf.rb") do |io|
|
1189
|
-
io.write <<-RUBY
|
1190
|
-
require "mkmf"
|
1191
|
-
create_makefile("#{@spec.name}")
|
1192
|
-
RUBY
|
1193
|
-
end
|
1194
|
-
|
1195
|
-
write_file File.join(@tempdir, "a.c") do |io|
|
1196
|
-
io.write <<-C
|
1197
|
-
#include <ruby.h>
|
1198
|
-
void Init_a() { }
|
1199
|
-
C
|
1200
|
-
end
|
1201
|
-
|
1202
|
-
Dir.mkdir File.join(@tempdir, "lib")
|
1203
|
-
write_file File.join(@tempdir, 'lib', "b.rb") do |io|
|
1204
|
-
io.write "# b.rb"
|
1205
|
-
end
|
1206
|
-
|
1207
|
-
@spec.files += %w[extconf.rb lib/b.rb a.c]
|
1208
|
-
|
1209
|
-
use_ui @ui do
|
1210
|
-
path = Gem::Package.build @spec
|
1188
|
+
def test_find_lib_file_after_install
|
1189
|
+
@spec.extensions << "extconf.rb"
|
1190
|
+
write_file File.join(@tempdir, "extconf.rb") do |io|
|
1191
|
+
io.write <<-RUBY
|
1192
|
+
require "mkmf"
|
1211
1193
|
|
1212
|
-
|
1213
|
-
|
1214
|
-
|
1194
|
+
CONFIG['CC'] = '$(TOUCH) $@ ||'
|
1195
|
+
CONFIG['LDSHARED'] = '$(TOUCH) $@ ||'
|
1196
|
+
$ruby = '#{Gem.ruby}'
|
1215
1197
|
|
1216
|
-
|
1217
|
-
|
1218
|
-
}, 'b.rb'
|
1219
|
-
assert_equal expected, @spec.matches_for_glob('b.rb').first
|
1198
|
+
create_makefile("#{@spec.name}")
|
1199
|
+
RUBY
|
1220
1200
|
end
|
1221
|
-
else
|
1222
|
-
def test_find_lib_file_after_install
|
1223
|
-
@spec.extensions << "extconf.rb"
|
1224
|
-
write_file File.join(@tempdir, "extconf.rb") do |io|
|
1225
|
-
io.write <<-RUBY
|
1226
|
-
require "mkmf"
|
1227
1201
|
|
1228
|
-
|
1229
|
-
CONFIG['LDSHARED'] = '$(TOUCH) $@ ||'
|
1230
|
-
$ruby = '#{Gem.ruby}'
|
1202
|
+
write_file File.join(@tempdir, "depend")
|
1231
1203
|
|
1232
|
-
|
1233
|
-
|
1234
|
-
|
1235
|
-
|
1236
|
-
|
1237
|
-
|
1238
|
-
write_file File.join(@tempdir, "a.c") do |io|
|
1239
|
-
io.write <<-C
|
1240
|
-
#include <ruby.h>
|
1241
|
-
void Init_a() { }
|
1242
|
-
C
|
1243
|
-
end
|
1244
|
-
|
1245
|
-
Dir.mkdir File.join(@tempdir, "lib")
|
1246
|
-
write_file File.join(@tempdir, 'lib', "b.rb") do |io|
|
1247
|
-
io.write "# b.rb"
|
1248
|
-
end
|
1204
|
+
write_file File.join(@tempdir, "a.c") do |io|
|
1205
|
+
io.write <<-C
|
1206
|
+
#include <ruby.h>
|
1207
|
+
void Init_a() { }
|
1208
|
+
C
|
1209
|
+
end
|
1249
1210
|
|
1250
|
-
|
1211
|
+
Dir.mkdir File.join(@tempdir, "lib")
|
1212
|
+
write_file File.join(@tempdir, 'lib', "b.rb") do |io|
|
1213
|
+
io.write "# b.rb"
|
1214
|
+
end
|
1251
1215
|
|
1252
|
-
|
1253
|
-
path = Gem::Package.build @spec
|
1216
|
+
@spec.files += %w[extconf.rb lib/b.rb depend a.c]
|
1254
1217
|
|
1255
|
-
|
1256
|
-
|
1257
|
-
end
|
1218
|
+
use_ui @ui do
|
1219
|
+
path = Gem::Package.build @spec
|
1258
1220
|
|
1259
|
-
|
1260
|
-
|
1261
|
-
}, 'b.rb'
|
1262
|
-
assert_equal expected, @spec.matches_for_glob('b.rb').first
|
1221
|
+
installer = Gem::Installer.at path
|
1222
|
+
installer.install
|
1263
1223
|
end
|
1224
|
+
|
1225
|
+
expected = File.join @spec.full_require_paths.find { |path|
|
1226
|
+
File.exist? File.join path, 'b.rb'
|
1227
|
+
}, 'b.rb'
|
1228
|
+
assert_equal expected, @spec.matches_for_glob('b.rb').first
|
1264
1229
|
end
|
1265
1230
|
|
1266
1231
|
def test_install_extension_and_script
|
@@ -1302,13 +1267,6 @@ gem 'other', version
|
|
1302
1267
|
end
|
1303
1268
|
|
1304
1269
|
def test_install_extension_flat
|
1305
|
-
skip '1.9.2 and earlier mkmf.rb does not create TOUCH' if
|
1306
|
-
RUBY_VERSION < '1.9.3'
|
1307
|
-
|
1308
|
-
if RUBY_VERSION == "1.9.3" and RUBY_PATCHLEVEL <= 194
|
1309
|
-
skip "TOUCH was introduced into 1.9.3 after p194"
|
1310
|
-
end
|
1311
|
-
|
1312
1270
|
@spec.require_paths = ["."]
|
1313
1271
|
|
1314
1272
|
@spec.extensions << "extconf.rb"
|
@@ -1424,16 +1382,32 @@ gem 'other', version
|
|
1424
1382
|
|
1425
1383
|
def test_pre_install_checks_ruby_version
|
1426
1384
|
use_ui @ui do
|
1427
|
-
installer = Gem::Installer.at old_ruby_required
|
1385
|
+
installer = Gem::Installer.at old_ruby_required('= 1.4.6')
|
1428
1386
|
e = assert_raises Gem::RuntimeRequirementNotMetError do
|
1429
1387
|
installer.pre_install_checks
|
1430
1388
|
end
|
1431
|
-
rv = Gem.
|
1389
|
+
rv = Gem.ruby_version
|
1432
1390
|
assert_equal "old_ruby_required requires Ruby version = 1.4.6. The current ruby version is #{rv}.",
|
1433
1391
|
e.message
|
1434
1392
|
end
|
1435
1393
|
end
|
1436
1394
|
|
1395
|
+
def test_pre_install_checks_ruby_version_with_prereleases
|
1396
|
+
util_set_RUBY_VERSION '2.6.0', -1, '63539', 'ruby 2.6.0preview2 (2018-05-31 trunk 63539) [x86_64-linux]'
|
1397
|
+
|
1398
|
+
installer = Gem::Installer.at old_ruby_required('>= 2.6.0.preview2')
|
1399
|
+
assert installer.pre_install_checks
|
1400
|
+
|
1401
|
+
installer = Gem::Installer.at old_ruby_required('> 2.6.0.preview2')
|
1402
|
+
e = assert_raises Gem::RuntimeRequirementNotMetError do
|
1403
|
+
assert installer.pre_install_checks
|
1404
|
+
end
|
1405
|
+
assert_equal "old_ruby_required requires Ruby version > 2.6.0.preview2. The current ruby version is 2.6.0.preview2.",
|
1406
|
+
e.message
|
1407
|
+
ensure
|
1408
|
+
util_restore_RUBY_VERSION
|
1409
|
+
end
|
1410
|
+
|
1437
1411
|
def test_pre_install_checks_wrong_rubygems_version
|
1438
1412
|
spec = util_spec 'old_rubygems_required', '1' do |s|
|
1439
1413
|
s.required_rubygems_version = '< 0'
|
@@ -1459,7 +1433,7 @@ gem 'other', version
|
|
1459
1433
|
def spec.full_name # so the spec is buildable
|
1460
1434
|
"malicious-1"
|
1461
1435
|
end
|
1462
|
-
def spec.validate; end
|
1436
|
+
def spec.validate(packaging, strict); end
|
1463
1437
|
|
1464
1438
|
util_build_gem spec
|
1465
1439
|
|
@@ -1517,6 +1491,8 @@ gem 'other', version
|
|
1517
1491
|
end
|
1518
1492
|
|
1519
1493
|
def test_pre_install_checks_malicious_extensions_before_eval
|
1494
|
+
skip "mswin environment disallow to create file contained the carriage return code." if Gem.win_platform?
|
1495
|
+
|
1520
1496
|
spec = util_spec "malicious", '1'
|
1521
1497
|
def spec.full_name # so the spec is buildable
|
1522
1498
|
"malicious-1"
|
@@ -1846,33 +1822,92 @@ gem 'other', version
|
|
1846
1822
|
assert_predicate spec, :default_gem?
|
1847
1823
|
end
|
1848
1824
|
|
1849
|
-
def
|
1825
|
+
def test_default_gem_without_wrappers
|
1850
1826
|
FileUtils.rm_f File.join(Gem.dir, 'specifications')
|
1851
1827
|
|
1852
|
-
@installer.wrappers =
|
1828
|
+
@installer.wrappers = false
|
1853
1829
|
@installer.options[:install_as_default] = true
|
1854
1830
|
@installer.gem_dir = @spec.gem_dir
|
1855
|
-
@installer.generate_bin
|
1856
1831
|
|
1857
1832
|
use_ui @ui do
|
1858
1833
|
@installer.install
|
1859
1834
|
end
|
1860
1835
|
|
1861
|
-
|
1862
|
-
installed_exec = File.join
|
1836
|
+
assert_directory_exists File.join(@spec.gem_dir, 'bin')
|
1837
|
+
installed_exec = File.join @spec.gem_dir, 'bin', 'executable'
|
1863
1838
|
assert_path_exists installed_exec
|
1864
1839
|
|
1865
|
-
|
1866
|
-
|
1840
|
+
assert_directory_exists File.join(Gem.default_dir, 'specifications')
|
1841
|
+
assert_directory_exists File.join(Gem.default_dir, 'specifications', 'default')
|
1867
1842
|
|
1868
1843
|
default_spec = eval File.read File.join(Gem.default_dir, 'specifications', 'default', 'a-2.gemspec')
|
1869
1844
|
assert_equal Gem::Version.new("2"), default_spec.version
|
1870
1845
|
assert_equal ['bin/executable'], default_spec.files
|
1846
|
+
|
1847
|
+
assert_directory_exists util_inst_bindir
|
1848
|
+
|
1849
|
+
installed_exec = File.join util_inst_bindir, 'executable'
|
1850
|
+
assert_path_exists installed_exec
|
1851
|
+
|
1852
|
+
wrapper = File.read installed_exec
|
1853
|
+
refute_match %r|generated by RubyGems|, wrapper
|
1854
|
+
end
|
1855
|
+
|
1856
|
+
def test_default_gem_with_wrappers
|
1857
|
+
FileUtils.rm_f File.join(Gem.dir, 'specifications')
|
1858
|
+
|
1859
|
+
@installer.wrappers = true
|
1860
|
+
@installer.options[:install_as_default] = true
|
1861
|
+
@installer.gem_dir = @spec.gem_dir
|
1862
|
+
|
1863
|
+
use_ui @ui do
|
1864
|
+
@installer.install
|
1865
|
+
end
|
1866
|
+
|
1867
|
+
assert_directory_exists util_inst_bindir
|
1868
|
+
|
1869
|
+
installed_exec = File.join util_inst_bindir, 'executable'
|
1870
|
+
assert_path_exists installed_exec
|
1871
|
+
|
1872
|
+
wrapper = File.read installed_exec
|
1873
|
+
assert_match %r|generated by RubyGems|, wrapper
|
1874
|
+
end
|
1875
|
+
|
1876
|
+
def test_default_gem_with_exe_as_bindir
|
1877
|
+
FileUtils.rm_f File.join(Gem.dir, 'specifications')
|
1878
|
+
|
1879
|
+
@spec = quick_gem 'c' do |spec|
|
1880
|
+
util_make_exec spec, '#!/usr/bin/ruby', 'exe'
|
1881
|
+
end
|
1882
|
+
|
1883
|
+
util_build_gem @spec
|
1884
|
+
|
1885
|
+
@spec.cache_file
|
1886
|
+
|
1887
|
+
installer = util_installer @spec, @gemhome
|
1888
|
+
|
1889
|
+
installer.options[:install_as_default] = true
|
1890
|
+
installer.gem_dir = @spec.gem_dir
|
1891
|
+
|
1892
|
+
use_ui @ui do
|
1893
|
+
installer.install
|
1894
|
+
end
|
1895
|
+
|
1896
|
+
assert_directory_exists File.join(@spec.gem_dir, 'exe')
|
1897
|
+
installed_exec = File.join @spec.gem_dir, 'exe', 'executable'
|
1898
|
+
assert_path_exists installed_exec
|
1899
|
+
|
1900
|
+
assert_directory_exists File.join(Gem.default_dir, 'specifications')
|
1901
|
+
assert_directory_exists File.join(Gem.default_dir, 'specifications', 'default')
|
1902
|
+
|
1903
|
+
default_spec = eval File.read File.join(Gem.default_dir, 'specifications', 'default', 'c-2.gemspec')
|
1904
|
+
assert_equal Gem::Version.new("2"), default_spec.version
|
1905
|
+
assert_equal ['exe/executable'], default_spec.files
|
1871
1906
|
end
|
1872
1907
|
|
1873
|
-
def old_ruby_required
|
1908
|
+
def old_ruby_required(requirement)
|
1874
1909
|
spec = util_spec 'old_ruby_required', '1' do |s|
|
1875
|
-
s.required_ruby_version =
|
1910
|
+
s.required_ruby_version = requirement
|
1876
1911
|
end
|
1877
1912
|
|
1878
1913
|
util_build_gem spec
|
@@ -1887,7 +1922,7 @@ gem 'other', version
|
|
1887
1922
|
@installer = util_installer @spec, @gemhome
|
1888
1923
|
end
|
1889
1924
|
|
1890
|
-
def util_conflict_executable
|
1925
|
+
def util_conflict_executable(wrappers)
|
1891
1926
|
conflict = quick_gem 'conflict' do |spec|
|
1892
1927
|
util_make_exec spec
|
1893
1928
|
end
|
@@ -44,8 +44,9 @@ class TestGemLocalRemoteOptions < Gem::TestCase
|
|
44
44
|
spec_fetcher
|
45
45
|
|
46
46
|
@cmd.add_local_remote_options
|
47
|
+
Gem.configuration.sources = nil
|
47
48
|
@cmd.handle_options %W[--clear-sources]
|
48
|
-
assert_equal Gem.default_sources, Gem.sources
|
49
|
+
assert_equal Gem.default_sources, Gem.sources.to_a
|
49
50
|
end
|
50
51
|
|
51
52
|
def test_local_eh
|
@@ -123,7 +124,7 @@ class TestGemLocalRemoteOptions < Gem::TestCase
|
|
123
124
|
|
124
125
|
s1 = 'htp://more-gems.example.com'
|
125
126
|
|
126
|
-
assert_raises
|
127
|
+
assert_raises ArgumentError do
|
127
128
|
@cmd.handle_options %W[--source #{s1}]
|
128
129
|
end
|
129
130
|
|
@@ -131,4 +132,3 @@ class TestGemLocalRemoteOptions < Gem::TestCase
|
|
131
132
|
end
|
132
133
|
|
133
134
|
end
|
134
|
-
|