rubygems-update 3.2.30 → 3.4.10
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/CHANGELOG.md +1666 -994
- data/CONTRIBUTING.md +71 -15
- data/Manifest.txt +93 -37
- data/POLICIES.md +65 -16
- data/README.md +28 -13
- data/UPGRADING.md +5 -81
- data/bin/gem +2 -10
- data/bin/update_rubygems +5 -5
- data/bundler/CHANGELOG.md +647 -1
- data/bundler/README.md +3 -6
- data/bundler/UPGRADING.md +11 -4
- data/bundler/bundler.gemspec +8 -10
- data/bundler/exe/bundle +7 -11
- data/bundler/exe/bundler +1 -1
- data/bundler/lib/bundler/.document +1 -0
- data/bundler/lib/bundler/build_metadata.rb +3 -3
- data/bundler/lib/bundler/cli/add.rb +1 -1
- data/bundler/lib/bundler/cli/binstubs.rb +5 -1
- data/bundler/lib/bundler/cli/check.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +4 -2
- data/bundler/lib/bundler/cli/config.rb +10 -1
- data/bundler/lib/bundler/cli/console.rb +2 -2
- data/bundler/lib/bundler/cli/doctor.rb +10 -3
- data/bundler/lib/bundler/cli/gem.rb +136 -42
- data/bundler/lib/bundler/cli/info.rb +17 -3
- data/bundler/lib/bundler/cli/init.rb +6 -2
- data/bundler/lib/bundler/cli/install.rb +15 -33
- data/bundler/lib/bundler/cli/lock.rb +8 -5
- data/bundler/lib/bundler/cli/open.rb +6 -4
- data/bundler/lib/bundler/cli/outdated.rb +13 -6
- data/bundler/lib/bundler/cli/platform.rb +2 -2
- data/bundler/lib/bundler/cli/show.rb +1 -1
- data/bundler/lib/bundler/cli/update.rb +8 -4
- data/bundler/lib/bundler/cli/viz.rb +1 -1
- data/bundler/lib/bundler/cli.rb +67 -21
- data/bundler/lib/bundler/compact_index_client/cache.rb +1 -10
- data/bundler/lib/bundler/compact_index_client/updater.rb +53 -44
- data/bundler/lib/bundler/compact_index_client.rb +0 -6
- data/bundler/lib/bundler/constants.rb +1 -1
- data/bundler/lib/bundler/current_ruby.rb +18 -6
- data/bundler/lib/bundler/definition.rb +259 -242
- data/bundler/lib/bundler/dependency.rb +24 -71
- data/bundler/lib/bundler/digest.rb +1 -1
- data/bundler/lib/bundler/dsl.rb +29 -46
- data/bundler/lib/bundler/endpoint_specification.rb +15 -13
- data/bundler/lib/bundler/env.rb +2 -2
- data/bundler/lib/bundler/environment_preserver.rb +7 -3
- data/bundler/lib/bundler/errors.rb +15 -15
- data/bundler/lib/bundler/feature_flag.rb +0 -1
- data/bundler/lib/bundler/fetcher/base.rb +6 -8
- data/bundler/lib/bundler/fetcher/compact_index.rb +18 -25
- data/bundler/lib/bundler/fetcher/dependency.rb +2 -6
- data/bundler/lib/bundler/fetcher/downloader.rb +2 -5
- data/bundler/lib/bundler/fetcher/index.rb +0 -26
- data/bundler/lib/bundler/fetcher.rb +22 -29
- data/bundler/lib/bundler/force_platform.rb +18 -0
- data/bundler/lib/bundler/friendly_errors.rb +21 -7
- data/bundler/lib/bundler/gem_helper.rb +4 -4
- data/bundler/lib/bundler/gem_helpers.rb +9 -2
- data/bundler/lib/bundler/gem_version_promoter.rb +53 -98
- data/bundler/lib/bundler/graph.rb +3 -3
- data/bundler/lib/bundler/index.rb +13 -51
- data/bundler/lib/bundler/injector.rb +18 -4
- data/bundler/lib/bundler/inline.rb +9 -21
- data/bundler/lib/bundler/installer/gem_installer.rb +13 -5
- data/bundler/lib/bundler/installer/parallel_installer.rb +3 -33
- data/bundler/lib/bundler/installer/standalone.rb +42 -11
- data/bundler/lib/bundler/installer.rb +20 -44
- data/bundler/lib/bundler/lazy_specification.rb +72 -55
- data/bundler/lib/bundler/lockfile_generator.rb +3 -3
- data/bundler/lib/bundler/lockfile_parser.rb +28 -26
- data/bundler/lib/bundler/man/bundle-add.1 +21 -5
- data/bundler/lib/bundler/man/bundle-add.1.ronn +16 -4
- data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
- data/bundler/lib/bundler/man/bundle-cache.1 +7 -1
- data/bundler/lib/bundler/man/bundle-cache.1.ronn +7 -0
- data/bundler/lib/bundler/man/bundle-check.1 +1 -1
- data/bundler/lib/bundler/man/bundle-clean.1 +2 -2
- data/bundler/lib/bundler/man/bundle-clean.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-config.1 +34 -15
- data/bundler/lib/bundler/man/bundle-config.1.ronn +31 -19
- data/bundler/lib/bundler/man/bundle-console.1 +53 -0
- data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
- data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
- data/bundler/lib/bundler/man/bundle-exec.1 +6 -6
- data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -6
- data/bundler/lib/bundler/man/bundle-gem.1 +37 -34
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +21 -5
- data/bundler/lib/bundler/man/bundle-help.1 +13 -0
- data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
- data/bundler/lib/bundler/man/bundle-info.1 +1 -1
- data/bundler/lib/bundler/man/bundle-init.1 +5 -1
- data/bundler/lib/bundler/man/bundle-init.1.ronn +2 -0
- data/bundler/lib/bundler/man/bundle-inject.1 +5 -2
- data/bundler/lib/bundler/man/bundle-inject.1.ronn +3 -1
- data/bundler/lib/bundler/man/bundle-install.1 +6 -31
- data/bundler/lib/bundler/man/bundle-install.1.ronn +8 -31
- data/bundler/lib/bundler/man/bundle-list.1 +1 -1
- data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
- data/bundler/lib/bundler/man/bundle-open.1 +22 -2
- data/bundler/lib/bundler/man/bundle-open.1.ronn +9 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +3 -10
- data/bundler/lib/bundler/man/bundle-outdated.1.ronn +1 -10
- data/bundler/lib/bundler/man/bundle-platform.1 +16 -6
- data/bundler/lib/bundler/man/bundle-platform.1.ronn +14 -7
- data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
- data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
- data/bundler/lib/bundler/man/bundle-show.1 +1 -1
- data/bundler/lib/bundler/man/bundle-update.1 +2 -2
- data/bundler/lib/bundler/man/bundle-update.1.ronn +2 -1
- data/bundler/lib/bundler/man/bundle-version.1 +35 -0
- data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
- data/bundler/lib/bundler/man/bundle-viz.1 +4 -1
- data/bundler/lib/bundler/man/bundle-viz.1.ronn +2 -0
- data/bundler/lib/bundler/man/bundle.1 +15 -10
- data/bundler/lib/bundler/man/bundle.1.ronn +12 -7
- data/bundler/lib/bundler/man/gemfile.5 +117 -80
- data/bundler/lib/bundler/man/gemfile.5.ronn +105 -84
- data/bundler/lib/bundler/man/index.txt +4 -0
- data/bundler/lib/bundler/match_metadata.rb +13 -0
- data/bundler/lib/bundler/match_platform.rb +0 -1
- data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
- data/bundler/lib/bundler/mirror.rb +5 -7
- data/bundler/lib/bundler/plugin/api/source.rb +4 -9
- data/bundler/lib/bundler/plugin/index.rb +4 -4
- data/bundler/lib/bundler/plugin/installer/git.rb +0 -4
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -8
- data/bundler/lib/bundler/plugin/installer.rb +6 -3
- data/bundler/lib/bundler/plugin.rb +3 -1
- data/bundler/lib/bundler/process_lock.rb +1 -1
- data/bundler/lib/bundler/remote_specification.rb +7 -5
- data/bundler/lib/bundler/resolver/base.rb +109 -0
- data/bundler/lib/bundler/resolver/candidate.rb +94 -0
- data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
- data/bundler/lib/bundler/resolver/package.rb +72 -0
- data/bundler/lib/bundler/resolver/root.rb +25 -0
- data/bundler/lib/bundler/resolver/spec_group.rb +43 -71
- data/bundler/lib/bundler/resolver.rb +332 -308
- data/bundler/lib/bundler/ruby_dsl.rb +1 -1
- data/bundler/lib/bundler/ruby_version.rb +5 -18
- data/bundler/lib/bundler/rubygems_ext.rb +144 -25
- data/bundler/lib/bundler/rubygems_gem_installer.rb +32 -20
- data/bundler/lib/bundler/rubygems_integration.rb +24 -95
- data/bundler/lib/bundler/runtime.rb +2 -7
- data/bundler/lib/bundler/self_manager.rb +168 -0
- data/bundler/lib/bundler/settings.rb +5 -10
- data/bundler/lib/bundler/setup.rb +4 -1
- data/bundler/lib/bundler/shared_helpers.rb +17 -25
- data/bundler/lib/bundler/source/git/git_proxy.rb +219 -71
- data/bundler/lib/bundler/source/git.rb +23 -26
- data/bundler/lib/bundler/source/metadata.rb +3 -4
- data/bundler/lib/bundler/source/path/installer.rb +1 -22
- data/bundler/lib/bundler/source/path.rb +7 -7
- data/bundler/lib/bundler/source/rubygems.rb +91 -130
- data/bundler/lib/bundler/source/rubygems_aggregate.rb +1 -1
- data/bundler/lib/bundler/source.rb +4 -5
- data/bundler/lib/bundler/source_list.rb +19 -31
- data/bundler/lib/bundler/source_map.rb +15 -2
- data/bundler/lib/bundler/spec_set.rb +63 -35
- data/bundler/lib/bundler/stub_specification.rb +5 -3
- data/bundler/lib/bundler/templates/Executable +3 -5
- data/bundler/lib/bundler/templates/Executable.bundler +6 -11
- data/bundler/lib/bundler/templates/Executable.standalone +4 -4
- data/bundler/lib/bundler/templates/Gemfile +0 -2
- data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +8 -2
- data/bundler/lib/bundler/templates/newgem/README.md.tt +7 -11
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +27 -3
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +13 -3
- data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +13 -4
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +22 -16
- data/bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
- data/bundler/lib/bundler/templates/newgem/standard.yml.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/test/minitest/{newgem_test.rb.tt → test_newgem.rb.tt} +1 -1
- data/bundler/lib/bundler/ui/shell.rb +36 -13
- data/bundler/lib/bundler/ui/silent.rb +21 -5
- data/bundler/lib/bundler/uri_normalizer.rb +23 -0
- data/bundler/lib/bundler/vendor/.document +1 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1350 -408
- data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
- data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +243 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +6 -6
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +1 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +6 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +6 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +9 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +19 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +23 -5
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell.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/vendor/tsort/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +452 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +76 -91
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +32 -13
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -3
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -3
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +14 -21
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +11 -17
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +83 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +23 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -3
- data/bundler/lib/bundler/vendored_persistent.rb +1 -33
- data/bundler/lib/bundler/{vendored_molinillo.rb → vendored_pub_grub.rb} +1 -1
- data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_tsort.rb} +1 -1
- data/bundler/lib/bundler/version.rb +5 -1
- data/bundler/lib/bundler/worker.rb +5 -7
- data/bundler/lib/bundler.rb +50 -77
- data/hide_lib_for_update/note.txt +0 -4
- data/lib/rubygems/available_set.rb +3 -3
- data/lib/rubygems/basic_specification.rb +12 -12
- data/lib/rubygems/bundler_version_finder.rb +14 -46
- data/lib/rubygems/command.rb +47 -39
- data/lib/rubygems/command_manager.rb +34 -13
- data/lib/rubygems/commands/build_command.rb +11 -8
- data/lib/rubygems/commands/cert_command.rb +39 -39
- data/lib/rubygems/commands/check_command.rb +20 -20
- data/lib/rubygems/commands/cleanup_command.rb +23 -23
- data/lib/rubygems/commands/contents_command.rb +13 -13
- data/lib/rubygems/commands/dependency_command.rb +35 -45
- data/lib/rubygems/commands/environment_command.rb +10 -7
- data/lib/rubygems/commands/exec_command.rb +248 -0
- data/lib/rubygems/commands/fetch_command.rb +32 -13
- data/lib/rubygems/commands/generate_index_command.rb +17 -17
- data/lib/rubygems/commands/help_command.rb +6 -6
- data/lib/rubygems/commands/info_command.rb +3 -3
- data/lib/rubygems/commands/install_command.rb +31 -24
- data/lib/rubygems/commands/list_command.rb +4 -4
- data/lib/rubygems/commands/lock_command.rb +4 -4
- data/lib/rubygems/commands/mirror_command.rb +3 -3
- data/lib/rubygems/commands/open_command.rb +9 -9
- data/lib/rubygems/commands/outdated_command.rb +5 -5
- data/lib/rubygems/commands/owner_command.rb +17 -12
- data/lib/rubygems/commands/pristine_command.rb +64 -49
- data/lib/rubygems/commands/push_command.rb +16 -16
- data/lib/rubygems/commands/query_command.rb +9 -9
- data/lib/rubygems/commands/rdoc_command.rb +26 -25
- data/lib/rubygems/commands/search_command.rb +4 -4
- data/lib/rubygems/commands/server_command.rb +16 -79
- data/lib/rubygems/commands/setup_command.rb +172 -173
- data/lib/rubygems/commands/signin_command.rb +9 -9
- data/lib/rubygems/commands/signout_command.rb +7 -7
- data/lib/rubygems/commands/sources_command.rb +22 -22
- data/lib/rubygems/commands/specification_command.rb +18 -18
- data/lib/rubygems/commands/stale_command.rb +2 -2
- data/lib/rubygems/commands/uninstall_command.rb +43 -40
- data/lib/rubygems/commands/unpack_command.rb +13 -13
- data/lib/rubygems/commands/update_command.rb +61 -72
- data/lib/rubygems/commands/which_command.rb +7 -7
- data/lib/rubygems/commands/yank_command.rb +11 -11
- data/lib/rubygems/compatibility.rb +4 -2
- data/lib/rubygems/config_file.rb +58 -25
- data/lib/rubygems/core_ext/kernel_gem.rb +1 -6
- data/lib/rubygems/core_ext/kernel_require.rb +108 -115
- data/lib/rubygems/core_ext/kernel_warn.rb +33 -37
- data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
- data/lib/rubygems/defaults.rb +32 -36
- data/lib/rubygems/dependency.rb +20 -17
- data/lib/rubygems/dependency_installer.rb +37 -37
- data/lib/rubygems/dependency_list.rb +7 -7
- data/lib/rubygems/deprecate.rb +55 -8
- data/lib/rubygems/doctor.rb +21 -21
- data/lib/rubygems/errors.rb +3 -6
- data/lib/rubygems/exceptions.rb +35 -7
- data/lib/rubygems/ext/build_error.rb +1 -1
- data/lib/rubygems/ext/builder.rb +51 -22
- data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +27 -0
- data/lib/rubygems/ext/cargo_builder.rb +360 -0
- data/lib/rubygems/ext/cmake_builder.rb +2 -2
- data/lib/rubygems/ext/configure_builder.rb +1 -1
- data/lib/rubygems/ext/ext_conf_builder.rb +35 -59
- data/lib/rubygems/ext/rake_builder.rb +3 -3
- data/lib/rubygems/ext.rb +7 -6
- data/lib/rubygems/gem_runner.rb +12 -16
- data/lib/rubygems/gemcutter_utilities.rb +60 -21
- data/lib/rubygems/indexer.rb +30 -28
- data/lib/rubygems/install_default_message.rb +2 -2
- data/lib/rubygems/install_message.rb +2 -2
- data/lib/rubygems/install_update_options.rb +70 -61
- data/lib/rubygems/installer.rb +135 -87
- data/lib/rubygems/installer_uninstaller_utils.rb +2 -2
- data/lib/rubygems/local_remote_options.rb +22 -24
- data/lib/rubygems/mock_gem_ui.rb +2 -2
- data/lib/rubygems/name_tuple.rb +6 -7
- data/lib/rubygems/optparse/.document +1 -0
- data/lib/rubygems/optparse/COPYING +56 -0
- data/lib/rubygems/optparse/lib/optionparser.rb +2 -0
- data/lib/rubygems/optparse/lib/optparse/ac.rb +54 -0
- data/lib/rubygems/optparse/lib/optparse/date.rb +18 -0
- data/lib/rubygems/optparse/lib/optparse/kwargs.rb +22 -0
- data/lib/rubygems/optparse/lib/optparse/shellwords.rb +7 -0
- data/lib/rubygems/optparse/lib/optparse/time.rb +11 -0
- data/lib/rubygems/optparse/lib/optparse/uri.rb +7 -0
- data/lib/rubygems/optparse/lib/optparse/version.rb +71 -0
- data/lib/rubygems/optparse/lib/optparse.rb +2308 -0
- data/lib/rubygems/optparse.rb +3 -0
- data/lib/rubygems/package/file_source.rb +2 -2
- data/lib/rubygems/package/old.rb +9 -9
- data/lib/rubygems/package/tar_header.rb +62 -62
- data/lib/rubygems/package/tar_reader/entry.rb +90 -9
- data/lib/rubygems/package/tar_reader.rb +1 -29
- data/lib/rubygems/package/tar_writer.rb +7 -7
- data/lib/rubygems/package.rb +77 -60
- data/lib/rubygems/package_task.rb +4 -4
- data/lib/rubygems/path_support.rb +1 -6
- data/lib/rubygems/platform.rb +94 -61
- data/lib/rubygems/psych_tree.rb +1 -1
- data/lib/rubygems/query_utils.rb +49 -51
- data/lib/rubygems/rdoc.rb +2 -2
- data/lib/rubygems/remote_fetcher.rb +27 -27
- data/lib/rubygems/request/connection_pools.rb +4 -4
- data/lib/rubygems/request/http_pool.rb +1 -1
- data/lib/rubygems/request.rb +24 -24
- data/lib/rubygems/request_set/gem_dependency_api.rb +122 -123
- data/lib/rubygems/request_set/lockfile/parser.rb +26 -26
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +4 -4
- data/lib/rubygems/request_set/lockfile.rb +9 -9
- data/lib/rubygems/request_set.rb +18 -18
- data/lib/rubygems/requirement.rb +15 -15
- data/lib/rubygems/resolver/activation_request.rb +3 -3
- data/lib/rubygems/resolver/api_set.rb +4 -4
- data/lib/rubygems/resolver/api_specification.rb +6 -6
- data/lib/rubygems/resolver/best_set.rb +5 -5
- data/lib/rubygems/resolver/conflict.rb +10 -10
- data/lib/rubygems/resolver/dependency_request.rb +2 -2
- data/lib/rubygems/resolver/git_set.rb +2 -2
- data/lib/rubygems/resolver/git_specification.rb +6 -6
- data/lib/rubygems/resolver/index_set.rb +3 -3
- data/lib/rubygems/resolver/index_specification.rb +6 -5
- data/lib/rubygems/resolver/installed_specification.rb +4 -4
- data/lib/rubygems/resolver/installer_set.rb +21 -26
- data/lib/rubygems/resolver/local_specification.rb +2 -2
- data/lib/rubygems/resolver/lock_set.rb +4 -4
- data/lib/rubygems/resolver/lock_specification.rb +4 -4
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +3 -3
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/lib/rubygems/resolver/molinillo.rb +1 -1
- data/lib/rubygems/resolver/specification.rb +1 -1
- data/lib/rubygems/resolver/stats.rb +1 -1
- data/lib/rubygems/resolver/vendor_set.rb +1 -1
- data/lib/rubygems/resolver/vendor_specification.rb +3 -3
- data/lib/rubygems/resolver.rb +40 -40
- data/lib/rubygems/s3_uri_signer.rb +6 -6
- data/lib/rubygems/safe_yaml.rb +10 -10
- data/lib/rubygems/security/policies.rb +47 -47
- data/lib/rubygems/security/policy.rb +19 -21
- data/lib/rubygems/security/signer.rb +5 -5
- data/lib/rubygems/security/trust_dir.rb +4 -4
- data/lib/rubygems/security.rb +37 -43
- data/lib/rubygems/security_option.rb +7 -7
- data/lib/rubygems/source/git.rb +25 -24
- data/lib/rubygems/source/installed.rb +1 -1
- data/lib/rubygems/source/local.rb +2 -2
- data/lib/rubygems/source/specific_file.rb +1 -1
- data/lib/rubygems/source.rb +27 -32
- data/lib/rubygems/source_list.rb +5 -9
- data/lib/rubygems/spec_fetcher.rb +37 -37
- data/lib/rubygems/specification.rb +265 -211
- data/lib/rubygems/specification_policy.rb +49 -30
- data/lib/rubygems/stub_specification.rb +24 -27
- data/lib/rubygems/text.rb +22 -21
- data/lib/rubygems/tsort/.document +1 -0
- data/lib/rubygems/tsort/LICENSE.txt +22 -0
- data/lib/rubygems/tsort/lib/tsort.rb +452 -0
- data/lib/rubygems/tsort.rb +3 -0
- data/lib/rubygems/uninstaller.rb +29 -26
- data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
- data/lib/rubygems/update_suggestion.rb +69 -0
- data/lib/rubygems/uri.rb +45 -30
- data/lib/rubygems/uri_formatter.rb +1 -1
- data/lib/rubygems/user_interaction.rb +42 -28
- data/lib/rubygems/util/licenses.rb +4 -2
- data/lib/rubygems/util.rb +12 -16
- data/lib/rubygems/validator.rb +6 -6
- data/lib/rubygems/version.rb +28 -17
- data/lib/rubygems/version_option.rb +5 -5
- data/lib/rubygems.rb +129 -117
- data/rubygems-update.gemspec +3 -3
- data/setup.rb +11 -16
- data/test/rubygems/alternate_cert.pem +14 -14
- data/test/rubygems/alternate_cert_32.pem +15 -15
- data/test/rubygems/alternate_key.pem +25 -25
- data/test/rubygems/bundler_test_gem.rb +419 -0
- data/test/rubygems/child_cert.pem +15 -16
- data/test/rubygems/child_cert_32.pem +15 -16
- data/test/rubygems/child_key.pem +25 -25
- data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
- data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
- data/test/rubygems/encrypted_private_key.pem +26 -26
- data/test/rubygems/expired_cert.pem +15 -15
- data/test/rubygems/future_cert.pem +15 -15
- data/test/rubygems/future_cert_32.pem +15 -15
- data/test/rubygems/grandchild_cert.pem +15 -16
- data/test/rubygems/grandchild_cert_32.pem +15 -16
- data/test/rubygems/grandchild_key.pem +25 -25
- data/test/rubygems/helper.rb +237 -207
- data/test/rubygems/installer_test_case.rb +13 -13
- data/test/rubygems/invalid_issuer_cert.pem +16 -16
- data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
- data/test/rubygems/invalid_key.pem +25 -25
- data/test/rubygems/invalid_signer_cert.pem +15 -15
- data/test/rubygems/invalid_signer_cert_32.pem +15 -15
- data/test/rubygems/invalidchild_cert.pem +15 -16
- data/test/rubygems/invalidchild_cert_32.pem +15 -16
- data/test/rubygems/invalidchild_key.pem +25 -25
- data/test/rubygems/package/tar_test_case.rb +52 -17
- data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
- data/test/rubygems/plugin/exception/rubygems_plugin.rb +1 -1
- data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
- data/test/rubygems/private_key.pem +25 -25
- data/test/rubygems/public_cert.pem +16 -16
- data/test/rubygems/public_cert_32.pem +15 -15
- data/test/rubygems/public_key.pem +7 -7
- data/test/rubygems/rubygems_plugin.rb +2 -2
- data/test/rubygems/simple_gem.rb +1 -1
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +4 -4
- data/test/rubygems/test_bundled_ca.rb +11 -11
- data/test/rubygems/test_config.rb +5 -5
- data/test/rubygems/test_deprecate.rb +3 -3
- data/test/rubygems/test_exit.rb +17 -0
- data/test/rubygems/test_gem.rb +367 -757
- data/test/rubygems/test_gem_available_set.rb +21 -21
- data/test/rubygems/test_gem_bundler_version_finder.rb +27 -47
- data/test/rubygems/test_gem_command.rb +45 -45
- data/test/rubygems/test_gem_command_manager.rb +124 -27
- data/test/rubygems/test_gem_commands_build_command.rb +73 -63
- data/test/rubygems/test_gem_commands_cert_command.rb +105 -107
- data/test/rubygems/test_gem_commands_check_command.rb +4 -4
- data/test/rubygems/test_gem_commands_cleanup_command.rb +40 -40
- data/test/rubygems/test_gem_commands_contents_command.rb +28 -28
- data/test/rubygems/test_gem_commands_dependency_command.rb +36 -36
- data/test/rubygems/test_gem_commands_environment_command.rb +38 -14
- data/test/rubygems/test_gem_commands_exec_command.rb +851 -0
- data/test/rubygems/test_gem_commands_fetch_command.rb +159 -26
- data/test/rubygems/test_gem_commands_generate_index_command.rb +7 -7
- data/test/rubygems/test_gem_commands_help_command.rb +13 -13
- data/test/rubygems/test_gem_commands_info_command.rb +28 -2
- data/test/rubygems/test_gem_commands_install_command.rb +200 -132
- data/test/rubygems/test_gem_commands_list_command.rb +4 -4
- data/test/rubygems/test_gem_commands_lock_command.rb +10 -10
- data/test/rubygems/test_gem_commands_mirror.rb +2 -2
- data/test/rubygems/test_gem_commands_open_command.rb +5 -5
- data/test/rubygems/test_gem_commands_outdated_command.rb +9 -9
- data/test/rubygems/test_gem_commands_owner_command.rb +126 -45
- data/test/rubygems/test_gem_commands_pristine_command.rb +141 -92
- data/test/rubygems/test_gem_commands_push_command.rb +85 -59
- data/test/rubygems/test_gem_commands_query_command.rb +73 -73
- data/test/rubygems/test_gem_commands_search_command.rb +2 -2
- data/test/rubygems/test_gem_commands_server_command.rb +6 -48
- data/test/rubygems/test_gem_commands_setup_command.rb +169 -92
- data/test/rubygems/test_gem_commands_signin_command.rb +154 -26
- data/test/rubygems/test_gem_commands_signout_command.rb +3 -3
- data/test/rubygems/test_gem_commands_sources_command.rb +74 -25
- data/test/rubygems/test_gem_commands_specification_command.rb +32 -32
- data/test/rubygems/test_gem_commands_stale_command.rb +4 -4
- data/test/rubygems/test_gem_commands_uninstall_command.rb +99 -82
- data/test/rubygems/test_gem_commands_unpack_command.rb +31 -31
- data/test/rubygems/test_gem_commands_update_command.rb +202 -91
- data/test/rubygems/test_gem_commands_which_command.rb +6 -6
- data/test/rubygems/test_gem_commands_yank_command.rb +43 -43
- data/test/rubygems/test_gem_config_file.rb +93 -81
- data/test/rubygems/test_gem_dependency.rb +78 -80
- data/test/rubygems/test_gem_dependency_installer.rb +165 -165
- data/test/rubygems/test_gem_dependency_list.rb +47 -47
- data/test/rubygems/test_gem_dependency_resolution_error.rb +4 -4
- data/test/rubygems/test_gem_doctor.rb +26 -26
- data/test/rubygems/test_gem_ext_builder.rb +60 -62
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +8 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +233 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +27 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +247 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +8 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +51 -0
- data/test/rubygems/test_gem_ext_cargo_builder.rb +166 -0
- data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +33 -0
- data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +60 -0
- data/test/rubygems/test_gem_ext_cmake_builder.rb +17 -15
- data/test/rubygems/test_gem_ext_configure_builder.rb +13 -13
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +53 -50
- data/test/rubygems/test_gem_ext_rake_builder.rb +15 -15
- data/test/rubygems/test_gem_gem_runner.rb +13 -8
- data/test/rubygems/test_gem_gemcutter_utilities.rb +71 -65
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -4
- data/test/rubygems/test_gem_indexer.rb +90 -67
- data/test/rubygems/test_gem_install_update_options.rb +18 -18
- data/test/rubygems/test_gem_installer.rb +511 -327
- data/test/rubygems/test_gem_local_remote_options.rb +10 -10
- data/test/rubygems/test_gem_name_tuple.rb +4 -4
- data/test/rubygems/test_gem_package.rb +246 -236
- data/test/rubygems/test_gem_package_old.rb +13 -13
- data/test/rubygems/test_gem_package_tar_header.rb +47 -47
- data/test/rubygems/test_gem_package_tar_reader.rb +55 -8
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +161 -16
- data/test/rubygems/test_gem_package_tar_writer.rb +76 -76
- data/test/rubygems/test_gem_package_task.rb +18 -18
- data/test/rubygems/test_gem_path_support.rb +15 -19
- data/test/rubygems/test_gem_platform.rb +335 -214
- data/test/rubygems/test_gem_rdoc.rb +14 -14
- data/test/rubygems/test_gem_remote_fetcher.rb +169 -154
- data/test/rubygems/test_gem_request.rb +65 -59
- data/test/rubygems/test_gem_request_connection_pools.rb +29 -29
- data/test/rubygems/test_gem_request_set.rb +100 -100
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +209 -211
- data/test/rubygems/test_gem_request_set_lockfile.rb +86 -86
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +58 -58
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +62 -62
- data/test/rubygems/test_gem_requirement.rb +47 -42
- data/test/rubygems/test_gem_resolver.rb +173 -106
- data/test/rubygems/test_gem_resolver_activation_request.rb +6 -6
- data/test/rubygems/test_gem_resolver_api_set.rb +33 -33
- data/test/rubygems/test_gem_resolver_api_specification.rb +47 -47
- data/test/rubygems/test_gem_resolver_best_set.rb +22 -22
- data/test/rubygems/test_gem_resolver_composed_set.rb +1 -1
- data/test/rubygems/test_gem_resolver_conflict.rb +12 -12
- data/test/rubygems/test_gem_resolver_dependency_request.rb +15 -15
- data/test/rubygems/test_gem_resolver_git_set.rb +21 -21
- data/test/rubygems/test_gem_resolver_git_specification.rb +21 -21
- data/test/rubygems/test_gem_resolver_index_set.rb +12 -12
- data/test/rubygems/test_gem_resolver_index_specification.rb +16 -16
- data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -5
- data/test/rubygems/test_gem_resolver_installer_set.rb +79 -35
- data/test/rubygems/test_gem_resolver_local_specification.rb +7 -7
- data/test/rubygems/test_gem_resolver_lock_set.rb +12 -12
- data/test/rubygems/test_gem_resolver_lock_specification.rb +17 -17
- data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -1
- data/test/rubygems/test_gem_resolver_specification.rb +8 -8
- data/test/rubygems/test_gem_resolver_vendor_set.rb +6 -6
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +10 -10
- data/test/rubygems/test_gem_security.rb +69 -69
- data/test/rubygems/test_gem_security_policy.rb +72 -72
- data/test/rubygems/test_gem_security_signer.rb +34 -34
- data/test/rubygems/test_gem_security_trust_dir.rb +6 -6
- data/test/rubygems/test_gem_silent_ui.rb +38 -32
- data/test/rubygems/test_gem_source.rb +44 -44
- data/test/rubygems/test_gem_source_fetch_problem.rb +9 -9
- data/test/rubygems/test_gem_source_git.rb +69 -62
- data/test/rubygems/test_gem_source_installed.rb +16 -16
- data/test/rubygems/test_gem_source_list.rb +5 -5
- data/test/rubygems/test_gem_source_local.rb +14 -14
- data/test/rubygems/test_gem_source_lock.rb +31 -31
- data/test/rubygems/test_gem_source_specific_file.rb +17 -17
- data/test/rubygems/test_gem_source_subpath_problem.rb +7 -7
- data/test/rubygems/test_gem_source_vendor.rb +13 -13
- data/test/rubygems/test_gem_spec_fetcher.rb +72 -72
- data/test/rubygems/test_gem_specification.rb +560 -493
- data/test/rubygems/test_gem_stream_ui.rb +20 -20
- data/test/rubygems/test_gem_stub_specification.rb +32 -48
- data/test/rubygems/test_gem_text.rb +7 -1
- data/test/rubygems/test_gem_uninstaller.rb +113 -113
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -3
- data/test/rubygems/test_gem_update_suggestion.rb +208 -0
- data/test/rubygems/test_gem_uri.rb +4 -4
- data/test/rubygems/test_gem_uri_formatter.rb +14 -14
- data/test/rubygems/test_gem_util.rb +23 -23
- data/test/rubygems/test_gem_validator.rb +8 -8
- data/test/rubygems/test_gem_version.rb +27 -16
- data/test/rubygems/test_gem_version_option.rb +15 -15
- data/test/rubygems/test_kernel.rb +42 -60
- data/test/rubygems/test_project_sanity.rb +2 -2
- data/test/rubygems/test_remote_fetch_error.rb +6 -6
- data/test/rubygems/test_require.rb +132 -174
- data/test/rubygems/test_rubygems.rb +42 -12
- data/test/rubygems/utilities.rb +59 -37
- data/test/rubygems/wrong_key_cert.pem +15 -15
- data/test/rubygems/wrong_key_cert_32.pem +15 -15
- data/test/test_changelog_generator.rb +1 -0
- metadata +97 -41
- data/bundler/lib/bundler/dep_proxy.rb +0 -55
- data/bundler/lib/bundler/gemdeps.rb +0 -29
- data/bundler/lib/bundler/psyched_yaml.rb +0 -22
- data/bundler/lib/bundler/templates/gems.rb +0 -8
- data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
- data/bundler/lib/bundler/vendor/molinillo/LICENSE +0 -9
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -143
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
- data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
- data/bundler/lib/bundler/version_ranges.rb +0 -122
- data/lib/rubygems/psych_additions.rb +0 -10
- data/lib/rubygems/server.rb +0 -882
- data/test/rubygems/bogussources.rb +0 -9
- data/test/rubygems/data/null-type.gemspec.rz +0 -0
- data/test/rubygems/test_gem_server.rb +0 -608
- /data/bundler/lib/bundler/templates/newgem/ext/newgem/{extconf.rb.tt → extconf-c.rb.tt} +0 -0
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
require_relative
|
|
2
|
+
require_relative "helper"
|
|
3
3
|
|
|
4
|
-
require
|
|
5
|
-
require
|
|
4
|
+
require "webrick"
|
|
5
|
+
require "webrick/https" if Gem::HAVE_OPENSSL
|
|
6
6
|
|
|
7
7
|
unless Gem::HAVE_OPENSSL
|
|
8
|
-
warn
|
|
8
|
+
warn "Skipping Gem::RemoteFetcher tests. openssl not found."
|
|
9
9
|
end
|
|
10
10
|
|
|
11
|
-
require
|
|
12
|
-
require
|
|
11
|
+
require "rubygems/remote_fetcher"
|
|
12
|
+
require "rubygems/package"
|
|
13
13
|
|
|
14
14
|
# = Testing Proxy Settings
|
|
15
15
|
#
|
|
@@ -28,7 +28,7 @@ require 'rubygems/package'
|
|
|
28
28
|
class TestGemRemoteFetcher < Gem::TestCase
|
|
29
29
|
include Gem::DefaultUserInteraction
|
|
30
30
|
|
|
31
|
-
SERVER_DATA = <<-EOY
|
|
31
|
+
SERVER_DATA = <<-EOY
|
|
32
32
|
--- !ruby/object:Gem::Cache
|
|
33
33
|
gems:
|
|
34
34
|
rake-0.4.11: !ruby/object:Gem::Specification
|
|
@@ -69,7 +69,7 @@ gems:
|
|
|
69
69
|
dependencies: []
|
|
70
70
|
EOY
|
|
71
71
|
|
|
72
|
-
PROXY_DATA = SERVER_DATA.gsub(/0.4.11/,
|
|
72
|
+
PROXY_DATA = SERVER_DATA.gsub(/0.4.11/, "0.4.2")
|
|
73
73
|
|
|
74
74
|
# Generated via:
|
|
75
75
|
# x = OpenSSL::PKey::DH.new(2048) # wait a while...
|
|
@@ -104,11 +104,11 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
104
104
|
@cache_dir = File.join @gemhome, "cache"
|
|
105
105
|
|
|
106
106
|
# TODO: why does the remote fetcher need it written to disk?
|
|
107
|
-
@a1, @a1_gem = util_gem
|
|
108
|
-
s.executables <<
|
|
107
|
+
@a1, @a1_gem = util_gem "a", "1" do |s|
|
|
108
|
+
s.executables << "a_bin"
|
|
109
109
|
end
|
|
110
110
|
|
|
111
|
-
@a1.loaded_from = File.join(@gemhome,
|
|
111
|
+
@a1.loaded_from = File.join(@gemhome, "specifications", @a1.full_name)
|
|
112
112
|
|
|
113
113
|
Gem::RemoteFetcher.fetcher = nil
|
|
114
114
|
@stub_ui = Gem::MockGemUi.new
|
|
@@ -130,7 +130,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
130
130
|
end
|
|
131
131
|
|
|
132
132
|
def test_self_fetcher_with_proxy
|
|
133
|
-
proxy_uri =
|
|
133
|
+
proxy_uri = "http://proxy.example.com"
|
|
134
134
|
Gem.configuration[:http_proxy] = proxy_uri
|
|
135
135
|
Gem::RemoteFetcher.fetcher = nil
|
|
136
136
|
|
|
@@ -149,39 +149,54 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
149
149
|
@fetcher.fetch_path("gems.example.com/yaml", nil, true)
|
|
150
150
|
end
|
|
151
151
|
|
|
152
|
-
assert_equal
|
|
152
|
+
assert_equal "uri scheme is invalid: nil", e.message
|
|
153
153
|
end
|
|
154
154
|
|
|
155
155
|
def test_no_proxy
|
|
156
156
|
use_ui @stub_ui do
|
|
157
157
|
assert_data_from_server @fetcher.fetch_path(@server_uri)
|
|
158
158
|
response = @fetcher.fetch_path(@server_uri, nil, true)
|
|
159
|
-
assert_equal SERVER_DATA.size, response[
|
|
159
|
+
assert_equal SERVER_DATA.size, response["content-length"].to_i
|
|
160
160
|
end
|
|
161
161
|
end
|
|
162
162
|
|
|
163
163
|
def test_cache_update_path
|
|
164
|
-
uri = URI
|
|
165
|
-
path = File.join @tempdir,
|
|
164
|
+
uri = URI "http://example/file"
|
|
165
|
+
path = File.join @tempdir, "file"
|
|
166
166
|
|
|
167
|
-
fetcher = util_fuck_with_fetcher
|
|
167
|
+
fetcher = util_fuck_with_fetcher "hello"
|
|
168
168
|
|
|
169
169
|
data = fetcher.cache_update_path uri, path
|
|
170
170
|
|
|
171
|
-
assert_equal
|
|
171
|
+
assert_equal "hello", data
|
|
172
172
|
|
|
173
|
-
assert_equal
|
|
173
|
+
assert_equal "hello", File.read(path)
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
def test_cache_update_path_with_utf8_internal_encoding
|
|
177
|
+
with_internal_encoding("UTF-8") do
|
|
178
|
+
uri = URI "http://example/file"
|
|
179
|
+
path = File.join @tempdir, "file"
|
|
180
|
+
data = String.new("\xC8").force_encoding(Encoding::BINARY)
|
|
181
|
+
|
|
182
|
+
fetcher = util_fuck_with_fetcher data
|
|
183
|
+
|
|
184
|
+
written_data = fetcher.cache_update_path uri, path
|
|
185
|
+
|
|
186
|
+
assert_equal data, written_data
|
|
187
|
+
assert_equal data, File.binread(path)
|
|
188
|
+
end
|
|
174
189
|
end
|
|
175
190
|
|
|
176
191
|
def test_cache_update_path_no_update
|
|
177
|
-
uri = URI
|
|
178
|
-
path = File.join @tempdir,
|
|
192
|
+
uri = URI "http://example/file"
|
|
193
|
+
path = File.join @tempdir, "file"
|
|
179
194
|
|
|
180
|
-
fetcher = util_fuck_with_fetcher
|
|
195
|
+
fetcher = util_fuck_with_fetcher "hello"
|
|
181
196
|
|
|
182
197
|
data = fetcher.cache_update_path uri, path, false
|
|
183
198
|
|
|
184
|
-
assert_equal
|
|
199
|
+
assert_equal "hello", data
|
|
185
200
|
|
|
186
201
|
assert_path_not_exist path
|
|
187
202
|
end
|
|
@@ -204,7 +219,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
204
219
|
@test_data
|
|
205
220
|
end
|
|
206
221
|
|
|
207
|
-
raise Gem::RemoteFetcher::FetchError.new("haha!",
|
|
222
|
+
raise Gem::RemoteFetcher::FetchError.new("haha!", "")
|
|
208
223
|
end
|
|
209
224
|
end
|
|
210
225
|
|
|
@@ -213,14 +228,14 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
213
228
|
|
|
214
229
|
def test_download
|
|
215
230
|
a1_data = nil
|
|
216
|
-
File.open @a1_gem,
|
|
231
|
+
File.open @a1_gem, "rb" do |fp|
|
|
217
232
|
a1_data = fp.read
|
|
218
233
|
end
|
|
219
234
|
|
|
220
235
|
fetcher = util_fuck_with_fetcher a1_data
|
|
221
236
|
|
|
222
237
|
a1_cache_gem = @a1.cache_file
|
|
223
|
-
assert_equal a1_cache_gem, fetcher.download(@a1,
|
|
238
|
+
assert_equal a1_cache_gem, fetcher.download(@a1, "http://gems.example.com")
|
|
224
239
|
assert_equal("http://gems.example.com/gems/a-1.gem",
|
|
225
240
|
fetcher.instance_variable_get(:@test_arg).to_s)
|
|
226
241
|
assert File.exist?(a1_cache_gem)
|
|
@@ -228,14 +243,14 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
228
243
|
|
|
229
244
|
def test_download_with_auth
|
|
230
245
|
a1_data = nil
|
|
231
|
-
File.open @a1_gem,
|
|
246
|
+
File.open @a1_gem, "rb" do |fp|
|
|
232
247
|
a1_data = fp.read
|
|
233
248
|
end
|
|
234
249
|
|
|
235
250
|
fetcher = util_fuck_with_fetcher a1_data
|
|
236
251
|
|
|
237
252
|
a1_cache_gem = @a1.cache_file
|
|
238
|
-
assert_equal a1_cache_gem, fetcher.download(@a1,
|
|
253
|
+
assert_equal a1_cache_gem, fetcher.download(@a1, "http://user:password@gems.example.com")
|
|
239
254
|
assert_equal("http://user:password@gems.example.com/gems/a-1.gem",
|
|
240
255
|
fetcher.instance_variable_get(:@test_arg).to_s)
|
|
241
256
|
assert File.exist?(a1_cache_gem)
|
|
@@ -243,14 +258,14 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
243
258
|
|
|
244
259
|
def test_download_with_token
|
|
245
260
|
a1_data = nil
|
|
246
|
-
File.open @a1_gem,
|
|
261
|
+
File.open @a1_gem, "rb" do |fp|
|
|
247
262
|
a1_data = fp.read
|
|
248
263
|
end
|
|
249
264
|
|
|
250
265
|
fetcher = util_fuck_with_fetcher a1_data
|
|
251
266
|
|
|
252
267
|
a1_cache_gem = @a1.cache_file
|
|
253
|
-
assert_equal a1_cache_gem, fetcher.download(@a1,
|
|
268
|
+
assert_equal a1_cache_gem, fetcher.download(@a1, "http://token@gems.example.com")
|
|
254
269
|
assert_equal("http://token@gems.example.com/gems/a-1.gem",
|
|
255
270
|
fetcher.instance_variable_get(:@test_arg).to_s)
|
|
256
271
|
assert File.exist?(a1_cache_gem)
|
|
@@ -258,14 +273,14 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
258
273
|
|
|
259
274
|
def test_download_with_x_oauth_basic
|
|
260
275
|
a1_data = nil
|
|
261
|
-
File.open @a1_gem,
|
|
276
|
+
File.open @a1_gem, "rb" do |fp|
|
|
262
277
|
a1_data = fp.read
|
|
263
278
|
end
|
|
264
279
|
|
|
265
280
|
fetcher = util_fuck_with_fetcher a1_data
|
|
266
281
|
|
|
267
282
|
a1_cache_gem = @a1.cache_file
|
|
268
|
-
assert_equal a1_cache_gem, fetcher.download(@a1,
|
|
283
|
+
assert_equal a1_cache_gem, fetcher.download(@a1, "http://token:x-oauth-basic@gems.example.com")
|
|
269
284
|
assert_equal("http://token:x-oauth-basic@gems.example.com/gems/a-1.gem",
|
|
270
285
|
fetcher.instance_variable_get(:@test_arg).to_s)
|
|
271
286
|
assert File.exist?(a1_cache_gem)
|
|
@@ -273,14 +288,14 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
273
288
|
|
|
274
289
|
def test_download_with_encoded_auth
|
|
275
290
|
a1_data = nil
|
|
276
|
-
File.open @a1_gem,
|
|
291
|
+
File.open @a1_gem, "rb" do |fp|
|
|
277
292
|
a1_data = fp.read
|
|
278
293
|
end
|
|
279
294
|
|
|
280
295
|
fetcher = util_fuck_with_fetcher a1_data
|
|
281
296
|
|
|
282
297
|
a1_cache_gem = @a1.cache_file
|
|
283
|
-
assert_equal a1_cache_gem, fetcher.download(@a1,
|
|
298
|
+
assert_equal a1_cache_gem, fetcher.download(@a1, "http://user:%25pas%25sword@gems.example.com")
|
|
284
299
|
assert_equal("http://user:%25pas%25sword@gems.example.com/gems/a-1.gem",
|
|
285
300
|
fetcher.instance_variable_get(:@test_arg).to_s)
|
|
286
301
|
assert File.exist?(a1_cache_gem)
|
|
@@ -291,7 +306,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
291
306
|
|
|
292
307
|
inst = Gem::RemoteFetcher.fetcher
|
|
293
308
|
|
|
294
|
-
assert_equal @a1.cache_file, inst.download(@a1,
|
|
309
|
+
assert_equal @a1.cache_file, inst.download(@a1, "http://gems.example.com")
|
|
295
310
|
end
|
|
296
311
|
|
|
297
312
|
def test_download_local
|
|
@@ -307,7 +322,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
307
322
|
end
|
|
308
323
|
|
|
309
324
|
def test_download_local_space
|
|
310
|
-
space_path = File.join @tempdir,
|
|
325
|
+
space_path = File.join @tempdir, "space path"
|
|
311
326
|
FileUtils.mkdir space_path
|
|
312
327
|
FileUtils.mv @a1_gem, space_path
|
|
313
328
|
local_path = File.join space_path, @a1.file_name
|
|
@@ -321,17 +336,17 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
321
336
|
end
|
|
322
337
|
|
|
323
338
|
def test_download_install_dir
|
|
324
|
-
a1_data = File.open @a1_gem,
|
|
339
|
+
a1_data = File.open @a1_gem, "rb" do |fp|
|
|
325
340
|
fp.read
|
|
326
341
|
end
|
|
327
342
|
|
|
328
343
|
fetcher = util_fuck_with_fetcher a1_data
|
|
329
344
|
|
|
330
|
-
install_dir = File.join @tempdir,
|
|
345
|
+
install_dir = File.join @tempdir, "more_gems"
|
|
331
346
|
|
|
332
347
|
a1_cache_gem = File.join install_dir, "cache", @a1.file_name
|
|
333
348
|
FileUtils.mkdir_p(File.dirname(a1_cache_gem))
|
|
334
|
-
actual = fetcher.download(@a1,
|
|
349
|
+
actual = fetcher.download(@a1, "http://gems.example.com", install_dir)
|
|
335
350
|
|
|
336
351
|
assert_equal a1_cache_gem, actual
|
|
337
352
|
assert_equal("http://gems.example.com/gems/a-1.gem",
|
|
@@ -365,7 +380,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
365
380
|
FileUtils.chmod 0555, @gemhome
|
|
366
381
|
|
|
367
382
|
fetcher = util_fuck_with_fetcher File.read(@a1_gem)
|
|
368
|
-
fetcher.download(@a1,
|
|
383
|
+
fetcher.download(@a1, "http://gems.example.com")
|
|
369
384
|
a1_cache_gem = File.join Gem.user_dir, "cache", @a1.file_name
|
|
370
385
|
assert File.exist? a1_cache_gem
|
|
371
386
|
ensure
|
|
@@ -375,16 +390,16 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
375
390
|
end
|
|
376
391
|
|
|
377
392
|
def test_download_platform_legacy
|
|
378
|
-
original_platform =
|
|
393
|
+
original_platform = "old-platform"
|
|
379
394
|
|
|
380
|
-
e1, e1_gem = util_gem
|
|
395
|
+
e1, e1_gem = util_gem "e", "1" do |s|
|
|
381
396
|
s.platform = Gem::Platform::CURRENT
|
|
382
397
|
s.instance_variable_set :@original_platform, original_platform
|
|
383
398
|
end
|
|
384
|
-
e1.loaded_from = File.join(@gemhome,
|
|
399
|
+
e1.loaded_from = File.join(@gemhome, "specifications", e1.full_name)
|
|
385
400
|
|
|
386
401
|
e1_data = nil
|
|
387
|
-
File.open e1_gem,
|
|
402
|
+
File.open e1_gem, "rb" do |fp|
|
|
388
403
|
e1_data = fp.read
|
|
389
404
|
end
|
|
390
405
|
|
|
@@ -392,7 +407,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
392
407
|
|
|
393
408
|
e1_cache_gem = e1.cache_file
|
|
394
409
|
|
|
395
|
-
assert_equal e1_cache_gem, fetcher.download(e1,
|
|
410
|
+
assert_equal e1_cache_gem, fetcher.download(e1, "http://gems.example.com")
|
|
396
411
|
|
|
397
412
|
assert_equal("http://gems.example.com/gems/#{e1.original_name}.gem",
|
|
398
413
|
fetcher.instance_variable_get(:@test_arg).to_s)
|
|
@@ -420,14 +435,14 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
420
435
|
inst = Gem::RemoteFetcher.fetcher
|
|
421
436
|
|
|
422
437
|
e = assert_raise ArgumentError do
|
|
423
|
-
inst.download @a1,
|
|
438
|
+
inst.download @a1, "ftp://gems.rubyforge.org"
|
|
424
439
|
end
|
|
425
440
|
|
|
426
|
-
assert_equal
|
|
441
|
+
assert_equal "unsupported URI scheme ftp", e.message
|
|
427
442
|
end
|
|
428
443
|
|
|
429
444
|
def test_download_to_cache
|
|
430
|
-
@a2, @a2_gem = util_gem
|
|
445
|
+
@a2, @a2_gem = util_gem "a", "2"
|
|
431
446
|
|
|
432
447
|
util_setup_spec_fetcher @a1, @a2
|
|
433
448
|
@fetcher.instance_variable_set :@a1, @a1
|
|
@@ -443,7 +458,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
443
458
|
end
|
|
444
459
|
end
|
|
445
460
|
|
|
446
|
-
gem = Gem::RemoteFetcher.fetcher.download_to_cache dep
|
|
461
|
+
gem = Gem::RemoteFetcher.fetcher.download_to_cache dep "a"
|
|
447
462
|
|
|
448
463
|
assert_equal @a2.file_name, File.basename(gem)
|
|
449
464
|
end
|
|
@@ -453,10 +468,10 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
453
468
|
@fetcher = fetcher
|
|
454
469
|
|
|
455
470
|
def fetcher.fetch_http(uri, mtime, head = nil)
|
|
456
|
-
Gem::Util.gzip
|
|
471
|
+
Gem::Util.gzip "foo"
|
|
457
472
|
end
|
|
458
473
|
|
|
459
|
-
assert_equal
|
|
474
|
+
assert_equal "foo", fetcher.fetch_path(@uri + "foo.gz")
|
|
460
475
|
end
|
|
461
476
|
|
|
462
477
|
def test_fetch_path_gzip_unmodified
|
|
@@ -467,7 +482,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
467
482
|
nil
|
|
468
483
|
end
|
|
469
484
|
|
|
470
|
-
assert_nil fetcher.fetch_path(@uri +
|
|
485
|
+
assert_nil fetcher.fetch_path(@uri + "foo.gz", Time.at(0))
|
|
471
486
|
end
|
|
472
487
|
|
|
473
488
|
def test_fetch_path_io_error
|
|
@@ -478,7 +493,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
478
493
|
raise EOFError
|
|
479
494
|
end
|
|
480
495
|
|
|
481
|
-
url =
|
|
496
|
+
url = "http://example.com/uri"
|
|
482
497
|
|
|
483
498
|
e = assert_raise Gem::RemoteFetcher::FetchError do
|
|
484
499
|
fetcher.fetch_path url
|
|
@@ -496,7 +511,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
496
511
|
raise SocketError
|
|
497
512
|
end
|
|
498
513
|
|
|
499
|
-
url =
|
|
514
|
+
url = "http://example.com/uri"
|
|
500
515
|
|
|
501
516
|
e = assert_raise Gem::RemoteFetcher::FetchError do
|
|
502
517
|
fetcher.fetch_path url
|
|
@@ -511,10 +526,10 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
511
526
|
@fetcher = fetcher
|
|
512
527
|
|
|
513
528
|
def fetcher.fetch_http(uri, mtime = nil, head = nil)
|
|
514
|
-
raise Errno::ECONNREFUSED,
|
|
529
|
+
raise Errno::ECONNREFUSED, "connect(2)"
|
|
515
530
|
end
|
|
516
531
|
|
|
517
|
-
url =
|
|
532
|
+
url = "http://example.com/uri"
|
|
518
533
|
|
|
519
534
|
e = assert_raise Gem::RemoteFetcher::FetchError do
|
|
520
535
|
fetcher.fetch_path url
|
|
@@ -530,10 +545,10 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
530
545
|
@fetcher = fetcher
|
|
531
546
|
|
|
532
547
|
def fetcher.fetch_http(uri, mtime = nil, head = nil)
|
|
533
|
-
raise Timeout::Error,
|
|
548
|
+
raise Timeout::Error, "timed out"
|
|
534
549
|
end
|
|
535
550
|
|
|
536
|
-
url =
|
|
551
|
+
url = "http://example.com/uri"
|
|
537
552
|
|
|
538
553
|
e = assert_raise Gem::RemoteFetcher::FetchError do
|
|
539
554
|
fetcher.fetch_path url
|
|
@@ -549,10 +564,10 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
549
564
|
@fetcher = fetcher
|
|
550
565
|
|
|
551
566
|
def fetcher.fetch_http(uri, mtime = nil, head = nil)
|
|
552
|
-
raise SocketError,
|
|
567
|
+
raise SocketError, "getaddrinfo: nodename nor servname provided"
|
|
553
568
|
end
|
|
554
569
|
|
|
555
|
-
url =
|
|
570
|
+
url = "http://example.com/uri"
|
|
556
571
|
|
|
557
572
|
e = assert_raise Gem::RemoteFetcher::FetchError do
|
|
558
573
|
fetcher.fetch_path url
|
|
@@ -571,7 +586,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
571
586
|
raise OpenSSL::SSL::SSLError
|
|
572
587
|
end
|
|
573
588
|
|
|
574
|
-
url =
|
|
589
|
+
url = "http://example.com/uri"
|
|
575
590
|
|
|
576
591
|
e = assert_raise Gem::RemoteFetcher::FetchError do
|
|
577
592
|
fetcher.fetch_path url
|
|
@@ -594,7 +609,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
594
609
|
|
|
595
610
|
def test_implicit_no_proxy
|
|
596
611
|
use_ui @stub_ui do
|
|
597
|
-
ENV[
|
|
612
|
+
ENV["http_proxy"] = "http://fakeurl:12345"
|
|
598
613
|
fetcher = Gem::RemoteFetcher.new :no_proxy
|
|
599
614
|
@fetcher = fetcher
|
|
600
615
|
assert_data_from_server fetcher.fetch_path(@server_uri)
|
|
@@ -603,7 +618,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
603
618
|
|
|
604
619
|
def test_implicit_proxy
|
|
605
620
|
use_ui @stub_ui do
|
|
606
|
-
ENV[
|
|
621
|
+
ENV["http_proxy"] = @proxy_uri
|
|
607
622
|
fetcher = Gem::RemoteFetcher.new nil
|
|
608
623
|
@fetcher = fetcher
|
|
609
624
|
assert_data_from_proxy fetcher.fetch_path(@server_uri)
|
|
@@ -612,7 +627,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
612
627
|
|
|
613
628
|
def test_implicit_upper_case_proxy
|
|
614
629
|
use_ui @stub_ui do
|
|
615
|
-
ENV[
|
|
630
|
+
ENV["HTTP_PROXY"] = @proxy_uri
|
|
616
631
|
fetcher = Gem::RemoteFetcher.new nil
|
|
617
632
|
@fetcher = fetcher
|
|
618
633
|
assert_data_from_proxy fetcher.fetch_path(@server_uri)
|
|
@@ -630,36 +645,36 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
630
645
|
def test_fetch_http
|
|
631
646
|
fetcher = Gem::RemoteFetcher.new nil
|
|
632
647
|
@fetcher = fetcher
|
|
633
|
-
url =
|
|
648
|
+
url = "http://gems.example.com/redirect"
|
|
634
649
|
|
|
635
650
|
def fetcher.request(uri, request_class, last_modified = nil)
|
|
636
|
-
url =
|
|
651
|
+
url = "http://gems.example.com/redirect"
|
|
637
652
|
unless defined? @requested
|
|
638
653
|
@requested = true
|
|
639
654
|
res = Net::HTTPMovedPermanently.new nil, 301, nil
|
|
640
|
-
res.add_field
|
|
655
|
+
res.add_field "Location", url
|
|
641
656
|
res
|
|
642
657
|
else
|
|
643
658
|
res = Net::HTTPOK.new nil, 200, nil
|
|
644
|
-
def res.body()
|
|
659
|
+
def res.body() "real_path" end
|
|
645
660
|
res
|
|
646
661
|
end
|
|
647
662
|
end
|
|
648
663
|
|
|
649
664
|
data = fetcher.fetch_http URI.parse(url)
|
|
650
665
|
|
|
651
|
-
assert_equal
|
|
666
|
+
assert_equal "real_path", data
|
|
652
667
|
end
|
|
653
668
|
|
|
654
669
|
def test_fetch_http_redirects
|
|
655
670
|
fetcher = Gem::RemoteFetcher.new nil
|
|
656
671
|
@fetcher = fetcher
|
|
657
|
-
url =
|
|
672
|
+
url = "http://gems.example.com/redirect"
|
|
658
673
|
|
|
659
674
|
def fetcher.request(uri, request_class, last_modified = nil)
|
|
660
|
-
url =
|
|
675
|
+
url = "http://gems.example.com/redirect"
|
|
661
676
|
res = Net::HTTPMovedPermanently.new nil, 301, nil
|
|
662
|
-
res.add_field
|
|
677
|
+
res.add_field "Location", url
|
|
663
678
|
res
|
|
664
679
|
end
|
|
665
680
|
|
|
@@ -673,7 +688,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
673
688
|
def test_fetch_http_redirects_without_location
|
|
674
689
|
fetcher = Gem::RemoteFetcher.new nil
|
|
675
690
|
@fetcher = fetcher
|
|
676
|
-
url =
|
|
691
|
+
url = "http://gems.example.com/redirect"
|
|
677
692
|
|
|
678
693
|
def fetcher.request(uri, request_class, last_modified = nil)
|
|
679
694
|
res = Net::HTTPMovedPermanently.new nil, 301, nil
|
|
@@ -690,12 +705,12 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
690
705
|
def test_fetch_http_with_additional_headers
|
|
691
706
|
ENV["http_proxy"] = @proxy_uri
|
|
692
707
|
ENV["no_proxy"] = URI::parse(@server_uri).host
|
|
693
|
-
fetcher = Gem::RemoteFetcher.new nil, nil, {"X-Captain" => "murphy"}
|
|
708
|
+
fetcher = Gem::RemoteFetcher.new nil, nil, { "X-Captain" => "murphy" }
|
|
694
709
|
@fetcher = fetcher
|
|
695
710
|
assert_equal "murphy", fetcher.fetch_path(@server_uri)
|
|
696
711
|
end
|
|
697
712
|
|
|
698
|
-
def assert_fetch_s3(url, signature, token=nil, region=
|
|
713
|
+
def assert_fetch_s3(url, signature, token=nil, region="us-east-1", instance_profile_json=nil)
|
|
699
714
|
fetcher = Gem::RemoteFetcher.new nil
|
|
700
715
|
@fetcher = fetcher
|
|
701
716
|
$fetched_uri = nil
|
|
@@ -704,12 +719,12 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
704
719
|
def fetcher.request(uri, request_class, last_modified = nil)
|
|
705
720
|
$fetched_uri = uri
|
|
706
721
|
res = Net::HTTPOK.new nil, 200, nil
|
|
707
|
-
def res.body()
|
|
722
|
+
def res.body() "success" end
|
|
708
723
|
res
|
|
709
724
|
end
|
|
710
725
|
|
|
711
726
|
def fetcher.s3_uri_signer(uri)
|
|
712
|
-
require
|
|
727
|
+
require "json"
|
|
713
728
|
s3_uri_signer = Gem::S3URISigner.new(uri)
|
|
714
729
|
def s3_uri_signer.ec2_metadata_credentials_json
|
|
715
730
|
JSON.parse($instance_profile)
|
|
@@ -723,18 +738,18 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
723
738
|
data = fetcher.fetch_s3 URI.parse(url)
|
|
724
739
|
|
|
725
740
|
assert_equal "https://my-bucket.s3.#{region}.amazonaws.com/gems/specs.4.8.gz?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=testuser%2F20190624%2F#{region}%2Fs3%2Faws4_request&X-Amz-Date=20190624T050641Z&X-Amz-Expires=86400#{token ? "&X-Amz-Security-Token=" + token : ""}&X-Amz-SignedHeaders=host&X-Amz-Signature=#{signature}", $fetched_uri.to_s
|
|
726
|
-
assert_equal
|
|
741
|
+
assert_equal "success", data
|
|
727
742
|
ensure
|
|
728
743
|
$fetched_uri = nil
|
|
729
744
|
end
|
|
730
745
|
|
|
731
746
|
def test_fetch_s3_config_creds
|
|
732
747
|
Gem.configuration[:s3_source] = {
|
|
733
|
-
|
|
748
|
+
"my-bucket" => { :id => "testuser", :secret => "testpass" },
|
|
734
749
|
}
|
|
735
|
-
url =
|
|
750
|
+
url = "s3://my-bucket/gems/specs.4.8.gz"
|
|
736
751
|
Time.stub :now, Time.at(1561353581) do
|
|
737
|
-
assert_fetch_s3 url,
|
|
752
|
+
assert_fetch_s3 url, "20f974027db2f3cd6193565327a7c73457a138efb1a63ea248d185ce6827d41b"
|
|
738
753
|
end
|
|
739
754
|
ensure
|
|
740
755
|
Gem.configuration[:s3_source] = nil
|
|
@@ -742,11 +757,11 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
742
757
|
|
|
743
758
|
def test_fetch_s3_config_creds_with_region
|
|
744
759
|
Gem.configuration[:s3_source] = {
|
|
745
|
-
|
|
760
|
+
"my-bucket" => { :id => "testuser", :secret => "testpass", :region => "us-west-2" },
|
|
746
761
|
}
|
|
747
|
-
url =
|
|
762
|
+
url = "s3://my-bucket/gems/specs.4.8.gz"
|
|
748
763
|
Time.stub :now, Time.at(1561353581) do
|
|
749
|
-
assert_fetch_s3 url,
|
|
764
|
+
assert_fetch_s3 url, "4afc3010757f1fd143e769f1d1dabd406476a4fc7c120e9884fd02acbb8f26c9", nil, "us-west-2"
|
|
750
765
|
end
|
|
751
766
|
ensure
|
|
752
767
|
Gem.configuration[:s3_source] = nil
|
|
@@ -754,79 +769,79 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
754
769
|
|
|
755
770
|
def test_fetch_s3_config_creds_with_token
|
|
756
771
|
Gem.configuration[:s3_source] = {
|
|
757
|
-
|
|
772
|
+
"my-bucket" => { :id => "testuser", :secret => "testpass", :security_token => "testtoken" },
|
|
758
773
|
}
|
|
759
|
-
url =
|
|
774
|
+
url = "s3://my-bucket/gems/specs.4.8.gz"
|
|
760
775
|
Time.stub :now, Time.at(1561353581) do
|
|
761
|
-
assert_fetch_s3 url,
|
|
776
|
+
assert_fetch_s3 url, "935160a427ef97e7630f799232b8f208c4a4e49aad07d0540572a2ad5fe9f93c", "testtoken"
|
|
762
777
|
end
|
|
763
778
|
ensure
|
|
764
779
|
Gem.configuration[:s3_source] = nil
|
|
765
780
|
end
|
|
766
781
|
|
|
767
782
|
def test_fetch_s3_env_creds
|
|
768
|
-
ENV[
|
|
769
|
-
ENV[
|
|
770
|
-
ENV[
|
|
783
|
+
ENV["AWS_ACCESS_KEY_ID"] = "testuser"
|
|
784
|
+
ENV["AWS_SECRET_ACCESS_KEY"] = "testpass"
|
|
785
|
+
ENV["AWS_SESSION_TOKEN"] = nil
|
|
771
786
|
Gem.configuration[:s3_source] = {
|
|
772
|
-
|
|
787
|
+
"my-bucket" => { :provider => "env" },
|
|
773
788
|
}
|
|
774
|
-
url =
|
|
789
|
+
url = "s3://my-bucket/gems/specs.4.8.gz"
|
|
775
790
|
Time.stub :now, Time.at(1561353581) do
|
|
776
|
-
assert_fetch_s3 url,
|
|
791
|
+
assert_fetch_s3 url, "20f974027db2f3cd6193565327a7c73457a138efb1a63ea248d185ce6827d41b"
|
|
777
792
|
end
|
|
778
793
|
ensure
|
|
779
|
-
ENV.each_key {|key| ENV.delete(key) if key.start_with?(
|
|
794
|
+
ENV.each_key {|key| ENV.delete(key) if key.start_with?("AWS") }
|
|
780
795
|
Gem.configuration[:s3_source] = nil
|
|
781
796
|
end
|
|
782
797
|
|
|
783
798
|
def test_fetch_s3_env_creds_with_region
|
|
784
|
-
ENV[
|
|
785
|
-
ENV[
|
|
786
|
-
ENV[
|
|
799
|
+
ENV["AWS_ACCESS_KEY_ID"] = "testuser"
|
|
800
|
+
ENV["AWS_SECRET_ACCESS_KEY"] = "testpass"
|
|
801
|
+
ENV["AWS_SESSION_TOKEN"] = nil
|
|
787
802
|
Gem.configuration[:s3_source] = {
|
|
788
|
-
|
|
803
|
+
"my-bucket" => { :provider => "env", :region => "us-west-2" },
|
|
789
804
|
}
|
|
790
|
-
url =
|
|
805
|
+
url = "s3://my-bucket/gems/specs.4.8.gz"
|
|
791
806
|
Time.stub :now, Time.at(1561353581) do
|
|
792
|
-
assert_fetch_s3 url,
|
|
807
|
+
assert_fetch_s3 url, "4afc3010757f1fd143e769f1d1dabd406476a4fc7c120e9884fd02acbb8f26c9", nil, "us-west-2"
|
|
793
808
|
end
|
|
794
809
|
ensure
|
|
795
|
-
ENV.each_key {|key| ENV.delete(key) if key.start_with?(
|
|
810
|
+
ENV.each_key {|key| ENV.delete(key) if key.start_with?("AWS") }
|
|
796
811
|
Gem.configuration[:s3_source] = nil
|
|
797
812
|
end
|
|
798
813
|
|
|
799
814
|
def test_fetch_s3_env_creds_with_token
|
|
800
|
-
ENV[
|
|
801
|
-
ENV[
|
|
802
|
-
ENV[
|
|
815
|
+
ENV["AWS_ACCESS_KEY_ID"] = "testuser"
|
|
816
|
+
ENV["AWS_SECRET_ACCESS_KEY"] = "testpass"
|
|
817
|
+
ENV["AWS_SESSION_TOKEN"] = "testtoken"
|
|
803
818
|
Gem.configuration[:s3_source] = {
|
|
804
|
-
|
|
819
|
+
"my-bucket" => { :provider => "env" },
|
|
805
820
|
}
|
|
806
|
-
url =
|
|
821
|
+
url = "s3://my-bucket/gems/specs.4.8.gz"
|
|
807
822
|
Time.stub :now, Time.at(1561353581) do
|
|
808
|
-
assert_fetch_s3 url,
|
|
823
|
+
assert_fetch_s3 url, "935160a427ef97e7630f799232b8f208c4a4e49aad07d0540572a2ad5fe9f93c", "testtoken"
|
|
809
824
|
end
|
|
810
825
|
ensure
|
|
811
|
-
ENV.each_key {|key| ENV.delete(key) if key.start_with?(
|
|
826
|
+
ENV.each_key {|key| ENV.delete(key) if key.start_with?("AWS") }
|
|
812
827
|
Gem.configuration[:s3_source] = nil
|
|
813
828
|
end
|
|
814
829
|
|
|
815
830
|
def test_fetch_s3_url_creds
|
|
816
|
-
url =
|
|
831
|
+
url = "s3://testuser:testpass@my-bucket/gems/specs.4.8.gz"
|
|
817
832
|
Time.stub :now, Time.at(1561353581) do
|
|
818
|
-
assert_fetch_s3 url,
|
|
833
|
+
assert_fetch_s3 url, "20f974027db2f3cd6193565327a7c73457a138efb1a63ea248d185ce6827d41b"
|
|
819
834
|
end
|
|
820
835
|
end
|
|
821
836
|
|
|
822
837
|
def test_fetch_s3_instance_profile_creds
|
|
823
838
|
Gem.configuration[:s3_source] = {
|
|
824
|
-
|
|
839
|
+
"my-bucket" => { :provider => "instance_profile" },
|
|
825
840
|
}
|
|
826
841
|
|
|
827
|
-
url =
|
|
842
|
+
url = "s3://my-bucket/gems/specs.4.8.gz"
|
|
828
843
|
Time.stub :now, Time.at(1561353581) do
|
|
829
|
-
assert_fetch_s3 url,
|
|
844
|
+
assert_fetch_s3 url, "20f974027db2f3cd6193565327a7c73457a138efb1a63ea248d185ce6827d41b", nil, "us-east-1",
|
|
830
845
|
'{"AccessKeyId": "testuser", "SecretAccessKey": "testpass"}'
|
|
831
846
|
end
|
|
832
847
|
ensure
|
|
@@ -835,12 +850,12 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
835
850
|
|
|
836
851
|
def test_fetch_s3_instance_profile_creds_with_region
|
|
837
852
|
Gem.configuration[:s3_source] = {
|
|
838
|
-
|
|
853
|
+
"my-bucket" => { :provider => "instance_profile", :region => "us-west-2" },
|
|
839
854
|
}
|
|
840
855
|
|
|
841
|
-
url =
|
|
856
|
+
url = "s3://my-bucket/gems/specs.4.8.gz"
|
|
842
857
|
Time.stub :now, Time.at(1561353581) do
|
|
843
|
-
assert_fetch_s3 url,
|
|
858
|
+
assert_fetch_s3 url, "4afc3010757f1fd143e769f1d1dabd406476a4fc7c120e9884fd02acbb8f26c9", nil, "us-west-2",
|
|
844
859
|
'{"AccessKeyId": "testuser", "SecretAccessKey": "testpass"}'
|
|
845
860
|
end
|
|
846
861
|
ensure
|
|
@@ -849,12 +864,12 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
849
864
|
|
|
850
865
|
def test_fetch_s3_instance_profile_creds_with_token
|
|
851
866
|
Gem.configuration[:s3_source] = {
|
|
852
|
-
|
|
867
|
+
"my-bucket" => { :provider => "instance_profile" },
|
|
853
868
|
}
|
|
854
869
|
|
|
855
|
-
url =
|
|
870
|
+
url = "s3://my-bucket/gems/specs.4.8.gz"
|
|
856
871
|
Time.stub :now, Time.at(1561353581) do
|
|
857
|
-
assert_fetch_s3 url,
|
|
872
|
+
assert_fetch_s3 url, "935160a427ef97e7630f799232b8f208c4a4e49aad07d0540572a2ad5fe9f93c", "testtoken", "us-east-1",
|
|
858
873
|
'{"AccessKeyId": "testuser", "SecretAccessKey": "testpass", "Token": "testtoken"}'
|
|
859
874
|
end
|
|
860
875
|
ensure
|
|
@@ -873,35 +888,35 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
873
888
|
end
|
|
874
889
|
|
|
875
890
|
def test_fetch_s3_no_source_key
|
|
876
|
-
url =
|
|
877
|
-
refute_fetch_s3 url,
|
|
891
|
+
url = "s3://my-bucket/gems/specs.4.8.gz"
|
|
892
|
+
refute_fetch_s3 url, "no s3_source key exists in .gemrc"
|
|
878
893
|
end
|
|
879
894
|
|
|
880
895
|
def test_fetch_s3_no_host
|
|
881
896
|
Gem.configuration[:s3_source] = {
|
|
882
|
-
|
|
897
|
+
"my-bucket" => { :id => "testuser", :secret => "testpass" },
|
|
883
898
|
}
|
|
884
899
|
|
|
885
|
-
url =
|
|
886
|
-
refute_fetch_s3 url,
|
|
900
|
+
url = "s3://other-bucket/gems/specs.4.8.gz"
|
|
901
|
+
refute_fetch_s3 url, "no key for host other-bucket in s3_source in .gemrc"
|
|
887
902
|
ensure
|
|
888
903
|
Gem.configuration[:s3_source] = nil
|
|
889
904
|
end
|
|
890
905
|
|
|
891
906
|
def test_fetch_s3_no_id
|
|
892
|
-
Gem.configuration[:s3_source] = {
|
|
907
|
+
Gem.configuration[:s3_source] = { "my-bucket" => { :secret => "testpass" } }
|
|
893
908
|
|
|
894
|
-
url =
|
|
895
|
-
refute_fetch_s3 url,
|
|
909
|
+
url = "s3://my-bucket/gems/specs.4.8.gz"
|
|
910
|
+
refute_fetch_s3 url, "s3_source for my-bucket missing id or secret"
|
|
896
911
|
ensure
|
|
897
912
|
Gem.configuration[:s3_source] = nil
|
|
898
913
|
end
|
|
899
914
|
|
|
900
915
|
def test_fetch_s3_no_secret
|
|
901
|
-
Gem.configuration[:s3_source] = {
|
|
916
|
+
Gem.configuration[:s3_source] = { "my-bucket" => { :id => "testuser" } }
|
|
902
917
|
|
|
903
|
-
url =
|
|
904
|
-
refute_fetch_s3 url,
|
|
918
|
+
url = "s3://my-bucket/gems/specs.4.8.gz"
|
|
919
|
+
refute_fetch_s3 url, "s3_source for my-bucket missing id or secret"
|
|
905
920
|
ensure
|
|
906
921
|
Gem.configuration[:s3_source] = nil
|
|
907
922
|
end
|
|
@@ -931,7 +946,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
931
946
|
@fetcher = fetcher
|
|
932
947
|
|
|
933
948
|
assert_throws :block_called do
|
|
934
|
-
fetcher.request URI(
|
|
949
|
+
fetcher.request URI("http://example"), Net::HTTP::Get do |req|
|
|
935
950
|
assert_kind_of Net::HTTPGenericRequest, req
|
|
936
951
|
throw :block_called
|
|
937
952
|
end
|
|
@@ -949,7 +964,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
949
964
|
|
|
950
965
|
def test_ssl_connection
|
|
951
966
|
ssl_server = start_ssl_server
|
|
952
|
-
temp_ca_cert = File.join(__dir__,
|
|
967
|
+
temp_ca_cert = File.join(__dir__, "ca_cert.pem")
|
|
953
968
|
with_configured_fetcher(":ssl_ca_cert: #{temp_ca_cert}") do |fetcher|
|
|
954
969
|
fetcher.fetch_path("https://localhost:#{ssl_server.config[:Port]}/yaml")
|
|
955
970
|
end
|
|
@@ -958,10 +973,10 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
958
973
|
def test_ssl_client_cert_auth_connection
|
|
959
974
|
ssl_server = start_ssl_server({
|
|
960
975
|
:SSLVerifyClient =>
|
|
961
|
-
OpenSSL::SSL::VERIFY_PEER | OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT})
|
|
976
|
+
OpenSSL::SSL::VERIFY_PEER | OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT })
|
|
962
977
|
|
|
963
|
-
temp_ca_cert = File.join(__dir__,
|
|
964
|
-
temp_client_cert = File.join(__dir__,
|
|
978
|
+
temp_ca_cert = File.join(__dir__, "ca_cert.pem")
|
|
979
|
+
temp_client_cert = File.join(__dir__, "client.pem")
|
|
965
980
|
|
|
966
981
|
with_configured_fetcher(
|
|
967
982
|
":ssl_ca_cert: #{temp_ca_cert}\n" +
|
|
@@ -973,10 +988,10 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
973
988
|
def test_do_not_allow_invalid_client_cert_auth_connection
|
|
974
989
|
ssl_server = start_ssl_server({
|
|
975
990
|
:SSLVerifyClient =>
|
|
976
|
-
OpenSSL::SSL::VERIFY_PEER | OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT})
|
|
991
|
+
OpenSSL::SSL::VERIFY_PEER | OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT })
|
|
977
992
|
|
|
978
|
-
temp_ca_cert = File.join(__dir__,
|
|
979
|
-
temp_client_cert = File.join(__dir__,
|
|
993
|
+
temp_ca_cert = File.join(__dir__, "ca_cert.pem")
|
|
994
|
+
temp_client_cert = File.join(__dir__, "invalid_client.pem")
|
|
980
995
|
|
|
981
996
|
with_configured_fetcher(
|
|
982
997
|
":ssl_ca_cert: #{temp_ca_cert}\n" +
|
|
@@ -1005,7 +1020,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
1005
1020
|
|
|
1006
1021
|
def test_do_not_follow_insecure_redirect
|
|
1007
1022
|
ssl_server = start_ssl_server
|
|
1008
|
-
temp_ca_cert = File.join(__dir__,
|
|
1023
|
+
temp_ca_cert = File.join(__dir__, "ca_cert.pem")
|
|
1009
1024
|
expected_error_message =
|
|
1010
1025
|
"redirecting to non-https resource: #{@server_uri} (https://localhost:#{ssl_server.config[:Port]}/insecure_redirect?to=#{@server_uri})"
|
|
1011
1026
|
|
|
@@ -1031,8 +1046,8 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
1031
1046
|
|
|
1032
1047
|
def with_configured_fetcher(config_str = nil, &block)
|
|
1033
1048
|
if config_str
|
|
1034
|
-
temp_conf = File.join @tempdir,
|
|
1035
|
-
File.open temp_conf,
|
|
1049
|
+
temp_conf = File.join @tempdir, ".gemrc"
|
|
1050
|
+
File.open temp_conf, "w" do |fp|
|
|
1036
1051
|
fp.puts config_str
|
|
1037
1052
|
end
|
|
1038
1053
|
Gem.configuration = Gem::ConfigFile.new %W[--config-file #{temp_conf}]
|
|
@@ -1121,9 +1136,9 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
1121
1136
|
:Logger => null_logger,
|
|
1122
1137
|
:AccessLog => [],
|
|
1123
1138
|
:SSLEnable => true,
|
|
1124
|
-
:SSLCACertificateFile => File.join(__dir__,
|
|
1125
|
-
:SSLCertificate => cert(
|
|
1126
|
-
:SSLPrivateKey => key(
|
|
1139
|
+
:SSLCACertificateFile => File.join(__dir__, "ca_cert.pem"),
|
|
1140
|
+
:SSLCertificate => cert("ssl_cert.pem"),
|
|
1141
|
+
:SSLPrivateKey => key("ssl_key.pem"),
|
|
1127
1142
|
:SSLVerifyClient => nil,
|
|
1128
1143
|
:SSLCertName => nil,
|
|
1129
1144
|
}.merge(config))
|
|
@@ -1131,7 +1146,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
1131
1146
|
res.body = "--- true\n"
|
|
1132
1147
|
end
|
|
1133
1148
|
server.mount_proc("/insecure_redirect") do |req, res|
|
|
1134
|
-
res.set_redirect(WEBrick::HTTPStatus::MovedPermanently, req.query[
|
|
1149
|
+
res.set_redirect(WEBrick::HTTPStatus::MovedPermanently, req.query["to"])
|
|
1135
1150
|
end
|
|
1136
1151
|
server.ssl_context.tmp_dh_callback = proc { TEST_KEY_DH2048 }
|
|
1137
1152
|
t = Thread.new do
|
|
@@ -1159,10 +1174,10 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
1159
1174
|
def start_server(data)
|
|
1160
1175
|
null_logger = NilLog.new
|
|
1161
1176
|
s = WEBrick::HTTPServer.new(
|
|
1162
|
-
:Port
|
|
1163
|
-
:DocumentRoot
|
|
1164
|
-
:Logger
|
|
1165
|
-
:AccessLog
|
|
1177
|
+
:Port => 0,
|
|
1178
|
+
:DocumentRoot => nil,
|
|
1179
|
+
:Logger => null_logger,
|
|
1180
|
+
:AccessLog => null_logger
|
|
1166
1181
|
)
|
|
1167
1182
|
s.mount_proc("/kill") {|req, res| s.shutdown }
|
|
1168
1183
|
s.mount_proc("/yaml") do |req, res|
|
|
@@ -1170,22 +1185,22 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
|
1170
1185
|
res.body = req["X-Captain"]
|
|
1171
1186
|
elsif @enable_yaml
|
|
1172
1187
|
res.body = data
|
|
1173
|
-
res[
|
|
1174
|
-
res[
|
|
1188
|
+
res["Content-Type"] = "text/plain"
|
|
1189
|
+
res["content-length"] = data.size
|
|
1175
1190
|
else
|
|
1176
1191
|
res.status = "404"
|
|
1177
1192
|
res.body = "<h1>NOT FOUND</h1>"
|
|
1178
|
-
res[
|
|
1193
|
+
res["Content-Type"] = "text/html"
|
|
1179
1194
|
end
|
|
1180
1195
|
end
|
|
1181
1196
|
s.mount_proc("/yaml.Z") do |req, res|
|
|
1182
1197
|
if @enable_zip
|
|
1183
1198
|
res.body = Zlib::Deflate.deflate(data)
|
|
1184
|
-
res[
|
|
1199
|
+
res["Content-Type"] = "text/plain"
|
|
1185
1200
|
else
|
|
1186
1201
|
res.status = "404"
|
|
1187
1202
|
res.body = "<h1>NOT FOUND</h1>"
|
|
1188
|
-
res[
|
|
1203
|
+
res["Content-Type"] = "text/html"
|
|
1189
1204
|
end
|
|
1190
1205
|
end
|
|
1191
1206
|
th = Thread.new do
|