rubygems-update 3.0.9 → 3.1.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +31 -8
- data/.travis.yml +9 -27
- data/CONTRIBUTING.md +13 -0
- data/History.txt +24 -28
- data/MAINTAINERS.txt +1 -6
- data/Manifest.txt +65 -15
- data/Rakefile +39 -23
- data/bin/gem +0 -6
- data/bundler/CHANGELOG.md +746 -570
- data/bundler/CODE_OF_CONDUCT.md +117 -23
- data/bundler/LICENSE.md +18 -19
- data/bundler/README.md +9 -8
- data/bundler/bundler.gemspec +8 -25
- data/bundler/exe/bundle +19 -3
- data/bundler/lib/bundler.rb +120 -67
- data/bundler/lib/bundler/build_metadata.rb +1 -3
- data/bundler/lib/bundler/capistrano.rb +4 -4
- data/bundler/lib/bundler/cli.rb +129 -121
- data/bundler/lib/bundler/cli/add.rb +27 -16
- data/bundler/lib/bundler/cli/common.rb +11 -12
- data/bundler/lib/bundler/cli/config.rb +161 -86
- data/bundler/lib/bundler/cli/console.rb +1 -1
- data/bundler/lib/bundler/cli/doctor.rb +4 -4
- data/bundler/lib/bundler/cli/exec.rb +4 -9
- data/bundler/lib/bundler/cli/gem.rb +5 -5
- data/bundler/lib/bundler/cli/info.rb +17 -5
- data/bundler/lib/bundler/cli/init.rb +1 -1
- data/bundler/lib/bundler/cli/install.rb +11 -10
- data/bundler/lib/bundler/cli/issue.rb +3 -3
- data/bundler/lib/bundler/cli/open.rb +10 -6
- data/bundler/lib/bundler/cli/outdated.rb +85 -81
- data/bundler/lib/bundler/cli/package.rb +8 -9
- data/bundler/lib/bundler/cli/plugin.rb +9 -2
- data/bundler/lib/bundler/cli/pristine.rb +1 -1
- data/bundler/lib/bundler/cli/show.rb +1 -1
- data/bundler/lib/bundler/cli/update.rb +31 -11
- data/bundler/lib/bundler/compact_index_client.rb +25 -9
- data/bundler/lib/bundler/compact_index_client/updater.rb +2 -6
- data/bundler/lib/bundler/current_ruby.rb +9 -7
- data/bundler/lib/bundler/definition.rb +35 -26
- data/bundler/lib/bundler/dependency.rb +16 -4
- data/bundler/lib/bundler/deployment.rb +1 -1
- data/bundler/lib/bundler/dsl.rb +15 -39
- data/bundler/lib/bundler/env.rb +8 -13
- data/bundler/lib/bundler/environment_preserver.rb +0 -1
- data/bundler/lib/bundler/feature_flag.rb +23 -34
- data/bundler/lib/bundler/fetcher.rb +14 -11
- data/bundler/lib/bundler/fetcher/compact_index.rb +26 -12
- data/bundler/lib/bundler/fetcher/dependency.rb +1 -1
- data/bundler/lib/bundler/fetcher/downloader.rb +4 -1
- data/bundler/lib/bundler/fetcher/index.rb +4 -2
- data/bundler/lib/bundler/friendly_errors.rb +4 -5
- data/bundler/lib/bundler/gem_helper.rb +39 -24
- data/bundler/lib/bundler/gem_helpers.rb +2 -4
- data/bundler/lib/bundler/gem_tasks.rb +1 -1
- data/bundler/lib/bundler/gem_version_promoter.rb +3 -3
- data/bundler/lib/bundler/graph.rb +2 -2
- data/bundler/lib/bundler/injector.rb +10 -8
- data/bundler/lib/bundler/inline.rb +19 -18
- data/bundler/lib/bundler/installer.rb +7 -14
- data/bundler/lib/bundler/installer/gem_installer.rb +5 -1
- data/bundler/lib/bundler/installer/parallel_installer.rb +4 -8
- data/bundler/lib/bundler/installer/standalone.rb +1 -2
- data/bundler/lib/bundler/lazy_specification.rb +2 -2
- data/bundler/lib/bundler/lockfile_parser.rb +13 -21
- data/bundler/lib/bundler/match_platform.rb +1 -1
- data/bundler/lib/bundler/plugin.rb +42 -29
- data/bundler/lib/bundler/plugin/api.rb +1 -1
- data/bundler/lib/bundler/plugin/api/source.rb +2 -2
- data/bundler/lib/bundler/plugin/index.rb +14 -3
- data/bundler/lib/bundler/plugin/installer.rb +28 -15
- data/bundler/lib/bundler/psyched_yaml.rb +1 -1
- data/bundler/lib/bundler/resolver.rb +72 -24
- data/bundler/lib/bundler/resolver/spec_group.rb +3 -2
- data/bundler/lib/bundler/retry.rb +2 -2
- data/bundler/lib/bundler/ruby_version.rb +4 -19
- data/bundler/lib/bundler/rubygems_ext.rb +10 -66
- data/bundler/lib/bundler/rubygems_gem_installer.rb +1 -8
- data/bundler/lib/bundler/rubygems_integration.rb +144 -395
- data/bundler/lib/bundler/runtime.rb +2 -9
- data/bundler/lib/bundler/settings.rb +15 -47
- data/bundler/lib/bundler/setup.rb +6 -5
- data/bundler/lib/bundler/shared_helpers.rb +58 -71
- data/bundler/lib/bundler/similarity_detector.rb +2 -2
- data/bundler/lib/bundler/source.rb +5 -5
- data/bundler/lib/bundler/source/git.rb +19 -12
- data/bundler/lib/bundler/source/git/git_proxy.rb +35 -39
- data/bundler/lib/bundler/source/metadata.rb +7 -2
- data/bundler/lib/bundler/source/path.rb +13 -8
- data/bundler/lib/bundler/source/rubygems.rb +11 -5
- data/bundler/lib/bundler/source/rubygems/remote.rb +1 -2
- data/bundler/lib/bundler/source_list.rb +9 -12
- data/bundler/lib/bundler/spec_set.rb +23 -12
- data/bundler/lib/bundler/stub_specification.rb +18 -30
- data/bundler/lib/bundler/templates/Executable.bundler +23 -14
- data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +3 -3
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +8 -2
- data/bundler/lib/bundler/templates/newgem/README.md.tt +4 -3
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +6 -27
- data/bundler/lib/bundler/templates/newgem/test/test_helper.rb.tt +1 -1
- data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -1
- data/bundler/lib/bundler/ui.rb +3 -3
- data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
- data/bundler/lib/bundler/ui/shell.rb +4 -8
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +161 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +66 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +176 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +151 -48
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils/version.rb +5 -0
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +6 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +2 -2
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +6 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +30 -8
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +4 -4
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +2 -2
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +248 -279
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +40 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +53 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor.rb +7 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +21 -11
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +11 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +16 -17
- data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +82 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +3 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor.rb +2 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +7 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +6 -6
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +4 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +52 -7
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/vendored_fileutils.rb +1 -6
- data/bundler/lib/bundler/vendored_molinillo.rb +1 -1
- data/bundler/lib/bundler/vendored_persistent.rb +7 -5
- data/bundler/lib/bundler/vendored_thor.rb +2 -2
- data/bundler/lib/bundler/version.rb +1 -20
- data/bundler/lib/bundler/version_ranges.rb +51 -5
- data/bundler/lib/bundler/vlad.rb +2 -2
- data/bundler/lib/bundler/worker.rb +1 -3
- data/bundler/lib/bundler/yaml_serializer.rb +2 -3
- data/bundler/man/bundle-add.1 +66 -0
- data/bundler/man/bundle-add.1.txt +58 -0
- data/bundler/man/bundle-add.ronn +7 -1
- data/bundler/man/bundle-binstubs.1 +40 -0
- data/bundler/man/bundle-binstubs.1.txt +48 -0
- data/bundler/man/bundle-binstubs.ronn +1 -1
- data/bundler/man/bundle-check.1 +31 -0
- data/bundler/man/bundle-check.1.txt +33 -0
- data/bundler/man/bundle-clean.1 +24 -0
- data/bundler/man/bundle-clean.1.txt +26 -0
- data/bundler/man/bundle-config.1 +497 -0
- data/bundler/man/bundle-config.1.txt +528 -0
- data/bundler/man/bundle-config.ronn +42 -40
- data/bundler/man/bundle-doctor.1 +44 -0
- data/bundler/man/bundle-doctor.1.txt +44 -0
- data/bundler/man/bundle-exec.1 +165 -0
- data/bundler/man/bundle-exec.1.txt +178 -0
- data/bundler/man/bundle-exec.ronn +1 -1
- data/bundler/man/bundle-gem.1 +80 -0
- data/bundler/man/bundle-gem.1.txt +91 -0
- data/bundler/man/bundle-info.1 +20 -0
- data/bundler/man/bundle-info.1.txt +21 -0
- data/bundler/man/bundle-init.1 +25 -0
- data/bundler/man/bundle-init.1.txt +34 -0
- data/bundler/man/bundle-init.ronn +1 -1
- data/bundler/man/bundle-inject.1 +33 -0
- data/bundler/man/bundle-inject.1.txt +32 -0
- data/bundler/man/bundle-install.1 +311 -0
- data/bundler/man/bundle-install.1.txt +401 -0
- data/bundler/man/bundle-install.ronn +9 -4
- data/bundler/man/bundle-list.1 +50 -0
- data/bundler/man/bundle-list.1.txt +43 -0
- data/bundler/man/bundle-lock.1 +84 -0
- data/bundler/man/bundle-lock.1.txt +93 -0
- data/bundler/man/bundle-open.1 +32 -0
- data/bundler/man/bundle-open.1.txt +29 -0
- data/bundler/man/bundle-outdated.1 +155 -0
- data/bundler/man/bundle-outdated.1.txt +131 -0
- data/bundler/man/bundle-package.1 +55 -0
- data/bundler/man/bundle-package.1.txt +79 -0
- data/bundler/man/bundle-platform.1 +61 -0
- data/bundler/man/bundle-platform.1.txt +57 -0
- data/bundler/man/bundle-pristine.1 +34 -0
- data/bundler/man/bundle-pristine.1.txt +44 -0
- data/bundler/man/bundle-remove.1 +31 -0
- data/bundler/man/bundle-remove.1.txt +34 -0
- data/bundler/man/bundle-show.1 +23 -0
- data/bundler/man/bundle-show.1.txt +27 -0
- data/bundler/man/bundle-update.1 +394 -0
- data/bundler/man/bundle-update.1.txt +390 -0
- data/bundler/man/bundle-update.ronn +3 -3
- data/bundler/man/bundle-viz.1 +39 -0
- data/bundler/man/bundle-viz.1.txt +39 -0
- data/bundler/man/bundle.1 +136 -0
- data/bundler/man/bundle.1.txt +116 -0
- data/bundler/man/bundle.ronn +2 -2
- data/bundler/man/gemfile.5 +686 -0
- data/bundler/man/gemfile.5.ronn +14 -18
- data/bundler/man/gemfile.5.txt +649 -0
- data/bundler/man/index.txt +25 -0
- data/lib/rubygems.rb +80 -48
- data/lib/rubygems/available_set.rb +1 -0
- data/lib/rubygems/basic_specification.rb +17 -6
- data/lib/rubygems/bundler_version_finder.rb +5 -0
- data/lib/rubygems/command.rb +34 -5
- data/lib/rubygems/command_manager.rb +0 -6
- data/lib/rubygems/commands/build_command.rb +21 -8
- data/lib/rubygems/commands/cert_command.rb +0 -1
- data/lib/rubygems/commands/cleanup_command.rb +7 -7
- data/lib/rubygems/commands/contents_command.rb +3 -3
- data/lib/rubygems/commands/dependency_command.rb +4 -3
- data/lib/rubygems/commands/environment_command.rb +0 -3
- data/lib/rubygems/commands/info_command.rb +2 -0
- data/lib/rubygems/commands/install_command.rb +12 -52
- data/lib/rubygems/commands/lock_command.rb +2 -2
- data/lib/rubygems/commands/mirror_command.rb +1 -0
- data/lib/rubygems/commands/open_command.rb +2 -1
- data/lib/rubygems/commands/outdated_command.rb +1 -0
- data/lib/rubygems/commands/owner_command.rb +2 -7
- data/lib/rubygems/commands/pristine_command.rb +3 -0
- data/lib/rubygems/commands/push_command.rb +4 -6
- data/lib/rubygems/commands/query_command.rb +94 -80
- data/lib/rubygems/commands/rdoc_command.rb +1 -0
- data/lib/rubygems/commands/setup_command.rb +10 -8
- data/lib/rubygems/commands/signin_command.rb +1 -0
- data/lib/rubygems/commands/specification_command.rb +1 -0
- data/lib/rubygems/commands/stale_command.rb +2 -0
- data/lib/rubygems/commands/uninstall_command.rb +1 -0
- data/lib/rubygems/commands/unpack_command.rb +2 -29
- data/lib/rubygems/commands/update_command.rb +14 -14
- data/lib/rubygems/commands/which_command.rb +1 -0
- data/lib/rubygems/commands/yank_command.rb +8 -2
- data/lib/rubygems/compatibility.rb +4 -4
- data/lib/rubygems/config_file.rb +28 -23
- data/lib/rubygems/core_ext/kernel_gem.rb +2 -5
- data/lib/rubygems/core_ext/kernel_require.rb +29 -2
- data/lib/rubygems/core_ext/kernel_warn.rb +10 -4
- data/lib/rubygems/defaults.rb +10 -17
- data/lib/rubygems/dependency.rb +21 -6
- data/lib/rubygems/dependency_installer.rb +19 -102
- data/lib/rubygems/dependency_list.rb +11 -10
- data/lib/rubygems/deprecate.rb +5 -5
- data/lib/rubygems/errors.rb +11 -2
- data/lib/rubygems/exceptions.rb +9 -0
- data/lib/rubygems/ext/builder.rb +24 -43
- data/lib/rubygems/ext/cmake_builder.rb +2 -0
- data/lib/rubygems/ext/ext_conf_builder.rb +11 -9
- data/lib/rubygems/ext/rake_builder.rb +1 -1
- data/lib/rubygems/gemcutter_utilities.rb +19 -26
- data/lib/rubygems/indexer.rb +9 -5
- data/lib/rubygems/installer.rb +26 -13
- data/lib/rubygems/installer_test_case.rb +86 -38
- data/lib/rubygems/local_remote_options.rb +1 -1
- data/lib/rubygems/mock_gem_ui.rb +4 -1
- data/lib/rubygems/name_tuple.rb +1 -0
- data/lib/rubygems/package.rb +37 -9
- data/lib/rubygems/package/tar_writer.rb +4 -4
- data/lib/rubygems/path_support.rb +2 -0
- data/lib/rubygems/platform.rb +2 -1
- data/lib/rubygems/psych_tree.rb +2 -0
- data/lib/rubygems/remote_fetcher.rb +5 -1
- data/lib/rubygems/request.rb +5 -3
- data/lib/rubygems/request/connection_pools.rb +4 -4
- data/lib/rubygems/request/http_pool.rb +1 -0
- data/lib/rubygems/request/https_pool.rb +2 -0
- data/lib/rubygems/request_set.rb +2 -2
- data/lib/rubygems/request_set/gem_dependency_api.rb +2 -2
- data/lib/rubygems/request_set/lockfile.rb +5 -2
- data/lib/rubygems/request_set/lockfile/parser.rb +4 -2
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +2 -0
- data/lib/rubygems/requirement.rb +20 -18
- data/lib/rubygems/resolver.rb +4 -5
- data/lib/rubygems/resolver/activation_request.rb +19 -49
- data/lib/rubygems/resolver/best_set.rb +2 -2
- data/lib/rubygems/resolver/conflict.rb +0 -5
- data/lib/rubygems/resolver/installer_set.rb +3 -3
- data/lib/rubygems/resolver/lock_set.rb +1 -1
- data/lib/rubygems/resolver/lock_specification.rb +2 -2
- data/lib/rubygems/resolver/requirement_list.rb +1 -0
- data/lib/rubygems/resolver/specification.rb +1 -0
- data/lib/rubygems/resolver/stats.rb +2 -0
- data/lib/rubygems/security/signer.rb +3 -2
- data/lib/rubygems/server.rb +5 -4
- data/lib/rubygems/source_list.rb +1 -0
- data/lib/rubygems/spec_fetcher.rb +3 -16
- data/lib/rubygems/specification.rb +69 -133
- data/lib/rubygems/specification_policy.rb +7 -2
- data/{bundler/lib/bundler → lib/rubygems}/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +0 -0
- data/{bundler/lib/bundler → lib/rubygems}/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -0
- data/{bundler/lib/bundler → lib/rubygems}/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -0
- data/lib/rubygems/stub_specification.rb +5 -2
- data/lib/rubygems/syck_hack.rb +2 -0
- data/lib/rubygems/test_case.rb +78 -227
- data/lib/rubygems/test_utilities.rb +17 -6
- data/lib/rubygems/text.rb +2 -3
- data/lib/rubygems/uninstaller.rb +15 -15
- data/lib/rubygems/user_interaction.rb +9 -1
- data/lib/rubygems/util.rb +5 -41
- data/lib/rubygems/util/licenses.rb +398 -396
- data/lib/rubygems/util/list.rb +2 -0
- data/lib/rubygems/validator.rb +9 -29
- data/lib/rubygems/version.rb +5 -3
- data/rubygems-update.gemspec +3 -3
- data/test/rubygems/plugin/load/rubygems_plugin.rb +2 -0
- data/test/rubygems/test_bundled_ca.rb +4 -7
- data/test/rubygems/test_deprecate.rb +3 -0
- data/test/rubygems/test_gem.rb +183 -176
- data/test/rubygems/test_gem_available_set.rb +3 -2
- data/test/rubygems/test_gem_bundler_version_finder.rb +3 -1
- data/test/rubygems/test_gem_command.rb +94 -5
- data/test/rubygems/test_gem_command_manager.rb +5 -13
- data/test/rubygems/test_gem_commands_build_command.rb +142 -4
- data/test/rubygems/test_gem_commands_cert_command.rb +15 -1
- data/test/rubygems/test_gem_commands_cleanup_command.rb +22 -6
- data/test/rubygems/test_gem_commands_dependency_command.rb +1 -1
- data/test/rubygems/test_gem_commands_environment_command.rb +1 -11
- data/test/rubygems/test_gem_commands_help_command.rb +2 -0
- data/test/rubygems/test_gem_commands_info_command.rb +1 -0
- data/test/rubygems/test_gem_commands_install_command.rb +207 -2
- data/test/rubygems/test_gem_commands_mirror.rb +1 -0
- data/test/rubygems/test_gem_commands_outdated_command.rb +1 -0
- data/test/rubygems/test_gem_commands_owner_command.rb +4 -5
- data/test/rubygems/test_gem_commands_pristine_command.rb +56 -4
- data/test/rubygems/test_gem_commands_push_command.rb +19 -14
- data/test/rubygems/test_gem_commands_query_command.rb +27 -2
- data/test/rubygems/test_gem_commands_setup_command.rb +62 -37
- data/test/rubygems/test_gem_commands_signin_command.rb +5 -4
- data/test/rubygems/test_gem_commands_sources_command.rb +20 -6
- data/test/rubygems/test_gem_commands_uninstall_command.rb +107 -50
- data/test/rubygems/test_gem_commands_update_command.rb +86 -23
- data/test/rubygems/test_gem_commands_yank_command.rb +46 -1
- data/test/rubygems/test_gem_config_file.rb +9 -2
- data/test/rubygems/test_gem_dependency.rb +6 -0
- data/test/rubygems/test_gem_dependency_installer.rb +67 -36
- data/test/rubygems/test_gem_dependency_list.rb +21 -14
- data/test/rubygems/test_gem_ext_builder.rb +5 -1
- data/test/rubygems/test_gem_ext_cmake_builder.rb +2 -0
- data/test/rubygems/test_gem_ext_configure_builder.rb +8 -0
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +12 -0
- data/test/rubygems/test_gem_ext_rake_builder.rb +2 -0
- data/test/rubygems/test_gem_gemcutter_utilities.rb +8 -8
- data/test/rubygems/test_gem_indexer.rb +31 -40
- data/test/rubygems/test_gem_install_update_options.rb +31 -17
- data/test/rubygems/test_gem_installer.rb +383 -223
- data/test/rubygems/test_gem_package.rb +99 -14
- data/test/rubygems/test_gem_package_old.rb +57 -54
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +6 -5
- data/test/rubygems/test_gem_package_tar_writer.rb +11 -6
- data/test/rubygems/test_gem_path_support.rb +19 -13
- data/test/rubygems/test_gem_platform.rb +4 -2
- data/test/rubygems/test_gem_rdoc.rb +1 -0
- data/test/rubygems/test_gem_remote_fetcher.rb +29 -16
- data/test/rubygems/test_gem_request.rb +19 -4
- data/test/rubygems/test_gem_request_connection_pools.rb +6 -2
- data/test/rubygems/test_gem_request_set.rb +33 -8
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +1 -1
- data/test/rubygems/test_gem_request_set_lockfile.rb +1 -0
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +2 -1
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +2 -0
- data/test/rubygems/test_gem_requirement.rb +7 -1
- data/test/rubygems/test_gem_resolver.rb +67 -23
- data/test/rubygems/test_gem_resolver_activation_request.rb +3 -32
- data/test/rubygems/test_gem_resolver_conflict.rb +0 -4
- data/test/rubygems/test_gem_resolver_git_specification.rb +1 -0
- data/test/rubygems/test_gem_resolver_index_specification.rb +7 -2
- data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -1
- data/test/rubygems/test_gem_resolver_installer_set.rb +3 -1
- data/test/rubygems/test_gem_resolver_specification.rb +2 -0
- data/test/rubygems/test_gem_security.rb +6 -2
- data/test/rubygems/test_gem_security_signer.rb +1 -0
- data/test/rubygems/test_gem_server.rb +7 -2
- data/test/rubygems/test_gem_silent_ui.rb +1 -0
- data/test/rubygems/test_gem_source.rb +7 -7
- data/test/rubygems/test_gem_source_fetch_problem.rb +1 -0
- data/test/rubygems/test_gem_source_git.rb +4 -9
- data/test/rubygems/test_gem_source_installed.rb +6 -6
- data/test/rubygems/test_gem_source_list.rb +1 -0
- data/test/rubygems/test_gem_source_local.rb +5 -4
- data/test/rubygems/test_gem_source_lock.rb +12 -12
- data/test/rubygems/test_gem_source_specific_file.rb +7 -6
- data/test/rubygems/test_gem_source_vendor.rb +4 -4
- data/test/rubygems/test_gem_specification.rb +75 -43
- data/test/rubygems/test_gem_stream_ui.rb +2 -0
- data/test/rubygems/test_gem_stub_specification.rb +3 -1
- data/test/rubygems/test_gem_text.rb +1 -0
- data/test/rubygems/test_gem_uninstaller.rb +31 -10
- data/test/rubygems/test_gem_util.rb +6 -4
- data/test/rubygems/test_gem_validator.rb +3 -4
- data/test/rubygems/test_gem_version.rb +16 -8
- data/test/rubygems/test_kernel.rb +1 -0
- data/test/rubygems/test_rake_package.rb +26 -0
- data/test/rubygems/test_remote_fetch_error.rb +1 -0
- data/test/rubygems/test_require.rb +107 -3
- data/util/bisect +31 -0
- data/util/ci.sh +50 -0
- data/util/generate_spdx_license_list.rb +4 -2
- data/util/rubocop +2 -2
- data/util/update_bundled_ca_certificates.rb +3 -1
- metadata +97 -25
- data/appveyor.yml +0 -43
- data/bundler/CONTRIBUTING.md +0 -17
- data/bundler/exe/bundle_ruby +0 -60
- data/bundler/lib/bundler/cli/cache.rb +0 -36
- data/bundler/lib/bundler/compatibility_guard.rb +0 -14
- data/bundler/lib/bundler/ssl_certs/.document +0 -1
- data/bundler/lib/bundler/ssl_certs/certificate_manager.rb +0 -66
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb +0 -27
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb +0 -129
- data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA.pem +0 -21
- data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +0 -21
- data/util/ci +0 -82
@@ -134,6 +134,7 @@ install:
|
|
134
134
|
|
135
135
|
def test_build_extensions_install_ext_only
|
136
136
|
class << Gem
|
137
|
+
|
137
138
|
alias orig_install_extension_in_lib install_extension_in_lib
|
138
139
|
|
139
140
|
remove_method :install_extension_in_lib
|
@@ -141,6 +142,7 @@ install:
|
|
141
142
|
def Gem.install_extension_in_lib
|
142
143
|
false
|
143
144
|
end
|
145
|
+
|
144
146
|
end
|
145
147
|
|
146
148
|
@spec.extensions << 'ext/extconf.rb'
|
@@ -177,9 +179,11 @@ install:
|
|
177
179
|
refute_path_exists File.join @spec.gem_dir, 'lib', 'a', 'b.rb'
|
178
180
|
ensure
|
179
181
|
class << Gem
|
182
|
+
|
180
183
|
remove_method :install_extension_in_lib
|
181
184
|
|
182
185
|
alias install_extension_in_lib orig_install_extension_in_lib
|
186
|
+
|
183
187
|
end
|
184
188
|
end
|
185
189
|
|
@@ -325,4 +329,4 @@ install:
|
|
325
329
|
assert_equal %w[--with-foo-dir=/nonexistent], builder.build_args
|
326
330
|
end
|
327
331
|
|
328
|
-
end
|
332
|
+
end unless Gem.java_platform?
|
@@ -10,6 +10,8 @@ class TestGemExtCmakeBuilder < Gem::TestCase
|
|
10
10
|
# Details: https://github.com/rubygems/rubygems/issues/1270#issuecomment-177368340
|
11
11
|
skip "CmakeBuilder doesn't work on Windows." if Gem.win_platform?
|
12
12
|
|
13
|
+
skip "CmakeBuilder doesn't work on JRuby." if Gem.java_platform? && ENV["CI"]
|
14
|
+
|
13
15
|
system('cmake', out: IO::NULL, err: [:child, :out])
|
14
16
|
|
15
17
|
skip 'cmake not present' unless $?.success?
|
@@ -18,6 +18,10 @@ class TestGemExtConfigureBuilder < Gem::TestCase
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def test_self_build
|
21
|
+
if java_platform? && ENV["CI"]
|
22
|
+
skip("failing on jruby")
|
23
|
+
end
|
24
|
+
|
21
25
|
skip("test_self_build skipped on MS Windows (VC++)") if vc_windows?
|
22
26
|
|
23
27
|
File.open File.join(@ext, './configure'), 'w' do |configure|
|
@@ -45,6 +49,10 @@ class TestGemExtConfigureBuilder < Gem::TestCase
|
|
45
49
|
end
|
46
50
|
|
47
51
|
def test_self_build_fail
|
52
|
+
if java_platform? && ENV["CI"]
|
53
|
+
skip("failing on jruby")
|
54
|
+
end
|
55
|
+
|
48
56
|
skip("test_self_build_fail skipped on MS Windows (VC++)") if vc_windows?
|
49
57
|
output = []
|
50
58
|
|
@@ -17,6 +17,10 @@ class TestGemExtExtConfBuilder < Gem::TestCase
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def test_class_build
|
20
|
+
if java_platform? && ENV["CI"]
|
21
|
+
skip("failing on jruby")
|
22
|
+
end
|
23
|
+
|
20
24
|
if vc_windows? && !nmake_found?
|
21
25
|
skip("test_class_build skipped - nmake not found")
|
22
26
|
end
|
@@ -45,6 +49,10 @@ class TestGemExtExtConfBuilder < Gem::TestCase
|
|
45
49
|
end
|
46
50
|
|
47
51
|
def test_class_build_rbconfig_make_prog
|
52
|
+
if java_platform? && ENV["CI"]
|
53
|
+
skip("failing on jruby")
|
54
|
+
end
|
55
|
+
|
48
56
|
configure_args do
|
49
57
|
|
50
58
|
File.open File.join(@ext, 'extconf.rb'), 'w' do |extconf|
|
@@ -68,6 +76,10 @@ class TestGemExtExtConfBuilder < Gem::TestCase
|
|
68
76
|
env_make = ENV.delete 'MAKE'
|
69
77
|
ENV['MAKE'] = 'anothermake'
|
70
78
|
|
79
|
+
if java_platform? && ENV["CI"]
|
80
|
+
skip("failing on jruby")
|
81
|
+
end
|
82
|
+
|
71
83
|
configure_args '' do
|
72
84
|
File.open File.join(@ext, 'extconf.rb'), 'w' do |extconf|
|
73
85
|
extconf.puts "require 'mkmf'\ncreate_makefile 'foo'"
|
@@ -90,7 +90,7 @@ class TestGemGemcutterUtilities < Gem::TestCase
|
|
90
90
|
end
|
91
91
|
|
92
92
|
def test_sign_in
|
93
|
-
api_key
|
93
|
+
api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
|
94
94
|
util_sign_in [api_key, 200, 'OK']
|
95
95
|
|
96
96
|
assert_match %r{Enter your RubyGems.org credentials.}, @sign_in_ui.output
|
@@ -102,7 +102,7 @@ class TestGemGemcutterUtilities < Gem::TestCase
|
|
102
102
|
end
|
103
103
|
|
104
104
|
def test_sign_in_with_host
|
105
|
-
api_key
|
105
|
+
api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
|
106
106
|
|
107
107
|
util_sign_in [api_key, 200, 'OK'], 'http://example.com', ['http://example.com']
|
108
108
|
|
@@ -116,7 +116,7 @@ class TestGemGemcutterUtilities < Gem::TestCase
|
|
116
116
|
end
|
117
117
|
|
118
118
|
def test_sign_in_with_host_nil
|
119
|
-
api_key
|
119
|
+
api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
|
120
120
|
|
121
121
|
util_sign_in [api_key, 200, 'OK'], nil, [nil]
|
122
122
|
|
@@ -130,7 +130,7 @@ class TestGemGemcutterUtilities < Gem::TestCase
|
|
130
130
|
end
|
131
131
|
|
132
132
|
def test_sign_in_with_host_ENV
|
133
|
-
api_key
|
133
|
+
api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
|
134
134
|
util_sign_in [api_key, 200, 'OK'], 'http://example.com'
|
135
135
|
|
136
136
|
assert_match "Enter your http://example.com credentials.",
|
@@ -143,7 +143,7 @@ class TestGemGemcutterUtilities < Gem::TestCase
|
|
143
143
|
end
|
144
144
|
|
145
145
|
def test_sign_in_skips_with_existing_credentials
|
146
|
-
api_key
|
146
|
+
api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
|
147
147
|
Gem.configuration.rubygems_api_key = api_key
|
148
148
|
|
149
149
|
util_sign_in [api_key, 200, 'OK']
|
@@ -152,8 +152,8 @@ class TestGemGemcutterUtilities < Gem::TestCase
|
|
152
152
|
end
|
153
153
|
|
154
154
|
def test_sign_in_skips_with_key_override
|
155
|
-
api_key
|
156
|
-
Gem.configuration.api_keys[:KEY]
|
155
|
+
api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
|
156
|
+
Gem.configuration.api_keys[:KEY] = 'other'
|
157
157
|
@cmd.options[:key] = :KEY
|
158
158
|
util_sign_in [api_key, 200, 'OK']
|
159
159
|
|
@@ -173,7 +173,7 @@ class TestGemGemcutterUtilities < Gem::TestCase
|
|
173
173
|
assert_match %r{Enter your RubyGems.org credentials.}, @sign_in_ui.output
|
174
174
|
assert_match %r{Signed in.}, @sign_in_ui.output
|
175
175
|
|
176
|
-
credentials
|
176
|
+
credentials = YAML.load_file Gem.configuration.credentials_path
|
177
177
|
assert_equal api_key, credentials[:rubygems_api_key]
|
178
178
|
assert_equal other_api_key, credentials[:other_api_key]
|
179
179
|
end
|
@@ -11,7 +11,6 @@ class TestGemIndexer < Gem::TestCase
|
|
11
11
|
def setup
|
12
12
|
super
|
13
13
|
|
14
|
-
util_clear_gems
|
15
14
|
util_make_gems
|
16
15
|
|
17
16
|
@d2_0 = util_spec 'd', '2.0' do |s|
|
@@ -28,30 +27,23 @@ class TestGemIndexer < Gem::TestCase
|
|
28
27
|
@default = new_default_spec 'default', 2
|
29
28
|
install_default_gems @default
|
30
29
|
|
31
|
-
@
|
30
|
+
@indexerdir = File.join(@tempdir, 'indexer')
|
32
31
|
|
33
|
-
gems = File.join(@
|
32
|
+
gems = File.join(@indexerdir, 'gems')
|
34
33
|
FileUtils.mkdir_p gems
|
35
34
|
FileUtils.mv Dir[File.join(@gemhome, "cache", '*.gem')], gems
|
36
35
|
|
37
|
-
@indexer = Gem::Indexer.new(@
|
38
|
-
end
|
39
|
-
|
40
|
-
def teardown
|
41
|
-
super
|
42
|
-
|
43
|
-
util_clear_gems
|
44
|
-
util_clear_default_gems
|
36
|
+
@indexer = Gem::Indexer.new(@indexerdir)
|
45
37
|
end
|
46
38
|
|
47
39
|
def test_initialize
|
48
|
-
assert_equal @
|
40
|
+
assert_equal @indexerdir, @indexer.dest_directory
|
49
41
|
assert_match %r{#{Dir.mktmpdir('gem_generate_index').match(/.*-/)}}, @indexer.directory
|
50
42
|
|
51
|
-
indexer = Gem::Indexer.new @
|
43
|
+
indexer = Gem::Indexer.new @indexerdir
|
52
44
|
assert indexer.build_modern
|
53
45
|
|
54
|
-
indexer = Gem::Indexer.new @
|
46
|
+
indexer = Gem::Indexer.new @indexerdir, :build_modern => true
|
55
47
|
assert indexer.build_modern
|
56
48
|
end
|
57
49
|
|
@@ -100,7 +92,7 @@ class TestGemIndexer < Gem::TestCase
|
|
100
92
|
@indexer.generate_index
|
101
93
|
end
|
102
94
|
|
103
|
-
quickdir = File.join @
|
95
|
+
quickdir = File.join @indexerdir, 'quick'
|
104
96
|
marshal_quickdir = File.join quickdir, "Marshal.#{@marshal_version}"
|
105
97
|
|
106
98
|
assert_directory_exists quickdir
|
@@ -111,11 +103,11 @@ class TestGemIndexer < Gem::TestCase
|
|
111
103
|
|
112
104
|
refute_indexed marshal_quickdir, File.basename(@c1_2.spec_file)
|
113
105
|
|
114
|
-
assert_indexed @
|
115
|
-
assert_indexed @
|
106
|
+
assert_indexed @indexerdir, "specs.#{@marshal_version}"
|
107
|
+
assert_indexed @indexerdir, "specs.#{@marshal_version}.gz"
|
116
108
|
|
117
|
-
assert_indexed @
|
118
|
-
assert_indexed @
|
109
|
+
assert_indexed @indexerdir, "latest_specs.#{@marshal_version}"
|
110
|
+
assert_indexed @indexerdir, "latest_specs.#{@marshal_version}.gz"
|
119
111
|
end
|
120
112
|
|
121
113
|
def test_generate_index_modern
|
@@ -125,12 +117,12 @@ class TestGemIndexer < Gem::TestCase
|
|
125
117
|
@indexer.generate_index
|
126
118
|
end
|
127
119
|
|
128
|
-
refute_indexed @
|
129
|
-
refute_indexed @
|
130
|
-
refute_indexed @
|
131
|
-
refute_indexed @
|
120
|
+
refute_indexed @indexerdir, 'yaml'
|
121
|
+
refute_indexed @indexerdir, 'yaml.Z'
|
122
|
+
refute_indexed @indexerdir, "Marshal.#{@marshal_version}"
|
123
|
+
refute_indexed @indexerdir, "Marshal.#{@marshal_version}.Z"
|
132
124
|
|
133
|
-
quickdir = File.join @
|
125
|
+
quickdir = File.join @indexerdir, 'quick'
|
134
126
|
marshal_quickdir = File.join quickdir, "Marshal.#{@marshal_version}"
|
135
127
|
|
136
128
|
assert_directory_exists quickdir, 'quickdir should be directory'
|
@@ -156,11 +148,11 @@ class TestGemIndexer < Gem::TestCase
|
|
156
148
|
refute_indexed quickdir, "#{File.basename(@c1_2.spec_file)}"
|
157
149
|
refute_indexed marshal_quickdir, "#{File.basename(@c1_2.spec_file)}"
|
158
150
|
|
159
|
-
assert_indexed @
|
160
|
-
assert_indexed @
|
151
|
+
assert_indexed @indexerdir, "specs.#{@marshal_version}"
|
152
|
+
assert_indexed @indexerdir, "specs.#{@marshal_version}.gz"
|
161
153
|
|
162
|
-
assert_indexed @
|
163
|
-
assert_indexed @
|
154
|
+
assert_indexed @indexerdir, "latest_specs.#{@marshal_version}"
|
155
|
+
assert_indexed @indexerdir, "latest_specs.#{@marshal_version}.gz"
|
164
156
|
end
|
165
157
|
|
166
158
|
def test_generate_index_modern_back_to_back
|
@@ -170,13 +162,13 @@ class TestGemIndexer < Gem::TestCase
|
|
170
162
|
@indexer.generate_index
|
171
163
|
end
|
172
164
|
|
173
|
-
@indexer = Gem::Indexer.new @
|
165
|
+
@indexer = Gem::Indexer.new @indexerdir
|
174
166
|
@indexer.build_modern = true
|
175
167
|
|
176
168
|
use_ui @ui do
|
177
169
|
@indexer.generate_index
|
178
170
|
end
|
179
|
-
quickdir = File.join @
|
171
|
+
quickdir = File.join @indexerdir, 'quick'
|
180
172
|
marshal_quickdir = File.join quickdir, "Marshal.#{@marshal_version}"
|
181
173
|
|
182
174
|
assert_directory_exists quickdir
|
@@ -185,11 +177,11 @@ class TestGemIndexer < Gem::TestCase
|
|
185
177
|
assert_indexed marshal_quickdir, "#{File.basename(@a1.spec_file)}.rz"
|
186
178
|
assert_indexed marshal_quickdir, "#{File.basename(@a2.spec_file)}.rz"
|
187
179
|
|
188
|
-
assert_indexed @
|
189
|
-
assert_indexed @
|
180
|
+
assert_indexed @indexerdir, "specs.#{@marshal_version}"
|
181
|
+
assert_indexed @indexerdir, "specs.#{@marshal_version}.gz"
|
190
182
|
|
191
|
-
assert_indexed @
|
192
|
-
assert_indexed @
|
183
|
+
assert_indexed @indexerdir, "latest_specs.#{@marshal_version}"
|
184
|
+
assert_indexed @indexerdir, "latest_specs.#{@marshal_version}.gz"
|
193
185
|
end
|
194
186
|
|
195
187
|
def test_generate_index_ui
|
@@ -215,7 +207,7 @@ class TestGemIndexer < Gem::TestCase
|
|
215
207
|
@indexer.generate_index
|
216
208
|
end
|
217
209
|
|
218
|
-
specs_path = File.join @
|
210
|
+
specs_path = File.join @indexerdir, "specs.#{@marshal_version}"
|
219
211
|
|
220
212
|
specs_dump = Gem.read_binary specs_path
|
221
213
|
specs = Marshal.load specs_dump
|
@@ -252,7 +244,7 @@ class TestGemIndexer < Gem::TestCase
|
|
252
244
|
@indexer.generate_index
|
253
245
|
end
|
254
246
|
|
255
|
-
latest_specs_path = File.join @
|
247
|
+
latest_specs_path = File.join @indexerdir, "latest_specs.#{@marshal_version}"
|
256
248
|
|
257
249
|
latest_specs_dump = Gem.read_binary latest_specs_path
|
258
250
|
latest_specs = Marshal.load latest_specs_dump
|
@@ -282,7 +274,7 @@ class TestGemIndexer < Gem::TestCase
|
|
282
274
|
@indexer.generate_index
|
283
275
|
end
|
284
276
|
|
285
|
-
prerelease_specs_path = File.join @
|
277
|
+
prerelease_specs_path = File.join @indexerdir, "prerelease_specs.#{@marshal_version}"
|
286
278
|
|
287
279
|
prerelease_specs_dump = Gem.read_binary prerelease_specs_path
|
288
280
|
prerelease_specs = Marshal.load prerelease_specs_dump
|
@@ -306,13 +298,12 @@ class TestGemIndexer < Gem::TestCase
|
|
306
298
|
util_remove_gem sys_gem
|
307
299
|
end
|
308
300
|
|
309
|
-
|
310
301
|
def test_update_index
|
311
302
|
use_ui @ui do
|
312
303
|
@indexer.generate_index
|
313
304
|
end
|
314
305
|
|
315
|
-
quickdir = File.join @
|
306
|
+
quickdir = File.join @indexerdir, 'quick'
|
316
307
|
marshal_quickdir = File.join quickdir, "Marshal.#{@marshal_version}"
|
317
308
|
|
318
309
|
assert_directory_exists quickdir
|
@@ -326,7 +317,7 @@ class TestGemIndexer < Gem::TestCase
|
|
326
317
|
util_build_gem @d2_1_a
|
327
318
|
@d2_1_a_tuple = [@d2_1_a.name, @d2_1_a.version, @d2_1_a.original_platform]
|
328
319
|
|
329
|
-
gems = File.join @
|
320
|
+
gems = File.join @indexerdir, 'gems'
|
330
321
|
|
331
322
|
FileUtils.mv @d2_1.cache_file, gems
|
332
323
|
FileUtils.mv @d2_1_a.cache_file, gems
|
@@ -26,10 +26,11 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
|
|
26
26
|
-f
|
27
27
|
-i /install_to
|
28
28
|
-w
|
29
|
-
--vendor
|
30
29
|
--post-install-message
|
31
30
|
]
|
32
31
|
|
32
|
+
args.concat %w[--vendor] unless Gem.java_platform?
|
33
|
+
|
33
34
|
args.concat %w[-P HighSecurity] if defined?(OpenSSL::SSL)
|
34
35
|
|
35
36
|
assert @cmd.handles?(args)
|
@@ -111,6 +112,13 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
|
|
111
112
|
end
|
112
113
|
|
113
114
|
def test_user_install_enabled
|
115
|
+
@spec = quick_gem 'a' do |spec|
|
116
|
+
util_make_exec spec
|
117
|
+
end
|
118
|
+
|
119
|
+
util_build_gem @spec
|
120
|
+
@gem = @spec.cache_file
|
121
|
+
|
114
122
|
@cmd.handle_options %w[--user-install]
|
115
123
|
|
116
124
|
assert @cmd.options[:user_install]
|
@@ -122,6 +130,13 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
|
|
122
130
|
end
|
123
131
|
|
124
132
|
def test_user_install_disabled_read_only
|
133
|
+
@spec = quick_gem 'a' do |spec|
|
134
|
+
util_make_exec spec
|
135
|
+
end
|
136
|
+
|
137
|
+
util_build_gem @spec
|
138
|
+
@gem = @spec.cache_file
|
139
|
+
|
125
140
|
if win_platform?
|
126
141
|
skip('test_user_install_disabled_read_only test skipped on MS Windows')
|
127
142
|
elsif Process.uid.zero?
|
@@ -145,28 +160,26 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
|
|
145
160
|
end
|
146
161
|
|
147
162
|
def test_vendor
|
148
|
-
@
|
163
|
+
vendordir(File.join(@tempdir, 'vendor')) do
|
164
|
+
@cmd.handle_options %w[--vendor]
|
149
165
|
|
150
|
-
|
151
|
-
|
166
|
+
assert @cmd.options[:vendor]
|
167
|
+
assert_equal Gem.vendor_dir, @cmd.options[:install_dir]
|
168
|
+
end
|
152
169
|
end
|
153
170
|
|
154
171
|
def test_vendor_missing
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
@cmd.handle_options %w[--vendor]
|
160
|
-
end
|
161
|
-
|
162
|
-
assert_equal 'invalid option: --vendor your platform is not supported',
|
163
|
-
e.message
|
172
|
+
vendordir(nil) do
|
173
|
+
e = assert_raises OptionParser::InvalidOption do
|
174
|
+
@cmd.handle_options %w[--vendor]
|
175
|
+
end
|
164
176
|
|
165
|
-
|
166
|
-
|
177
|
+
assert_equal 'invalid option: --vendor your platform is not supported',
|
178
|
+
e.message
|
167
179
|
|
168
|
-
|
169
|
-
|
180
|
+
refute @cmd.options[:vendor]
|
181
|
+
refute @cmd.options[:install_dir]
|
182
|
+
end
|
170
183
|
end
|
171
184
|
|
172
185
|
def test_post_install_message_no
|
@@ -180,4 +193,5 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
|
|
180
193
|
|
181
194
|
assert_equal true, @cmd.options[:post_install_message]
|
182
195
|
end
|
196
|
+
|
183
197
|
end
|
@@ -2,6 +2,7 @@
|
|
2
2
|
require 'rubygems/installer_test_case'
|
3
3
|
|
4
4
|
class TestGemInstaller < Gem::InstallerTestCase
|
5
|
+
|
5
6
|
@@symlink_supported = nil
|
6
7
|
|
7
8
|
def symlink_supported?
|
@@ -21,11 +22,6 @@ class TestGemInstaller < Gem::InstallerTestCase
|
|
21
22
|
super
|
22
23
|
common_installer_setup
|
23
24
|
|
24
|
-
if (self.class.method_defined?(:__name__) ? __name__ : name) =~ /\Atest_install(_|\Z)/
|
25
|
-
FileUtils.rm_r @spec.gem_dir
|
26
|
-
FileUtils.rm_r @user_spec.gem_dir
|
27
|
-
end
|
28
|
-
|
29
25
|
@config = Gem.configuration
|
30
26
|
end
|
31
27
|
|
@@ -38,6 +34,8 @@ class TestGemInstaller < Gem::InstallerTestCase
|
|
38
34
|
end
|
39
35
|
|
40
36
|
def test_app_script_text
|
37
|
+
installer = setup_base_installer
|
38
|
+
|
41
39
|
util_make_exec @spec, ''
|
42
40
|
|
43
41
|
expected = <<-EOF
|
@@ -70,12 +68,14 @@ load Gem.bin_path("a", "executable", version)
|
|
70
68
|
end
|
71
69
|
EOF
|
72
70
|
|
73
|
-
wrapper =
|
71
|
+
wrapper = installer.app_script_text 'executable'
|
74
72
|
assert_equal expected, wrapper
|
75
73
|
end
|
76
74
|
|
77
75
|
def test_check_executable_overwrite
|
78
|
-
|
76
|
+
installer = setup_base_installer
|
77
|
+
|
78
|
+
installer.generate_bin
|
79
79
|
|
80
80
|
@spec = Gem::Specification.new do |s|
|
81
81
|
s.files = ['lib/code.rb']
|
@@ -87,9 +87,9 @@ end
|
|
87
87
|
end
|
88
88
|
|
89
89
|
util_make_exec
|
90
|
-
|
91
|
-
|
92
|
-
|
90
|
+
installer.gem_dir = @spec.gem_dir
|
91
|
+
installer.wrappers = true
|
92
|
+
installer.generate_bin
|
93
93
|
|
94
94
|
installed_exec = File.join util_inst_bindir, 'executable'
|
95
95
|
assert_path_exists installed_exec
|
@@ -99,6 +99,8 @@ end
|
|
99
99
|
end
|
100
100
|
|
101
101
|
def test_check_executable_overwrite_default_bin_dir
|
102
|
+
installer = setup_base_installer
|
103
|
+
|
102
104
|
if defined?(RUBY_FRAMEWORK_VERSION)
|
103
105
|
orig_RUBY_FRAMEWORK_VERSION = RUBY_FRAMEWORK_VERSION
|
104
106
|
Object.send :remove_const, :RUBY_FRAMEWORK_VERSION
|
@@ -111,7 +113,7 @@ end
|
|
111
113
|
ui = Gem::MockGemUi.new "n\n"
|
112
114
|
use_ui ui do
|
113
115
|
e = assert_raises Gem::InstallError do
|
114
|
-
|
116
|
+
installer.generate_bin
|
115
117
|
end
|
116
118
|
|
117
119
|
conflicted = File.join @gemhome, 'bin', 'executable'
|
@@ -129,7 +131,9 @@ end
|
|
129
131
|
end
|
130
132
|
|
131
133
|
def test_check_executable_overwrite_format_executable
|
132
|
-
|
134
|
+
installer = setup_base_installer
|
135
|
+
|
136
|
+
installer.generate_bin
|
133
137
|
|
134
138
|
@spec = Gem::Specification.new do |s|
|
135
139
|
s.files = ['lib/code.rb']
|
@@ -152,11 +156,11 @@ gem 'other', version
|
|
152
156
|
|
153
157
|
util_make_exec
|
154
158
|
Gem::Installer.exec_format = 'foo-%s-bar'
|
155
|
-
|
156
|
-
|
157
|
-
|
159
|
+
installer.gem_dir = @spec.gem_dir
|
160
|
+
installer.wrappers = true
|
161
|
+
installer.format_executable = true
|
158
162
|
|
159
|
-
|
163
|
+
installer.generate_bin # should not raise
|
160
164
|
|
161
165
|
installed_exec = File.join util_inst_bindir, 'foo-executable-bar'
|
162
166
|
assert_path_exists installed_exec
|
@@ -168,13 +172,15 @@ gem 'other', version
|
|
168
172
|
end
|
169
173
|
|
170
174
|
def test_check_executable_overwrite_other_gem
|
175
|
+
installer = setup_base_installer
|
176
|
+
|
171
177
|
util_conflict_executable true
|
172
178
|
|
173
179
|
ui = Gem::MockGemUi.new "n\n"
|
174
180
|
|
175
181
|
use_ui ui do
|
176
182
|
e = assert_raises Gem::InstallError do
|
177
|
-
|
183
|
+
installer.generate_bin
|
178
184
|
end
|
179
185
|
|
180
186
|
assert_equal '"executable" from a conflicts with installed executable from conflict',
|
@@ -183,11 +189,13 @@ gem 'other', version
|
|
183
189
|
end
|
184
190
|
|
185
191
|
def test_check_executable_overwrite_other_gem_force
|
192
|
+
installer = setup_base_installer
|
193
|
+
|
186
194
|
util_conflict_executable true
|
187
|
-
|
188
|
-
|
195
|
+
installer.wrappers = true
|
196
|
+
installer.force = true
|
189
197
|
|
190
|
-
|
198
|
+
installer.generate_bin
|
191
199
|
|
192
200
|
installed_exec = File.join util_inst_bindir, 'executable'
|
193
201
|
assert_path_exists installed_exec
|
@@ -197,10 +205,12 @@ gem 'other', version
|
|
197
205
|
end
|
198
206
|
|
199
207
|
def test_check_executable_overwrite_other_non_gem
|
208
|
+
installer = setup_base_installer
|
209
|
+
|
200
210
|
util_conflict_executable false
|
201
|
-
|
211
|
+
installer.wrappers = true
|
202
212
|
|
203
|
-
|
213
|
+
installer.generate_bin
|
204
214
|
|
205
215
|
installed_exec = File.join util_inst_bindir, 'executable'
|
206
216
|
assert_path_exists installed_exec
|
@@ -210,7 +220,9 @@ gem 'other', version
|
|
210
220
|
end unless Gem.win_platform?
|
211
221
|
|
212
222
|
def test_check_that_user_bin_dir_is_in_path
|
213
|
-
|
223
|
+
installer = setup_base_installer
|
224
|
+
|
225
|
+
bin_dir = installer.bin_dir
|
214
226
|
|
215
227
|
if Gem.win_platform?
|
216
228
|
bin_dir = bin_dir.downcase.gsub(File::SEPARATOR, File::ALT_SEPARATOR)
|
@@ -220,7 +232,7 @@ gem 'other', version
|
|
220
232
|
ENV['PATH'], [ENV['PATH'], bin_dir].join(File::PATH_SEPARATOR)
|
221
233
|
|
222
234
|
use_ui @ui do
|
223
|
-
|
235
|
+
installer.check_that_user_bin_dir_is_in_path
|
224
236
|
end
|
225
237
|
|
226
238
|
assert_empty @ui.error
|
@@ -234,10 +246,11 @@ gem 'other', version
|
|
234
246
|
orig_PATH, ENV['PATH'] =
|
235
247
|
ENV['PATH'], [ENV['PATH'], '~/bin'].join(File::PATH_SEPARATOR)
|
236
248
|
|
237
|
-
|
249
|
+
installer = setup_base_installer
|
250
|
+
installer.bin_dir.replace File.join @userhome, 'bin'
|
238
251
|
|
239
252
|
use_ui @ui do
|
240
|
-
|
253
|
+
installer.check_that_user_bin_dir_is_in_path
|
241
254
|
end
|
242
255
|
|
243
256
|
assert_empty @ui.error
|
@@ -246,11 +259,13 @@ gem 'other', version
|
|
246
259
|
end
|
247
260
|
|
248
261
|
def test_check_that_user_bin_dir_is_in_path_not_in_path
|
262
|
+
installer = setup_base_installer
|
263
|
+
|
249
264
|
use_ui @ui do
|
250
|
-
|
265
|
+
installer.check_that_user_bin_dir_is_in_path
|
251
266
|
end
|
252
267
|
|
253
|
-
expected =
|
268
|
+
expected = installer.bin_dir
|
254
269
|
|
255
270
|
if Gem.win_platform?
|
256
271
|
expected = expected.downcase.gsub(File::SEPARATOR, File::ALT_SEPARATOR)
|
@@ -260,14 +275,16 @@ gem 'other', version
|
|
260
275
|
end
|
261
276
|
|
262
277
|
def test_ensure_dependency
|
278
|
+
installer = setup_base_installer
|
279
|
+
|
263
280
|
util_spec 'a'
|
264
281
|
|
265
282
|
dep = Gem::Dependency.new 'a', '>= 2'
|
266
|
-
assert
|
283
|
+
assert installer.ensure_dependency(@spec, dep)
|
267
284
|
|
268
285
|
dep = Gem::Dependency.new 'b', '> 2'
|
269
286
|
e = assert_raises Gem::InstallError do
|
270
|
-
|
287
|
+
installer.ensure_dependency @spec, dep
|
271
288
|
end
|
272
289
|
|
273
290
|
assert_equal 'a requires b (> 2)', e.message
|
@@ -304,28 +321,32 @@ gem 'other', version
|
|
304
321
|
end
|
305
322
|
|
306
323
|
def test_extract_files
|
307
|
-
|
324
|
+
installer = setup_base_installer
|
325
|
+
|
326
|
+
installer.extract_files
|
308
327
|
|
309
328
|
assert_path_exists File.join @spec.gem_dir, 'bin/executable'
|
310
329
|
end
|
311
330
|
|
312
331
|
def test_generate_bin_bindir
|
313
|
-
|
332
|
+
installer = setup_base_installer
|
333
|
+
|
334
|
+
installer.wrappers = true
|
314
335
|
|
315
336
|
@spec.executables = %w[executable]
|
316
337
|
@spec.bindir = 'bin'
|
317
338
|
|
318
|
-
exec_file =
|
339
|
+
exec_file = installer.formatted_program_filename 'executable'
|
319
340
|
exec_path = File.join @spec.gem_dir, exec_file
|
320
341
|
File.open exec_path, 'w' do |f|
|
321
342
|
f.puts '#!/usr/bin/ruby'
|
322
343
|
end
|
323
344
|
|
324
|
-
|
345
|
+
installer.gem_dir = @spec.gem_dir
|
325
346
|
|
326
|
-
|
347
|
+
installer.generate_bin
|
327
348
|
|
328
|
-
assert_directory_exists
|
349
|
+
assert_directory_exists util_inst_bindir
|
329
350
|
installed_exec = File.join(util_inst_bindir, 'executable')
|
330
351
|
assert_path_exists installed_exec
|
331
352
|
assert_equal mask, File.stat(installed_exec).mode unless win_platform?
|
@@ -361,11 +382,13 @@ gem 'other', version
|
|
361
382
|
end
|
362
383
|
|
363
384
|
def test_generate_bin_script
|
364
|
-
|
385
|
+
installer = setup_base_installer
|
386
|
+
|
387
|
+
installer.wrappers = true
|
365
388
|
util_make_exec
|
366
|
-
|
389
|
+
installer.gem_dir = @spec.gem_dir
|
367
390
|
|
368
|
-
|
391
|
+
installer.generate_bin
|
369
392
|
assert_directory_exists util_inst_bindir
|
370
393
|
installed_exec = File.join util_inst_bindir, 'executable'
|
371
394
|
assert_path_exists installed_exec
|
@@ -376,13 +399,15 @@ gem 'other', version
|
|
376
399
|
end
|
377
400
|
|
378
401
|
def test_generate_bin_script_format
|
379
|
-
|
380
|
-
|
402
|
+
installer = setup_base_installer
|
403
|
+
|
404
|
+
installer.format_executable = true
|
405
|
+
installer.wrappers = true
|
381
406
|
util_make_exec
|
382
|
-
|
407
|
+
installer.gem_dir = @spec.gem_dir
|
383
408
|
|
384
409
|
Gem::Installer.exec_format = 'foo-%s-bar'
|
385
|
-
|
410
|
+
installer.generate_bin
|
386
411
|
assert_directory_exists util_inst_bindir
|
387
412
|
installed_exec = File.join util_inst_bindir, 'foo-executable-bar'
|
388
413
|
assert_path_exists installed_exec
|
@@ -391,12 +416,14 @@ gem 'other', version
|
|
391
416
|
end
|
392
417
|
|
393
418
|
def test_generate_bin_script_format_disabled
|
394
|
-
|
419
|
+
installer = setup_base_installer
|
420
|
+
|
421
|
+
installer.wrappers = true
|
395
422
|
util_make_exec
|
396
|
-
|
423
|
+
installer.gem_dir = @spec.gem_dir
|
397
424
|
|
398
425
|
Gem::Installer.exec_format = 'foo-%s-bar'
|
399
|
-
|
426
|
+
installer.generate_bin
|
400
427
|
assert_directory_exists util_inst_bindir
|
401
428
|
installed_exec = File.join util_inst_bindir, 'executable'
|
402
429
|
assert_path_exists installed_exec
|
@@ -405,7 +432,9 @@ gem 'other', version
|
|
405
432
|
end
|
406
433
|
|
407
434
|
def test_generate_bin_script_install_dir
|
408
|
-
|
435
|
+
installer = setup_base_installer
|
436
|
+
|
437
|
+
installer.wrappers = true
|
409
438
|
|
410
439
|
gem_dir = File.join("#{@gemhome}2", "gems", @spec.full_name)
|
411
440
|
gem_bindir = File.join gem_dir, 'bin'
|
@@ -414,11 +443,11 @@ gem 'other', version
|
|
414
443
|
f.puts "#!/bin/ruby"
|
415
444
|
end
|
416
445
|
|
417
|
-
|
418
|
-
|
419
|
-
|
446
|
+
installer.gem_home = "#{@gemhome}2"
|
447
|
+
installer.gem_dir = gem_dir
|
448
|
+
installer.bin_dir = File.join "#{@gemhome}2", 'bin'
|
420
449
|
|
421
|
-
|
450
|
+
installer.generate_bin
|
422
451
|
|
423
452
|
installed_exec = File.join("#{@gemhome}2", "bin", 'executable')
|
424
453
|
assert_path_exists installed_exec
|
@@ -429,16 +458,20 @@ gem 'other', version
|
|
429
458
|
end
|
430
459
|
|
431
460
|
def test_generate_bin_script_no_execs
|
432
|
-
|
461
|
+
installer = setup_base_installer
|
462
|
+
|
463
|
+
installer = util_execless
|
433
464
|
|
434
|
-
|
435
|
-
|
465
|
+
installer.wrappers = true
|
466
|
+
installer.generate_bin
|
436
467
|
|
437
468
|
refute_path_exists util_inst_bindir, 'bin dir was created when not needed'
|
438
469
|
end
|
439
470
|
|
440
471
|
def test_generate_bin_script_no_perms
|
441
|
-
|
472
|
+
installer = setup_base_installer
|
473
|
+
|
474
|
+
installer.wrappers = true
|
442
475
|
util_make_exec
|
443
476
|
|
444
477
|
Dir.mkdir util_inst_bindir
|
@@ -451,7 +484,7 @@ gem 'other', version
|
|
451
484
|
FileUtils.chmod 0000, util_inst_bindir
|
452
485
|
|
453
486
|
assert_raises Gem::FilePermissionError do
|
454
|
-
|
487
|
+
installer.generate_bin
|
455
488
|
end
|
456
489
|
end
|
457
490
|
ensure
|
@@ -459,7 +492,9 @@ gem 'other', version
|
|
459
492
|
end
|
460
493
|
|
461
494
|
def test_generate_bin_script_no_shebang
|
462
|
-
|
495
|
+
installer = setup_base_installer
|
496
|
+
|
497
|
+
installer.wrappers = true
|
463
498
|
@spec.executables = %w[executable]
|
464
499
|
|
465
500
|
gem_dir = File.join @gemhome, 'gems', @spec.full_name
|
@@ -469,7 +504,7 @@ gem 'other', version
|
|
469
504
|
f.puts "blah blah blah"
|
470
505
|
end
|
471
506
|
|
472
|
-
|
507
|
+
installer.generate_bin
|
473
508
|
|
474
509
|
installed_exec = File.join @gemhome, 'bin', 'executable'
|
475
510
|
assert_path_exists installed_exec
|
@@ -482,9 +517,11 @@ gem 'other', version
|
|
482
517
|
end
|
483
518
|
|
484
519
|
def test_generate_bin_script_wrappers
|
485
|
-
|
520
|
+
installer = setup_base_installer
|
521
|
+
|
522
|
+
installer.wrappers = true
|
486
523
|
util_make_exec
|
487
|
-
|
524
|
+
installer.gem_dir = @spec.gem_dir
|
488
525
|
installed_exec = File.join(util_inst_bindir, 'executable')
|
489
526
|
|
490
527
|
real_exec = File.join @spec.gem_dir, 'bin', 'executable'
|
@@ -495,7 +532,7 @@ gem 'other', version
|
|
495
532
|
FileUtils.ln_s real_exec, installed_exec
|
496
533
|
end
|
497
534
|
|
498
|
-
|
535
|
+
installer.generate_bin
|
499
536
|
assert_directory_exists util_inst_bindir
|
500
537
|
assert_path_exists installed_exec
|
501
538
|
assert_equal mask, File.stat(installed_exec).mode unless win_platform?
|
@@ -509,11 +546,13 @@ gem 'other', version
|
|
509
546
|
def test_generate_bin_symlink
|
510
547
|
return if win_platform? #Windows FS do not support symlinks
|
511
548
|
|
512
|
-
|
549
|
+
installer = setup_base_installer
|
550
|
+
|
551
|
+
installer.wrappers = false
|
513
552
|
util_make_exec
|
514
|
-
|
553
|
+
installer.gem_dir = @spec.gem_dir
|
515
554
|
|
516
|
-
|
555
|
+
installer.generate_bin
|
517
556
|
assert_directory_exists util_inst_bindir
|
518
557
|
installed_exec = File.join util_inst_bindir, 'executable'
|
519
558
|
assert_equal true, File.symlink?(installed_exec)
|
@@ -522,18 +561,22 @@ gem 'other', version
|
|
522
561
|
end
|
523
562
|
|
524
563
|
def test_generate_bin_symlink_no_execs
|
525
|
-
|
564
|
+
installer = setup_base_installer
|
565
|
+
|
566
|
+
installer = util_execless
|
526
567
|
|
527
|
-
|
528
|
-
|
568
|
+
installer.wrappers = false
|
569
|
+
installer.generate_bin
|
529
570
|
|
530
571
|
refute_path_exists util_inst_bindir
|
531
572
|
end
|
532
573
|
|
533
574
|
def test_generate_bin_symlink_no_perms
|
534
|
-
|
575
|
+
installer = setup_base_installer
|
576
|
+
|
577
|
+
installer.wrappers = false
|
535
578
|
util_make_exec
|
536
|
-
|
579
|
+
installer.gem_dir = @spec.gem_dir
|
537
580
|
|
538
581
|
Dir.mkdir util_inst_bindir
|
539
582
|
|
@@ -545,7 +588,7 @@ gem 'other', version
|
|
545
588
|
FileUtils.chmod 0000, util_inst_bindir
|
546
589
|
|
547
590
|
assert_raises Gem::FilePermissionError do
|
548
|
-
|
591
|
+
installer.generate_bin
|
549
592
|
end
|
550
593
|
end
|
551
594
|
ensure
|
@@ -555,11 +598,13 @@ gem 'other', version
|
|
555
598
|
def test_generate_bin_symlink_update_newer
|
556
599
|
return if win_platform? #Windows FS do not support symlinks
|
557
600
|
|
558
|
-
|
601
|
+
installer = setup_base_installer
|
602
|
+
|
603
|
+
installer.wrappers = false
|
559
604
|
util_make_exec
|
560
|
-
|
605
|
+
installer.gem_dir = @spec.gem_dir
|
561
606
|
|
562
|
-
|
607
|
+
installer.generate_bin
|
563
608
|
installed_exec = File.join(util_inst_bindir, 'executable')
|
564
609
|
assert_equal(File.join(@spec.gem_dir, 'bin', 'executable'),
|
565
610
|
File.readlink(installed_exec))
|
@@ -574,8 +619,8 @@ gem 'other', version
|
|
574
619
|
end
|
575
620
|
|
576
621
|
util_make_exec
|
577
|
-
|
578
|
-
|
622
|
+
installer.gem_dir = @spec.gem_dir
|
623
|
+
installer.generate_bin
|
579
624
|
installed_exec = File.join(util_inst_bindir, 'executable')
|
580
625
|
assert_equal(@spec.bin_file('executable'),
|
581
626
|
File.readlink(installed_exec),
|
@@ -585,11 +630,13 @@ gem 'other', version
|
|
585
630
|
def test_generate_bin_symlink_update_older
|
586
631
|
return if !symlink_supported?
|
587
632
|
|
588
|
-
|
633
|
+
installer = setup_base_installer
|
634
|
+
|
635
|
+
installer.wrappers = false
|
589
636
|
util_make_exec
|
590
|
-
|
637
|
+
installer.gem_dir = @spec.gem_dir
|
591
638
|
|
592
|
-
|
639
|
+
installer.generate_bin
|
593
640
|
installed_exec = File.join(util_inst_bindir, 'executable')
|
594
641
|
assert_equal(File.join(@spec.gem_dir, 'bin', 'executable'),
|
595
642
|
File.readlink(installed_exec))
|
@@ -606,10 +653,10 @@ gem 'other', version
|
|
606
653
|
util_make_exec
|
607
654
|
one = @spec.dup
|
608
655
|
one.version = 1
|
609
|
-
|
610
|
-
|
656
|
+
installer = Gem::Installer.for_spec spec
|
657
|
+
installer.gem_dir = one.gem_dir
|
611
658
|
|
612
|
-
|
659
|
+
installer.generate_bin
|
613
660
|
|
614
661
|
installed_exec = File.join util_inst_bindir, 'executable'
|
615
662
|
expected = File.join @spec.gem_dir, 'bin', 'executable'
|
@@ -621,11 +668,13 @@ gem 'other', version
|
|
621
668
|
def test_generate_bin_symlink_update_remove_wrapper
|
622
669
|
return if !symlink_supported?
|
623
670
|
|
624
|
-
|
671
|
+
installer = setup_base_installer
|
672
|
+
|
673
|
+
installer.wrappers = true
|
625
674
|
util_make_exec
|
626
|
-
|
675
|
+
installer.gem_dir = @spec.gem_dir
|
627
676
|
|
628
|
-
|
677
|
+
installer.generate_bin
|
629
678
|
|
630
679
|
installed_exec = File.join util_inst_bindir, 'executable'
|
631
680
|
assert_path_exists installed_exec
|
@@ -641,10 +690,10 @@ gem 'other', version
|
|
641
690
|
util_make_exec
|
642
691
|
|
643
692
|
util_installer @spec, @gemhome
|
644
|
-
|
645
|
-
|
693
|
+
installer.wrappers = false
|
694
|
+
installer.gem_dir = @spec.gem_dir
|
646
695
|
|
647
|
-
|
696
|
+
installer.generate_bin
|
648
697
|
|
649
698
|
installed_exec = File.join util_inst_bindir, 'executable'
|
650
699
|
assert_equal(@spec.bin_file('executable'),
|
@@ -658,12 +707,15 @@ gem 'other', version
|
|
658
707
|
old_alt_separator = File::ALT_SEPARATOR
|
659
708
|
File.__send__(:remove_const, :ALT_SEPARATOR)
|
660
709
|
File.const_set(:ALT_SEPARATOR, '\\')
|
661
|
-
|
710
|
+
|
711
|
+
installer = setup_base_installer
|
712
|
+
|
713
|
+
installer.wrappers = false
|
662
714
|
util_make_exec
|
663
|
-
|
715
|
+
installer.gem_dir = @spec.gem_dir
|
664
716
|
|
665
717
|
use_ui @ui do
|
666
|
-
|
718
|
+
installer.generate_bin
|
667
719
|
end
|
668
720
|
|
669
721
|
assert_directory_exists util_inst_bindir
|
@@ -689,10 +741,12 @@ gem 'other', version
|
|
689
741
|
def test_generate_bin_uses_default_shebang
|
690
742
|
return if !symlink_supported?
|
691
743
|
|
692
|
-
|
744
|
+
installer = setup_base_installer
|
745
|
+
|
746
|
+
installer.wrappers = true
|
693
747
|
util_make_exec
|
694
748
|
|
695
|
-
|
749
|
+
installer.generate_bin
|
696
750
|
|
697
751
|
default_shebang = Gem.ruby
|
698
752
|
shebang_line = open("#{@gemhome}/bin/executable") { |f| f.readlines.first }
|
@@ -701,7 +755,10 @@ gem 'other', version
|
|
701
755
|
end
|
702
756
|
|
703
757
|
def test_initialize
|
704
|
-
spec = util_spec 'a' do |s|
|
758
|
+
spec = util_spec 'a' do |s|
|
759
|
+
s.platform = Gem::Platform.new 'mswin32'
|
760
|
+
end
|
761
|
+
|
705
762
|
gem = File.join @tempdir, spec.file_name
|
706
763
|
|
707
764
|
Dir.mkdir util_inst_bindir
|
@@ -715,6 +772,8 @@ gem 'other', version
|
|
715
772
|
end
|
716
773
|
|
717
774
|
def test_initialize_user_install
|
775
|
+
@gem = setup_base_gem
|
776
|
+
|
718
777
|
installer = Gem::Installer.at @gem, :user_install => true
|
719
778
|
|
720
779
|
assert_equal File.join(Gem.user_dir, 'gems', @spec.full_name),
|
@@ -723,6 +782,8 @@ gem 'other', version
|
|
723
782
|
end
|
724
783
|
|
725
784
|
def test_initialize_user_install_bin_dir
|
785
|
+
@gem = setup_base_gem
|
786
|
+
|
726
787
|
installer =
|
727
788
|
Gem::Installer.at @gem, :user_install => true, :bin_dir => @tempdir
|
728
789
|
|
@@ -732,9 +793,7 @@ gem 'other', version
|
|
732
793
|
end
|
733
794
|
|
734
795
|
def test_install
|
735
|
-
|
736
|
-
util_setup_gem
|
737
|
-
util_clear_gems
|
796
|
+
installer = util_setup_installer
|
738
797
|
|
739
798
|
gemdir = File.join @gemhome, 'gems', @spec.full_name
|
740
799
|
cache_file = File.join @gemhome, 'cache', @spec.file_name
|
@@ -764,7 +823,7 @@ gem 'other', version
|
|
764
823
|
@newspec = nil
|
765
824
|
build_rake_in do
|
766
825
|
use_ui @ui do
|
767
|
-
@newspec =
|
826
|
+
@newspec = installer.install
|
768
827
|
end
|
769
828
|
end
|
770
829
|
|
@@ -782,29 +841,25 @@ gem 'other', version
|
|
782
841
|
|
783
842
|
assert_path_exists rakefile
|
784
843
|
|
785
|
-
spec_file = File.join(@gemhome, 'specifications', @spec.spec_name)
|
786
|
-
|
787
844
|
assert_equal spec_file, @newspec.loaded_from
|
788
845
|
assert_path_exists spec_file
|
789
846
|
|
790
|
-
assert_same
|
791
|
-
assert_same
|
792
|
-
assert_same
|
847
|
+
assert_same installer, @post_build_hook_arg
|
848
|
+
assert_same installer, @post_install_hook_arg
|
849
|
+
assert_same installer, @pre_install_hook_arg
|
793
850
|
end
|
794
851
|
|
795
852
|
def test_install_creates_working_binstub
|
796
|
-
|
797
|
-
util_setup_gem
|
798
|
-
util_clear_gems
|
853
|
+
installer = util_setup_installer
|
799
854
|
|
800
|
-
|
855
|
+
installer.wrappers = true
|
801
856
|
|
802
857
|
gemdir = File.join @gemhome, 'gems', @spec.full_name
|
803
858
|
|
804
859
|
@newspec = nil
|
805
860
|
build_rake_in do
|
806
861
|
use_ui @ui do
|
807
|
-
@newspec =
|
862
|
+
@newspec = installer.install
|
808
863
|
end
|
809
864
|
end
|
810
865
|
|
@@ -818,11 +873,10 @@ gem 'other', version
|
|
818
873
|
end
|
819
874
|
|
820
875
|
def test_conflicting_binstubs
|
821
|
-
|
822
|
-
util_clear_gems
|
876
|
+
@gem = setup_base_gem
|
823
877
|
|
824
878
|
# build old version that has a bin file
|
825
|
-
util_setup_gem do |spec|
|
879
|
+
installer = util_setup_gem do |spec|
|
826
880
|
File.open File.join('bin', 'executable'), 'w' do |f|
|
827
881
|
f.puts "require 'code'"
|
828
882
|
end
|
@@ -831,17 +885,17 @@ gem 'other', version
|
|
831
885
|
end
|
832
886
|
end
|
833
887
|
|
834
|
-
|
888
|
+
installer.wrappers = true
|
835
889
|
build_rake_in do
|
836
890
|
use_ui @ui do
|
837
|
-
@newspec =
|
891
|
+
@newspec = installer.install
|
838
892
|
end
|
839
893
|
end
|
840
894
|
|
841
|
-
old_bin_file = File.join
|
895
|
+
old_bin_file = File.join installer.bin_dir, 'executable'
|
842
896
|
|
843
897
|
# build new version that doesn't have a bin file
|
844
|
-
util_setup_gem do |spec|
|
898
|
+
installer = util_setup_gem do |spec|
|
845
899
|
FileUtils.rm File.join('bin', 'executable')
|
846
900
|
spec.files.delete File.join('bin', 'executable')
|
847
901
|
spec.executables.delete 'executable'
|
@@ -853,7 +907,7 @@ gem 'other', version
|
|
853
907
|
|
854
908
|
build_rake_in do
|
855
909
|
use_ui @ui do
|
856
|
-
@newspec =
|
910
|
+
@newspec = installer.install
|
857
911
|
end
|
858
912
|
end
|
859
913
|
|
@@ -867,16 +921,14 @@ gem 'other', version
|
|
867
921
|
end
|
868
922
|
|
869
923
|
def test_install_creates_binstub_that_understand_version
|
870
|
-
|
871
|
-
util_setup_gem
|
872
|
-
util_clear_gems
|
924
|
+
installer = util_setup_installer
|
873
925
|
|
874
|
-
|
926
|
+
installer.wrappers = true
|
875
927
|
|
876
928
|
@newspec = nil
|
877
929
|
build_rake_in do
|
878
930
|
use_ui @ui do
|
879
|
-
@newspec =
|
931
|
+
@newspec = installer.install
|
880
932
|
end
|
881
933
|
end
|
882
934
|
|
@@ -897,17 +949,43 @@ gem 'other', version
|
|
897
949
|
assert_includes(e.message, "can't find gem a (= 3.0)")
|
898
950
|
end
|
899
951
|
|
900
|
-
def
|
901
|
-
|
902
|
-
|
952
|
+
def test_install_creates_binstub_that_prefers_user_installed_gem_to_default
|
953
|
+
install_default_gems new_default_spec('default', '2')
|
954
|
+
|
955
|
+
installer = util_setup_installer do |spec|
|
956
|
+
spec.name = 'default'
|
957
|
+
spec.version = '2'
|
958
|
+
end
|
959
|
+
|
903
960
|
util_clear_gems
|
904
961
|
|
905
|
-
|
962
|
+
installer.wrappers = true
|
963
|
+
|
964
|
+
@newspec = nil
|
965
|
+
build_rake_in do
|
966
|
+
use_ui @ui do
|
967
|
+
@newspec = installer.install
|
968
|
+
end
|
969
|
+
end
|
970
|
+
|
971
|
+
exe = File.join @gemhome, 'bin', 'executable'
|
972
|
+
|
973
|
+
e = assert_raises RuntimeError do
|
974
|
+
instance_eval File.read(exe)
|
975
|
+
end
|
976
|
+
|
977
|
+
assert_equal(e.message, "ran executable")
|
978
|
+
end
|
979
|
+
|
980
|
+
def test_install_creates_binstub_that_dont_trust_encoding
|
981
|
+
installer = util_setup_installer
|
982
|
+
|
983
|
+
installer.wrappers = true
|
906
984
|
|
907
985
|
@newspec = nil
|
908
986
|
build_rake_in do
|
909
987
|
use_ui @ui do
|
910
|
-
@newspec =
|
988
|
+
@newspec = installer.install
|
911
989
|
end
|
912
990
|
end
|
913
991
|
|
@@ -930,33 +1008,35 @@ gem 'other', version
|
|
930
1008
|
end
|
931
1009
|
|
932
1010
|
def test_install_with_no_prior_files
|
933
|
-
|
934
|
-
util_clear_gems
|
1011
|
+
installer = util_setup_installer
|
935
1012
|
|
936
|
-
util_setup_gem
|
937
1013
|
build_rake_in do
|
938
1014
|
use_ui @ui do
|
939
|
-
assert_equal @spec,
|
1015
|
+
assert_equal @spec, installer.install
|
940
1016
|
end
|
941
1017
|
end
|
942
1018
|
|
943
1019
|
gemdir = File.join(@gemhome, 'gems', @spec.full_name)
|
944
1020
|
assert_path_exists File.join gemdir, 'lib', 'code.rb'
|
945
1021
|
|
946
|
-
|
1022
|
+
installer = util_setup_installer
|
1023
|
+
|
947
1024
|
# Morph spec to have lib/other.rb instead of code.rb and recreate
|
948
1025
|
@spec.files = File.join('lib', 'other.rb')
|
949
1026
|
Dir.chdir @tempdir do
|
950
|
-
File.open File.join('lib', 'other.rb'), 'w' do |f|
|
1027
|
+
File.open File.join('lib', 'other.rb'), 'w' do |f|
|
1028
|
+
f.puts '1'
|
1029
|
+
end
|
1030
|
+
|
951
1031
|
use_ui ui do
|
952
1032
|
FileUtils.rm @gem
|
953
1033
|
Gem::Package.build @spec
|
954
1034
|
end
|
955
1035
|
end
|
956
|
-
|
1036
|
+
installer = Gem::Installer.at @gem
|
957
1037
|
build_rake_in do
|
958
1038
|
use_ui @ui do
|
959
|
-
assert_equal @spec,
|
1039
|
+
assert_equal @spec, installer.install
|
960
1040
|
end
|
961
1041
|
end
|
962
1042
|
|
@@ -976,12 +1056,14 @@ gem 'other', version
|
|
976
1056
|
end
|
977
1057
|
|
978
1058
|
def test_install_missing_dirs
|
1059
|
+
installer = setup_base_installer
|
1060
|
+
|
979
1061
|
FileUtils.rm_f File.join(Gem.dir, 'cache')
|
980
1062
|
FileUtils.rm_f File.join(Gem.dir, 'doc')
|
981
1063
|
FileUtils.rm_f File.join(Gem.dir, 'specifications')
|
982
1064
|
|
983
1065
|
use_ui @ui do
|
984
|
-
|
1066
|
+
installer.install
|
985
1067
|
end
|
986
1068
|
|
987
1069
|
assert_directory_exists File.join(Gem.dir, 'cache')
|
@@ -993,7 +1075,7 @@ gem 'other', version
|
|
993
1075
|
end
|
994
1076
|
|
995
1077
|
def test_install_post_build_false
|
996
|
-
|
1078
|
+
installer = setup_base_installer
|
997
1079
|
|
998
1080
|
Gem.post_build do
|
999
1081
|
false
|
@@ -1001,7 +1083,7 @@ gem 'other', version
|
|
1001
1083
|
|
1002
1084
|
use_ui @ui do
|
1003
1085
|
e = assert_raises Gem::InstallError do
|
1004
|
-
|
1086
|
+
installer.install
|
1005
1087
|
end
|
1006
1088
|
|
1007
1089
|
location = "#{__FILE__}:#{__LINE__ - 9}"
|
@@ -1017,14 +1099,14 @@ gem 'other', version
|
|
1017
1099
|
end
|
1018
1100
|
|
1019
1101
|
def test_install_post_build_nil
|
1020
|
-
|
1102
|
+
installer = setup_base_installer
|
1021
1103
|
|
1022
1104
|
Gem.post_build do
|
1023
1105
|
nil
|
1024
1106
|
end
|
1025
1107
|
|
1026
1108
|
use_ui @ui do
|
1027
|
-
|
1109
|
+
installer.install
|
1028
1110
|
end
|
1029
1111
|
|
1030
1112
|
spec_file = File.join @gemhome, 'specifications', @spec.spec_name
|
@@ -1035,7 +1117,7 @@ gem 'other', version
|
|
1035
1117
|
end
|
1036
1118
|
|
1037
1119
|
def test_install_pre_install_false
|
1038
|
-
|
1120
|
+
installer = setup_base_installer
|
1039
1121
|
|
1040
1122
|
Gem.pre_install do
|
1041
1123
|
false
|
@@ -1043,7 +1125,7 @@ gem 'other', version
|
|
1043
1125
|
|
1044
1126
|
use_ui @ui do
|
1045
1127
|
e = assert_raises Gem::InstallError do
|
1046
|
-
|
1128
|
+
installer.install
|
1047
1129
|
end
|
1048
1130
|
|
1049
1131
|
location = "#{__FILE__}:#{__LINE__ - 9}"
|
@@ -1056,14 +1138,14 @@ gem 'other', version
|
|
1056
1138
|
end
|
1057
1139
|
|
1058
1140
|
def test_install_pre_install_nil
|
1059
|
-
|
1141
|
+
installer = setup_base_installer
|
1060
1142
|
|
1061
1143
|
Gem.pre_install do
|
1062
1144
|
nil
|
1063
1145
|
end
|
1064
1146
|
|
1065
1147
|
use_ui @ui do
|
1066
|
-
|
1148
|
+
installer.install
|
1067
1149
|
end
|
1068
1150
|
|
1069
1151
|
spec_file = File.join @gemhome, 'specifications', @spec.spec_name
|
@@ -1071,26 +1153,28 @@ gem 'other', version
|
|
1071
1153
|
end
|
1072
1154
|
|
1073
1155
|
def test_install_with_message
|
1156
|
+
@spec = setup_base_spec
|
1074
1157
|
@spec.post_install_message = 'I am a shiny gem!'
|
1075
1158
|
|
1076
1159
|
use_ui @ui do
|
1077
1160
|
path = Gem::Package.build @spec
|
1078
1161
|
|
1079
|
-
|
1080
|
-
|
1162
|
+
installer = Gem::Installer.at path
|
1163
|
+
installer.install
|
1081
1164
|
end
|
1082
1165
|
|
1083
1166
|
assert_match %r|I am a shiny gem!|, @ui.output
|
1084
1167
|
end
|
1085
1168
|
|
1086
1169
|
def test_install_with_skipped_message
|
1170
|
+
@spec = setup_base_spec
|
1087
1171
|
@spec.post_install_message = 'I am a shiny gem!'
|
1088
1172
|
|
1089
1173
|
use_ui @ui do
|
1090
1174
|
path = Gem::Package.build @spec
|
1091
1175
|
|
1092
|
-
|
1093
|
-
|
1176
|
+
installer = Gem::Installer.at path, :post_install_message => false
|
1177
|
+
installer.install
|
1094
1178
|
end
|
1095
1179
|
|
1096
1180
|
refute_match %r|I am a shiny gem!|, @ui.output
|
@@ -1099,6 +1183,7 @@ gem 'other', version
|
|
1099
1183
|
def test_install_extension_dir
|
1100
1184
|
gemhome2 = "#{@gemhome}2"
|
1101
1185
|
|
1186
|
+
@spec = setup_base_spec
|
1102
1187
|
@spec.extensions << "extconf.rb"
|
1103
1188
|
write_file File.join(@tempdir, "extconf.rb") do |io|
|
1104
1189
|
io.write <<-RUBY
|
@@ -1122,6 +1207,8 @@ gem 'other', version
|
|
1122
1207
|
end
|
1123
1208
|
|
1124
1209
|
def test_install_extension_dir_is_removed_on_reinstall
|
1210
|
+
@spec = setup_base_spec
|
1211
|
+
|
1125
1212
|
@spec.extensions << "extconf.rb"
|
1126
1213
|
write_file File.join(@tempdir, "extconf.rb") do |io|
|
1127
1214
|
io.write <<-RUBY
|
@@ -1157,6 +1244,7 @@ gem 'other', version
|
|
1157
1244
|
end
|
1158
1245
|
|
1159
1246
|
def test_install_user_extension_dir
|
1247
|
+
@spec = setup_base_spec
|
1160
1248
|
@spec.extensions << "extconf.rb"
|
1161
1249
|
write_file File.join(@tempdir, "extconf.rb") do |io|
|
1162
1250
|
io.write <<-RUBY
|
@@ -1186,6 +1274,9 @@ gem 'other', version
|
|
1186
1274
|
end
|
1187
1275
|
|
1188
1276
|
def test_find_lib_file_after_install
|
1277
|
+
skip "extensions don't quite work on jruby" if Gem.java_platform?
|
1278
|
+
|
1279
|
+
@spec = setup_base_spec
|
1189
1280
|
@spec.extensions << "extconf.rb"
|
1190
1281
|
write_file File.join(@tempdir, "extconf.rb") do |io|
|
1191
1282
|
io.write <<-RUBY
|
@@ -1229,6 +1320,9 @@ gem 'other', version
|
|
1229
1320
|
end
|
1230
1321
|
|
1231
1322
|
def test_install_extension_and_script
|
1323
|
+
skip "Makefile creation crashes on jruby" if Gem.java_platform?
|
1324
|
+
|
1325
|
+
@spec = setup_base_spec
|
1232
1326
|
@spec.extensions << "extconf.rb"
|
1233
1327
|
write_file File.join(@tempdir, "extconf.rb") do |io|
|
1234
1328
|
io.write <<-RUBY
|
@@ -1259,14 +1353,17 @@ gem 'other', version
|
|
1259
1353
|
use_ui @ui do
|
1260
1354
|
path = Gem::Package.build @spec
|
1261
1355
|
|
1262
|
-
|
1263
|
-
|
1356
|
+
installer = Gem::Installer.at path
|
1357
|
+
installer.install
|
1264
1358
|
end
|
1265
1359
|
assert_path_exists File.join @spec.gem_dir, rb
|
1266
1360
|
assert_path_exists File.join @spec.gem_dir, rb2
|
1267
1361
|
end
|
1268
1362
|
|
1269
1363
|
def test_install_extension_flat
|
1364
|
+
skip "extensions don't quite work on jruby" if Gem.java_platform?
|
1365
|
+
|
1366
|
+
@spec = setup_base_spec
|
1270
1367
|
@spec.require_paths = ["."]
|
1271
1368
|
|
1272
1369
|
@spec.extensions << "extconf.rb"
|
@@ -1284,17 +1381,17 @@ gem 'other', version
|
|
1284
1381
|
end
|
1285
1382
|
|
1286
1383
|
# empty depend file for no auto dependencies
|
1287
|
-
@spec.files += %W"depend #{@spec.name}.c".each
|
1384
|
+
@spec.files += %W"depend #{@spec.name}.c".each do |file|
|
1288
1385
|
write_file File.join(@tempdir, file)
|
1289
|
-
|
1386
|
+
end
|
1290
1387
|
|
1291
1388
|
so = File.join(@spec.gem_dir, "#{@spec.name}.#{RbConfig::CONFIG["DLEXT"]}")
|
1292
1389
|
refute_path_exists so
|
1293
1390
|
use_ui @ui do
|
1294
1391
|
path = Gem::Package.build @spec
|
1295
1392
|
|
1296
|
-
|
1297
|
-
|
1393
|
+
installer = Gem::Installer.at path
|
1394
|
+
installer.install
|
1298
1395
|
end
|
1299
1396
|
assert_path_exists so
|
1300
1397
|
rescue
|
@@ -1313,49 +1410,56 @@ gem 'other', version
|
|
1313
1410
|
end
|
1314
1411
|
|
1315
1412
|
def test_installation_satisfies_dependency_eh
|
1413
|
+
installer = setup_base_installer
|
1414
|
+
|
1316
1415
|
util_spec 'a'
|
1317
1416
|
|
1318
1417
|
dep = Gem::Dependency.new 'a', '>= 2'
|
1319
|
-
assert
|
1418
|
+
assert installer.installation_satisfies_dependency?(dep)
|
1320
1419
|
|
1321
1420
|
dep = Gem::Dependency.new 'a', '> 2'
|
1322
|
-
refute
|
1421
|
+
refute installer.installation_satisfies_dependency?(dep)
|
1323
1422
|
end
|
1324
1423
|
|
1325
1424
|
def test_installation_satisfies_dependency_eh_development
|
1326
|
-
|
1327
|
-
|
1425
|
+
installer = setup_base_installer
|
1426
|
+
installer.options[:development] = true
|
1427
|
+
installer.options[:dev_shallow] = true
|
1328
1428
|
|
1329
1429
|
util_spec 'a'
|
1330
1430
|
|
1331
1431
|
dep = Gem::Dependency.new 'a', :development
|
1332
|
-
assert
|
1432
|
+
assert installer.installation_satisfies_dependency?(dep)
|
1333
1433
|
end
|
1334
1434
|
|
1335
1435
|
def test_pre_install_checks_dependencies
|
1436
|
+
installer = setup_base_installer
|
1336
1437
|
@spec.add_dependency 'b', '> 5'
|
1337
|
-
util_setup_gem
|
1438
|
+
installer = util_setup_gem
|
1338
1439
|
|
1339
1440
|
use_ui @ui do
|
1340
1441
|
assert_raises Gem::InstallError do
|
1341
|
-
|
1442
|
+
installer.install
|
1342
1443
|
end
|
1343
1444
|
end
|
1344
1445
|
end
|
1345
1446
|
|
1346
1447
|
def test_pre_install_checks_dependencies_ignore
|
1448
|
+
installer = util_setup_installer
|
1347
1449
|
@spec.add_dependency 'b', '> 5'
|
1348
|
-
|
1450
|
+
installer.ignore_dependencies = true
|
1349
1451
|
|
1350
1452
|
build_rake_in do
|
1351
1453
|
use_ui @ui do
|
1352
|
-
assert
|
1454
|
+
assert installer.pre_install_checks
|
1353
1455
|
end
|
1354
1456
|
end
|
1355
1457
|
end
|
1356
1458
|
|
1357
1459
|
def test_pre_install_checks_dependencies_install_dir
|
1358
1460
|
gemhome2 = "#{@gemhome}2"
|
1461
|
+
|
1462
|
+
@gem = setup_base_gem
|
1359
1463
|
@spec.add_dependency 'd'
|
1360
1464
|
|
1361
1465
|
quick_gem 'd', 2
|
@@ -1418,9 +1522,9 @@ gem 'other', version
|
|
1418
1522
|
gem = File.join(@gemhome, 'cache', spec.file_name)
|
1419
1523
|
|
1420
1524
|
use_ui @ui do
|
1421
|
-
|
1525
|
+
installer = Gem::Installer.at gem
|
1422
1526
|
e = assert_raises Gem::RuntimeRequirementNotMetError do
|
1423
|
-
|
1527
|
+
installer.pre_install_checks
|
1424
1528
|
end
|
1425
1529
|
rgv = Gem::VERSION
|
1426
1530
|
assert_equal "old_rubygems_required requires RubyGems version < 0. The current RubyGems version is #{rgv}. " +
|
@@ -1440,9 +1544,9 @@ gem 'other', version
|
|
1440
1544
|
gem = File.join(@gemhome, 'cache', spec.file_name)
|
1441
1545
|
|
1442
1546
|
use_ui @ui do
|
1443
|
-
|
1547
|
+
installer = Gem::Installer.at gem
|
1444
1548
|
e = assert_raises Gem::InstallError do
|
1445
|
-
|
1549
|
+
installer.pre_install_checks
|
1446
1550
|
end
|
1447
1551
|
assert_equal '#<Gem::Specification name=../malicious version=1> has an invalid name', e.message
|
1448
1552
|
end
|
@@ -1460,9 +1564,9 @@ gem 'other', version
|
|
1460
1564
|
gem = File.join(@gemhome, 'cache', spec.file_name)
|
1461
1565
|
|
1462
1566
|
use_ui @ui do
|
1463
|
-
|
1567
|
+
installer = Gem::Installer.at gem
|
1464
1568
|
e = assert_raises Gem::InstallError do
|
1465
|
-
|
1569
|
+
installer.pre_install_checks
|
1466
1570
|
end
|
1467
1571
|
assert_equal "#<Gem::Specification name=malicious\n::Object.const_set(:FROM_EVAL, true)# version=1> has an invalid name", e.message
|
1468
1572
|
end
|
@@ -1482,9 +1586,9 @@ gem 'other', version
|
|
1482
1586
|
gem = File.join(@gemhome, 'cache', spec.file_name)
|
1483
1587
|
|
1484
1588
|
use_ui @ui do
|
1485
|
-
|
1589
|
+
installer = Gem::Installer.at gem
|
1486
1590
|
e = assert_raises Gem::InstallError do
|
1487
|
-
|
1591
|
+
installer.pre_install_checks
|
1488
1592
|
end
|
1489
1593
|
assert_equal "#<Gem::Specification name=malicious version=1> has an invalid require_paths", e.message
|
1490
1594
|
end
|
@@ -1505,9 +1609,9 @@ gem 'other', version
|
|
1505
1609
|
gem = File.join(@gemhome, 'cache', spec.file_name)
|
1506
1610
|
|
1507
1611
|
use_ui @ui do
|
1508
|
-
|
1612
|
+
installer = Gem::Installer.at gem
|
1509
1613
|
e = assert_raises Gem::InstallError do
|
1510
|
-
|
1614
|
+
installer.pre_install_checks
|
1511
1615
|
end
|
1512
1616
|
assert_equal "#<Gem::Specification name=malicious version=1> has an invalid extensions", e.message
|
1513
1617
|
end
|
@@ -1526,9 +1630,9 @@ gem 'other', version
|
|
1526
1630
|
gem = File.join(@gemhome, 'cache', spec.file_name)
|
1527
1631
|
|
1528
1632
|
use_ui @ui do
|
1529
|
-
|
1633
|
+
installer = Gem::Installer.at gem
|
1530
1634
|
e = assert_raises Gem::InstallError do
|
1531
|
-
|
1635
|
+
installer.pre_install_checks
|
1532
1636
|
end
|
1533
1637
|
assert_equal "#<Gem::Specification name=malicious version=1> has an invalid specification_version", e.message
|
1534
1638
|
end
|
@@ -1547,75 +1651,90 @@ gem 'other', version
|
|
1547
1651
|
gem = File.join(@gemhome, 'cache', spec.file_name)
|
1548
1652
|
|
1549
1653
|
use_ui @ui do
|
1550
|
-
|
1551
|
-
|
1654
|
+
installer = Gem::Installer.at gem
|
1655
|
+
installer.ignore_dependencies = true
|
1552
1656
|
e = assert_raises Gem::InstallError do
|
1553
|
-
|
1657
|
+
installer.pre_install_checks
|
1554
1658
|
end
|
1555
1659
|
assert_equal "#<Gem::Specification name=malicious version=1> has an invalid dependencies", e.message
|
1556
1660
|
end
|
1557
1661
|
end
|
1558
1662
|
|
1559
1663
|
def test_shebang
|
1664
|
+
installer = setup_base_installer
|
1665
|
+
|
1560
1666
|
util_make_exec @spec, "#!/usr/bin/ruby"
|
1561
1667
|
|
1562
|
-
shebang =
|
1668
|
+
shebang = installer.shebang 'executable'
|
1563
1669
|
|
1564
1670
|
assert_equal "#!#{Gem.ruby}", shebang
|
1565
1671
|
end
|
1566
1672
|
|
1567
1673
|
def test_process_options
|
1568
|
-
|
1569
|
-
|
1570
|
-
|
1674
|
+
installer = setup_base_installer
|
1675
|
+
|
1676
|
+
assert_nil installer.build_root
|
1677
|
+
assert_equal File.join(@gemhome, 'bin'), installer.bin_dir
|
1678
|
+
assert_equal @gemhome, installer.gem_home
|
1571
1679
|
end
|
1572
1680
|
|
1573
1681
|
def test_process_options_build_root
|
1574
1682
|
build_root = File.join @tempdir, 'build_root'
|
1575
1683
|
|
1576
|
-
@
|
1684
|
+
@gem = setup_base_gem
|
1685
|
+
installer = Gem::Installer.at @gem, :build_root => build_root
|
1577
1686
|
|
1578
|
-
assert_equal Pathname(build_root),
|
1579
|
-
assert_equal File.join(build_root, @gemhome, 'bin'),
|
1580
|
-
assert_equal File.join(build_root, @gemhome),
|
1687
|
+
assert_equal Pathname(build_root), installer.build_root
|
1688
|
+
assert_equal File.join(build_root, @gemhome, 'bin'), installer.bin_dir
|
1689
|
+
assert_equal File.join(build_root, @gemhome), installer.gem_home
|
1581
1690
|
end
|
1582
1691
|
|
1583
1692
|
def test_shebang_arguments
|
1693
|
+
installer = setup_base_installer
|
1694
|
+
|
1584
1695
|
util_make_exec @spec, "#!/usr/bin/ruby -ws"
|
1585
1696
|
|
1586
|
-
shebang =
|
1697
|
+
shebang = installer.shebang 'executable'
|
1587
1698
|
|
1588
1699
|
assert_equal "#!#{Gem.ruby} -ws", shebang
|
1589
1700
|
end
|
1590
1701
|
|
1591
1702
|
def test_shebang_empty
|
1703
|
+
installer = setup_base_installer
|
1704
|
+
|
1592
1705
|
util_make_exec @spec, ''
|
1593
1706
|
|
1594
|
-
shebang =
|
1707
|
+
shebang = installer.shebang 'executable'
|
1595
1708
|
assert_equal "#!#{Gem.ruby}", shebang
|
1596
1709
|
end
|
1597
1710
|
|
1598
1711
|
def test_shebang_env
|
1712
|
+
installer = setup_base_installer
|
1713
|
+
|
1599
1714
|
util_make_exec @spec, "#!/usr/bin/env ruby"
|
1600
1715
|
|
1601
|
-
shebang =
|
1716
|
+
shebang = installer.shebang 'executable'
|
1602
1717
|
|
1603
1718
|
assert_equal "#!#{Gem.ruby}", shebang
|
1604
1719
|
end
|
1605
1720
|
|
1606
1721
|
def test_shebang_env_arguments
|
1722
|
+
installer = setup_base_installer
|
1723
|
+
|
1607
1724
|
util_make_exec @spec, "#!/usr/bin/env ruby -ws"
|
1608
1725
|
|
1609
|
-
shebang =
|
1726
|
+
shebang = installer.shebang 'executable'
|
1610
1727
|
|
1611
1728
|
assert_equal "#!#{Gem.ruby} -ws", shebang
|
1612
1729
|
end
|
1613
1730
|
|
1614
1731
|
def test_shebang_env_shebang
|
1732
|
+
installer = setup_base_installer
|
1733
|
+
|
1615
1734
|
util_make_exec @spec, ''
|
1616
|
-
|
1735
|
+
installer.env_shebang = true
|
1617
1736
|
|
1618
|
-
shebang =
|
1737
|
+
shebang = installer.shebang 'executable'
|
1619
1738
|
|
1620
1739
|
env_shebang = "/usr/bin/env" unless Gem.win_platform?
|
1621
1740
|
|
@@ -1624,54 +1743,68 @@ gem 'other', version
|
|
1624
1743
|
end
|
1625
1744
|
|
1626
1745
|
def test_shebang_nested
|
1746
|
+
installer = setup_base_installer
|
1747
|
+
|
1627
1748
|
util_make_exec @spec, "#!/opt/local/ruby/bin/ruby"
|
1628
1749
|
|
1629
|
-
shebang =
|
1750
|
+
shebang = installer.shebang 'executable'
|
1630
1751
|
|
1631
1752
|
assert_equal "#!#{Gem.ruby}", shebang
|
1632
1753
|
end
|
1633
1754
|
|
1634
1755
|
def test_shebang_nested_arguments
|
1756
|
+
installer = setup_base_installer
|
1757
|
+
|
1635
1758
|
util_make_exec @spec, "#!/opt/local/ruby/bin/ruby -ws"
|
1636
1759
|
|
1637
|
-
shebang =
|
1760
|
+
shebang = installer.shebang 'executable'
|
1638
1761
|
|
1639
1762
|
assert_equal "#!#{Gem.ruby} -ws", shebang
|
1640
1763
|
end
|
1641
1764
|
|
1642
1765
|
def test_shebang_version
|
1766
|
+
installer = setup_base_installer
|
1767
|
+
|
1643
1768
|
util_make_exec @spec, "#!/usr/bin/ruby18"
|
1644
1769
|
|
1645
|
-
shebang =
|
1770
|
+
shebang = installer.shebang 'executable'
|
1646
1771
|
|
1647
1772
|
assert_equal "#!#{Gem.ruby}", shebang
|
1648
1773
|
end
|
1649
1774
|
|
1650
1775
|
def test_shebang_version_arguments
|
1776
|
+
installer = setup_base_installer
|
1777
|
+
|
1651
1778
|
util_make_exec @spec, "#!/usr/bin/ruby18 -ws"
|
1652
1779
|
|
1653
|
-
shebang =
|
1780
|
+
shebang = installer.shebang 'executable'
|
1654
1781
|
|
1655
1782
|
assert_equal "#!#{Gem.ruby} -ws", shebang
|
1656
1783
|
end
|
1657
1784
|
|
1658
1785
|
def test_shebang_version_env
|
1786
|
+
installer = setup_base_installer
|
1787
|
+
|
1659
1788
|
util_make_exec @spec, "#!/usr/bin/env ruby18"
|
1660
1789
|
|
1661
|
-
shebang =
|
1790
|
+
shebang = installer.shebang 'executable'
|
1662
1791
|
|
1663
1792
|
assert_equal "#!#{Gem.ruby}", shebang
|
1664
1793
|
end
|
1665
1794
|
|
1666
1795
|
def test_shebang_version_env_arguments
|
1796
|
+
installer = setup_base_installer
|
1797
|
+
|
1667
1798
|
util_make_exec @spec, "#!/usr/bin/env ruby18 -ws"
|
1668
1799
|
|
1669
|
-
shebang =
|
1800
|
+
shebang = installer.shebang 'executable'
|
1670
1801
|
|
1671
1802
|
assert_equal "#!#{Gem.ruby} -ws", shebang
|
1672
1803
|
end
|
1673
1804
|
|
1674
1805
|
def test_shebang_custom
|
1806
|
+
installer = setup_base_installer
|
1807
|
+
|
1675
1808
|
conf = Gem::ConfigFile.new []
|
1676
1809
|
conf[:custom_shebang] = 'test'
|
1677
1810
|
|
@@ -1679,12 +1812,14 @@ gem 'other', version
|
|
1679
1812
|
|
1680
1813
|
util_make_exec @spec, "#!/usr/bin/ruby"
|
1681
1814
|
|
1682
|
-
shebang =
|
1815
|
+
shebang = installer.shebang 'executable'
|
1683
1816
|
|
1684
1817
|
assert_equal "#!test", shebang
|
1685
1818
|
end
|
1686
1819
|
|
1687
1820
|
def test_shebang_custom_with_expands
|
1821
|
+
installer = setup_base_installer
|
1822
|
+
|
1688
1823
|
bin_env = win_platform? ? '' : '/usr/bin/env'
|
1689
1824
|
conf = Gem::ConfigFile.new []
|
1690
1825
|
conf[:custom_shebang] = '1 $env 2 $ruby 3 $exec 4 $name'
|
@@ -1693,12 +1828,14 @@ gem 'other', version
|
|
1693
1828
|
|
1694
1829
|
util_make_exec @spec, "#!/usr/bin/ruby"
|
1695
1830
|
|
1696
|
-
shebang =
|
1831
|
+
shebang = installer.shebang 'executable'
|
1697
1832
|
|
1698
1833
|
assert_equal "#!1 #{bin_env} 2 #{Gem.ruby} 3 executable 4 a", shebang
|
1699
1834
|
end
|
1700
1835
|
|
1701
1836
|
def test_shebang_custom_with_expands_and_arguments
|
1837
|
+
installer = setup_base_installer
|
1838
|
+
|
1702
1839
|
bin_env = win_platform? ? '' : '/usr/bin/env'
|
1703
1840
|
conf = Gem::ConfigFile.new []
|
1704
1841
|
conf[:custom_shebang] = '1 $env 2 $ruby 3 $exec'
|
@@ -1707,30 +1844,34 @@ gem 'other', version
|
|
1707
1844
|
|
1708
1845
|
util_make_exec @spec, "#!/usr/bin/ruby -ws"
|
1709
1846
|
|
1710
|
-
shebang =
|
1847
|
+
shebang = installer.shebang 'executable'
|
1711
1848
|
|
1712
1849
|
assert_equal "#!1 #{bin_env} 2 #{Gem.ruby} -ws 3 executable", shebang
|
1713
1850
|
end
|
1714
1851
|
|
1715
1852
|
def test_unpack
|
1716
|
-
|
1853
|
+
installer = util_setup_installer
|
1717
1854
|
|
1718
1855
|
dest = File.join @gemhome, 'gems', @spec.full_name
|
1719
1856
|
|
1720
|
-
|
1857
|
+
Gem::Deprecate.skip_during do
|
1858
|
+
installer.unpack dest
|
1859
|
+
end
|
1721
1860
|
|
1722
1861
|
assert_path_exists File.join dest, 'lib', 'code.rb'
|
1723
1862
|
assert_path_exists File.join dest, 'bin', 'executable'
|
1724
1863
|
end
|
1725
1864
|
|
1726
1865
|
def test_write_build_info_file
|
1866
|
+
installer = setup_base_installer
|
1867
|
+
|
1727
1868
|
refute_path_exists @spec.build_info_file
|
1728
1869
|
|
1729
|
-
|
1870
|
+
installer.build_args = %w[
|
1730
1871
|
--with-libyaml-dir /usr/local/Cellar/libyaml/0.1.4
|
1731
1872
|
]
|
1732
1873
|
|
1733
|
-
|
1874
|
+
installer.write_build_info_file
|
1734
1875
|
|
1735
1876
|
assert_path_exists @spec.build_info_file
|
1736
1877
|
|
@@ -1740,14 +1881,17 @@ gem 'other', version
|
|
1740
1881
|
end
|
1741
1882
|
|
1742
1883
|
def test_write_build_info_file_empty
|
1884
|
+
installer = setup_base_installer
|
1885
|
+
|
1743
1886
|
refute_path_exists @spec.build_info_file
|
1744
1887
|
|
1745
|
-
|
1888
|
+
installer.write_build_info_file
|
1746
1889
|
|
1747
1890
|
refute_path_exists @spec.build_info_file
|
1748
1891
|
end
|
1749
1892
|
|
1750
1893
|
def test_write_build_info_file_install_dir
|
1894
|
+
@gem = setup_base_gem
|
1751
1895
|
installer = Gem::Installer.at @gem, :install_dir => "#{@gemhome}2"
|
1752
1896
|
|
1753
1897
|
installer.build_args = %w[
|
@@ -1762,6 +1906,7 @@ gem 'other', version
|
|
1762
1906
|
end
|
1763
1907
|
|
1764
1908
|
def test_write_cache_file
|
1909
|
+
@gem = setup_base_gem
|
1765
1910
|
cache_file = File.join @gemhome, 'cache', @spec.file_name
|
1766
1911
|
gem = File.join @gemhome, @spec.file_name
|
1767
1912
|
|
@@ -1777,13 +1922,14 @@ gem 'other', version
|
|
1777
1922
|
end
|
1778
1923
|
|
1779
1924
|
def test_write_spec
|
1925
|
+
@spec = setup_base_spec
|
1780
1926
|
FileUtils.rm @spec.spec_file
|
1781
1927
|
refute_path_exists @spec.spec_file
|
1782
1928
|
|
1783
|
-
|
1784
|
-
|
1929
|
+
installer = Gem::Installer.for_spec @spec
|
1930
|
+
installer.gem_home = @gemhome
|
1785
1931
|
|
1786
|
-
|
1932
|
+
installer.write_spec
|
1787
1933
|
|
1788
1934
|
assert_path_exists @spec.spec_file
|
1789
1935
|
|
@@ -1795,15 +1941,16 @@ gem 'other', version
|
|
1795
1941
|
end
|
1796
1942
|
|
1797
1943
|
def test_write_spec_writes_cached_spec
|
1944
|
+
@spec = setup_base_spec
|
1798
1945
|
FileUtils.rm @spec.spec_file
|
1799
1946
|
refute_path_exists @spec.spec_file
|
1800
1947
|
|
1801
1948
|
@spec.files = %w[a.rb b.rb c.rb]
|
1802
1949
|
|
1803
|
-
|
1804
|
-
|
1950
|
+
installer = Gem::Installer.for_spec @spec
|
1951
|
+
installer.gem_home = @gemhome
|
1805
1952
|
|
1806
|
-
|
1953
|
+
installer.write_spec
|
1807
1954
|
|
1808
1955
|
# cached specs have no file manifest:
|
1809
1956
|
@spec.files = []
|
@@ -1812,7 +1959,9 @@ gem 'other', version
|
|
1812
1959
|
end
|
1813
1960
|
|
1814
1961
|
def test_dir
|
1815
|
-
|
1962
|
+
installer = setup_base_installer
|
1963
|
+
|
1964
|
+
assert_match %r!/gemhome/gems/a-2$!, installer.dir
|
1816
1965
|
end
|
1817
1966
|
|
1818
1967
|
def test_default_gem_loaded_from
|
@@ -1823,14 +1972,16 @@ gem 'other', version
|
|
1823
1972
|
end
|
1824
1973
|
|
1825
1974
|
def test_default_gem_without_wrappers
|
1975
|
+
installer = setup_base_installer
|
1976
|
+
|
1826
1977
|
FileUtils.rm_f File.join(Gem.dir, 'specifications')
|
1827
1978
|
|
1828
|
-
|
1829
|
-
|
1830
|
-
|
1979
|
+
installer.wrappers = false
|
1980
|
+
installer.options[:install_as_default] = true
|
1981
|
+
installer.gem_dir = @spec.gem_dir
|
1831
1982
|
|
1832
1983
|
use_ui @ui do
|
1833
|
-
|
1984
|
+
installer.install
|
1834
1985
|
end
|
1835
1986
|
|
1836
1987
|
assert_directory_exists File.join(@spec.gem_dir, 'bin')
|
@@ -1854,14 +2005,14 @@ gem 'other', version
|
|
1854
2005
|
end
|
1855
2006
|
|
1856
2007
|
def test_default_gem_with_wrappers
|
1857
|
-
|
2008
|
+
installer = setup_base_installer
|
1858
2009
|
|
1859
|
-
|
1860
|
-
|
1861
|
-
|
2010
|
+
installer.wrappers = true
|
2011
|
+
installer.options[:install_as_default] = true
|
2012
|
+
installer.gem_dir = @spec.gem_dir
|
1862
2013
|
|
1863
2014
|
use_ui @ui do
|
1864
|
-
|
2015
|
+
installer.install
|
1865
2016
|
end
|
1866
2017
|
|
1867
2018
|
assert_directory_exists util_inst_bindir
|
@@ -1874,8 +2025,6 @@ gem 'other', version
|
|
1874
2025
|
end
|
1875
2026
|
|
1876
2027
|
def test_default_gem_with_exe_as_bindir
|
1877
|
-
FileUtils.rm_f File.join(Gem.dir, 'specifications')
|
1878
|
-
|
1879
2028
|
@spec = quick_gem 'c' do |spec|
|
1880
2029
|
util_make_exec spec, '#!/usr/bin/ruby', 'exe'
|
1881
2030
|
end
|
@@ -1905,6 +2054,16 @@ gem 'other', version
|
|
1905
2054
|
assert_equal ['exe/executable'], default_spec.files
|
1906
2055
|
end
|
1907
2056
|
|
2057
|
+
def test_package_attribute
|
2058
|
+
gem = quick_gem 'c' do |spec|
|
2059
|
+
util_make_exec spec, '#!/usr/bin/ruby', 'exe'
|
2060
|
+
end
|
2061
|
+
|
2062
|
+
installer = util_installer(gem, @gemhome)
|
2063
|
+
assert_respond_to(installer, :package)
|
2064
|
+
assert_kind_of(Gem::Package, installer.package)
|
2065
|
+
end
|
2066
|
+
|
1908
2067
|
def old_ruby_required(requirement)
|
1909
2068
|
spec = util_spec 'old_ruby_required', '1' do |s|
|
1910
2069
|
s.required_ruby_version = requirement
|
@@ -1919,7 +2078,7 @@ gem 'other', version
|
|
1919
2078
|
@spec = util_spec 'z'
|
1920
2079
|
util_build_gem @spec
|
1921
2080
|
|
1922
|
-
|
2081
|
+
util_installer @spec, @gemhome
|
1923
2082
|
end
|
1924
2083
|
|
1925
2084
|
def util_conflict_executable(wrappers)
|
@@ -1937,4 +2096,5 @@ gem 'other', version
|
|
1937
2096
|
def mask
|
1938
2097
|
0100755 & (~File.umask)
|
1939
2098
|
end
|
2099
|
+
|
1940
2100
|
end
|